Commit Graph

10901 Commits

Author SHA1 Message Date
Fabio Erculiani
a0d4711cdc [entropy.client.package.actions] remove: commit after insertSpmUid() 2013-12-07 20:30:06 +01:00
Fabio Erculiani
6d4f9e3089 [entropy.client.package.actions] install: commit after insertSpmUid() 2013-12-07 20:30:06 +01:00
Fabio Erculiani
529203ce5a [RigoDaemon] maybe_enqueue_kernel_actions: use simulate 2013-12-07 20:30:06 +01:00
Fabio Erculiani
4f9d8ef61d [RigoDaemon] fixup pylint warnings 2013-12-07 20:30:06 +01:00
Fabio Erculiani
b26842e826 [entropy.db] direct: wrap yield around a try/finally block 2013-12-07 20:30:06 +01:00
Fabio Erculiani
c356d615f3 [Rigo] use direct access to the installed packages repository, avoid locking
Locking is too expensive, and using memory cached data may result
in huge inconsistencies due to stale data. Direct mode allows to
skip memory cache and read data directly from the database storage.
However, entropy.db.sqlite queries using memory caches did not
perform very well when cache is cold. But this has been solved by
directed() already (a different query is run if memory cache is disabled).
2013-12-07 20:30:06 +01:00
Fabio Erculiani
3545f2b619 [entropy.db] add direct access support to repository
In latency sensitive code paths, the performance penality caused
by file lock contention and memory cache invalidation is too high.
This problem happens in Rigo, which is extremely latency sensitive.
Since we don't want to crap on the user, a way to solve this is
letting API consumers skip the memory cache and read data directly
from the database store. The trade off is that data may be stale,
incomplete, or invalid, but as long as the consumer is aware of this,
that's fine.
2013-12-07 20:30:06 +01:00
Fabio Erculiani
1739953f8d [Rigo] add installed pkgs repository wherever it makes sense
In latency sensitive code paths, it's much better to deal with
stale and invalid data rather than causing long delays.
2013-12-07 20:30:06 +01:00
Fabio Erculiani
94e07648ec [RigoDaemon] add concurrency support \o/ 2013-12-07 20:30:06 +01:00
Fabio Erculiani
f8d0511506 [entropy.client.package.actions] multifetch: fix pre_download_hook for edeltas 2013-12-07 20:30:06 +01:00
Fabio Erculiani
d88e33c40c [RigoDaemon] use context manager with ReadersWritersSemaphore 2013-12-07 20:30:06 +01:00
Fabio Erculiani
65f5dce076 [entropy.client.package] add sys import 2013-12-07 20:30:06 +01:00
Fabio Erculiani
a8c98a5081 [entropy.client.package.actions] action: cope with unavailability of file locking
Some filesystems, especially old network file systems, don't support
file locking. Try not to explode if this is the case but rather nag
the user with scary error messages.
2013-12-07 20:30:06 +01:00
Fabio Erculiani
76df355ca4 [solo.commands.pkg] add concurrency support 2013-12-07 20:30:06 +01:00
Fabio Erculiani
53b5d9cddc [solo.commands.unused] add concurrency support 2013-12-07 20:30:06 +01:00
Fabio Erculiani
e0142412d8 [solo.commands.mask] acquire the Entropy Resources Lock in shared mode 2013-12-07 20:30:06 +01:00
Fabio Erculiani
25d88d95b6 [solo.commands.conf] acquire the Entropy Resources Lock in shared mode 2013-12-07 20:30:06 +01:00
Fabio Erculiani
9298c740fe [solo.commands.ugc] acquire the Entropy Resources Lock in shared mode 2013-12-07 20:30:06 +01:00
Fabio Erculiani
ecb0914084 [Rigo] add "in:exact" command to allow users to match packages, use it for lts kernels 2013-12-07 20:30:06 +01:00
Fabio Erculiani
b7eeb5ce8a [Rigo] use context manager with Entropy.rwsem() 2013-12-07 20:30:06 +01:00
Fabio Erculiani
7378906396 [entropy.misc] ReadersWritersSemaphore: add reader() and writer() context managers 2013-12-07 20:29:20 +01:00
Fabio Erculiani
68f5fd0320 [entropy.client] Trigger: lazily load the Source Package Manager instance object 2013-12-07 20:29:20 +01:00
Fabio Erculiani
6af6a2115e [entropy.client] move Trigger class under package.actions, make it "private" 2013-12-07 20:29:20 +01:00
Fabio Erculiani
c8a0377845 [solo.commands.cache] add concurrency support 2013-12-07 20:29:20 +01:00
Fabio Erculiani
818f96fdf7 [entropy.db.sqlite] increase sqlite3 internal lock timeout to 60 seconds 2013-12-07 20:29:20 +01:00
Fabio Erculiani
8c73f9b24c [matter] lazily load the Entropy Server instance object 2013-12-07 20:29:19 +01:00
Fabio Erculiani
b886d7e3fc [matter] use Server class with acquire_entropy_locks 2013-12-07 20:29:19 +01:00
Fabio Erculiani
0725612508 [kernel-switcher] use Client class with acquire_entropy_locks 2013-12-07 20:29:19 +01:00
Fabio Erculiani
6e81d188c3 [kernel-switcher] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
a8fcfd7b15 [kswitch] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
e7555f4127 [solo.commands.manage] allow concurrency, use the Entropy Resources Lock in shared mode 2013-12-07 20:29:19 +01:00
Fabio Erculiani
9c38af6a34 [entropy.security] document installed repository lock usage requirements
entropy.Security will undergo a complete overhaul in the next months.
2013-12-07 20:29:19 +01:00
Fabio Erculiani
19439db61c [solo.commands.security] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
13af91c7ba [solo.commands.libtest] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
e317a71524 [solo.commands.deptest] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
f4a25af5d0 [solo.commands.upgrade] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
5dfcdb2794 [solo.commands.remove] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
3e97a39779 [solo.commands.preservedlibs] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
008b65d11b [solo.commands.download] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
55d1b8aa8f [solo.commands.source] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
7046aedc52 [solo.commands.config] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
53a1b117ae [entropy.client.package] preservedlibs: update API documentation 2013-12-07 20:29:19 +01:00
Fabio Erculiani
ac0e1ca28e [solo.commands._manage] make _show_preserved_libraries process and thread safe 2013-12-07 20:29:19 +01:00
Fabio Erculiani
24993db8bb [solo.commands.remove] remove _prompt_removal(), old heritage 2013-12-07 20:29:19 +01:00
Fabio Erculiani
87ef9a169d [solo.commands.install] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
72069d4227 [solo.commands._manage] remove _show_packages_info(), old heritage 2013-12-07 20:29:19 +01:00
Fabio Erculiani
1c7b684aa4 [entropy.client.misc] make ConfigurationFiles process and thread safe wrt inst_repo 2013-12-07 20:29:19 +01:00
Fabio Erculiani
2393f5dda2 [entropy.client] update API documentation with information regarding repository locking 2013-12-07 20:29:19 +01:00
Fabio Erculiani
5094085916 [solo.commands.query] add concurrency support 2013-12-07 20:29:19 +01:00
Fabio Erculiani
fc686c9c09 [solo.commands.match] use the sharedlock decorator 2013-12-07 20:29:19 +01:00