Commit Graph

11059 Commits

Author SHA1 Message Date
Fabio Erculiani d461ffa02f [entropy.core.settings.base] introduce packages_configuration_hash()
This method serves the purpose of returning a hash of the current
packages configuration (masking, unmasking, keywording, etc).
This will be used by upper layers as part of cache keys generation.
2013-12-27 17:22:49 +01:00
Fabio Erculiani 1f75376b8e [entropy.cache] drop EntropyCacher.CACHE_IDS['db_match']
This is no longer needed.
2013-12-27 16:44:19 +01:00
Fabio Erculiani dabdb9dff9 Tagging Entropy version 256 256 2013-12-26 23:05:39 +01:00
Fabio Erculiani 6c9ffc0e59 Release Entropy 256 2013-12-26 23:05:39 +01:00
Fabio Erculiani ccf10bb416 [todo] update TODO 2013-12-26 22:56:30 +01:00
Fabio Erculiani cc9c663954 [Rigo] update translations 2013-12-26 22:55:25 +01:00
Fabio Erculiani 57b672043c [Rigo] update rigo.pot 2013-12-26 22:54:59 +01:00
Fabio Erculiani 08c635623d [server] update translations 2013-12-26 22:54:42 +01:00
Fabio Erculiani 84fb3a948d [server] update entropy-server.pot 2013-12-26 22:54:11 +01:00
Fabio Erculiani d4af59b609 [client] update translations 2013-12-26 22:53:40 +01:00
Fabio Erculiani 6048d06fca [client] update entropy.pot 2013-12-26 22:52:48 +01:00
Fabio Erculiani 2a034e4a05 [entropy.client.methods] add an "unlocked" version of get_package_action() 2013-12-26 22:52:13 +01:00
Fabio Erculiani 11e6d596b8 [entropy.db.sqlite] do not clear the cache if locks are already acquired 2013-12-26 22:52:13 +01:00
Fabio Erculiani 603c96fc05 [entropy.locks] add is_already_acquired()
This method returns whether the lock has been already acquired.
It is useful in cases where the reentrancy property is leveraged.
2013-12-26 22:52:13 +01:00
Fabio Erculiani 0dcfc0f5bc [todo] update TODO 2013-12-26 22:52:13 +01:00
Fabio Erculiani d0d4b45e73 [todo] update TODO 2013-12-26 22:52:13 +01:00
Fabio Erculiani 528d4ff116 [entropy.client.dep] drop unused imports 2013-12-26 22:52:13 +01:00
Fabio Erculiani 6b3e5810fc [entropy.client.settings] drop repos_installed{_keys,} settings metadata
Load the related data ondemand whenever it is needed, save SystemSettings
load time and avoid problems with stale information.
2013-12-26 22:52:13 +01:00
Fabio Erculiani 4da9953a71 [entropy.cache] drop EntropyCacher.CACHE_IDS['atom_match'] 2013-12-26 22:52:13 +01:00
Fabio Erculiani be311e7045 [entropy.cache] drop EntropyCacher.CACHE_IDS['atom_search'] 2013-12-26 22:52:13 +01:00
Fabio Erculiani 0f59b909c9 [entropy.cache] drop EntropyCacher.CACHE_IDS['dep_tree'] 2013-12-26 22:52:13 +01:00
Fabio Erculiani 55faf98b59 [entropy.cache] drop EntropyCacher.CACHE_IDS['check_package_update'] 2013-12-26 22:52:13 +01:00
Fabio Erculiani 6121ab63bc [entropy.cache] drop EntropyCacher.CACHE_IDS['depends_tree'] 2013-12-26 22:52:13 +01:00
Fabio Erculiani 3bb2abc102 [entropy.cache] drop EntropyCacher.CACHE_IDS['library_breakage'] 2013-12-26 22:52:13 +01:00
Fabio Erculiani cbe52e67ce [entropy.cache] drop EntropyCacher.CACHE_IDS['filter_satisfied_deps'] 2013-12-26 22:52:12 +01:00
Fabio Erculiani 3fb6905387 [entropy.cache] drop EntropyCacher.CACHE_IDS['world_update'] 2013-12-26 22:52:12 +01:00
Fabio Erculiani 57e2ab5ec8 [entropy.core] when clearing repository cache, don't clear the whole cache
This is no longer needed since cache keys are now properly generated
2013-12-26 22:52:12 +01:00
Fabio Erculiani 4c0bbd0789 [entropy.client.cache] drop methods used by the dep module only 2013-12-26 22:52:12 +01:00
Fabio Erculiani cd199b0496 [entropy.client.dep] fix format string typo 2013-12-26 22:52:12 +01:00
Fabio Erculiani a8bdb9a4ea [entropy.cache] drop EntropyCacher.CACHE_IDS['critical_update'] 2013-12-26 22:52:12 +01:00
Fabio Erculiani 034061620c [entropy.cache] drop EntropyCacher.CACHE_IDS['world_masked'] 2013-12-26 22:52:12 +01:00
Fabio Erculiani 01e54a75b9 [entropy.cache] drop EntropyCacher.CACHE_IDS['world_available'] 2013-12-26 22:52:12 +01:00
Fabio Erculiani 55f5d892aa [entropy.client.settings] add installed packages repository locking support 2013-12-26 22:52:12 +01:00
Fabio Erculiani e976ea337c [entropy.client.methods] add installed packages repository locking support 2013-12-26 22:52:12 +01:00
Fabio Erculiani b4f445a61b [entropy.client.repository] drop entropy_updates_alert argument
This is no longer useful for the implemented use cases
2013-12-26 22:52:12 +01:00
Fabio Erculiani cf3305ed43 [entropy.client.repository] do not check the instance type of installed_repository
This check is no longer needed
2013-12-26 22:52:12 +01:00
Fabio Erculiani d2c47cc3ba [entropy.client.db] add installed packages repository locking support 2013-12-26 22:52:12 +01:00
Fabio Erculiani 12c34ab8d4 [entropy.client.dep] add installed packages repository locking support 2013-12-26 22:52:12 +01:00
Fabio Erculiani f143614555 [entropy.client.client] add installed packages repository locking support 2013-12-26 22:52:12 +01:00
Fabio Erculiani f5efd44cc2 [RigoDaemon] acquire UpdatesNotificationResourceLock in non blocking mode
We cannot sleep with the activity mutex held without affecting
parallelism so badly. Otoh, we cannot wleep on UpdatesNotificationResourceLock
without affecting 3rd party clients in a way that we would starve them
for a while. So, try to acquire the file lock in non blocking mode
and if it fails, reschedule a new call as soon as the same lock is
freed (exclusive acquire succeeds). This assumes that if the lock
is held back, we will just re-do the whole trick again and again.
2013-12-26 22:52:12 +01:00
Fabio Erculiani f1a925c220 [solo.commands.install] acquire the notification lock in shared NB mode
This should avoid starvation in the scenario outlined in code comments.
2013-12-26 22:52:12 +01:00
Fabio Erculiani ec198d632b [RigoDaemon] make sure that the serializer is always released
Even in case of exceptions.
2013-12-26 22:52:12 +01:00
Fabio Erculiani bccbce4a34 [RigoDaemon] use UpdatesNotificationResourceLock to avoid signal spam
If this resource lock is acquired, block until the lock is released
so that we will not keep sending status updates to the connected clients
2013-12-26 22:52:12 +01:00
Fabio Erculiani 00f43b043c [solo.commands.install] acquire the UpdatesNotificationResourceLock in shared mode
This will temporarily disable available updates notifications from
RigoDaemon
2013-12-26 22:52:12 +01:00
Fabio Erculiani 6f44f5c40a [entropy.locks] UpdatesNotificationResourceLock: do not dictate any particular lock mode 2013-12-26 22:52:12 +01:00
Fabio Erculiani 934a7ce14b [RigoDaemon] drop sleep()
With the new locking strategy, this is no longer necessary
2013-12-26 22:52:12 +01:00
Fabio Erculiani 69d4473249 [entropy.locks] introduce UpdatesNotificationResourceLock
This will make possible to stop available updates notifications
from being issued while an install/upgrade is in progress
2013-12-26 22:52:12 +01:00
Fabio Erculiani 8049f88c56 [entropy.locks] make sure not to leak fds when using non-blocking calls 2013-12-26 22:52:12 +01:00
Fabio Erculiani ca862463d4 [entropy.locks] make sure not to leak fds when using non-blocking calls 2013-12-26 22:52:12 +01:00
Fabio Erculiani cf8984982a [entropy.output] sychronize writes to stdout/stderr to avoid garbled output
In a multithreaded scenario, text may get garbled if there is no
synchronization between threads wrt the shared resources (std{out,err}).
This happens even when stdio buffering is enabled, of course.
2013-12-26 22:52:12 +01:00