Commit Graph

470 Commits

Author SHA1 Message Date
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 934a7ce14b [RigoDaemon] drop sleep()
With the new locking strategy, this is no longer necessary
2013-12-26 22:52:12 +01:00
Fabio Erculiani c22f4121f6 [RigoDaemon] use ClientSettings() rather than SystemSettings()[id] 2013-12-12 19:22:42 +01:00
Fabio Erculiani 29c1eba9a6 [Rigo] expand NotificationBox content area horizontally. This fix is needed by Gtk+ 3.10 2013-12-11 16:37:53 +01:00
Fabio Erculiani cc9c35fd81 [Rigo] update translations 2013-12-11 16:23:45 +01:00
Fabio Erculiani fa786cce39 [Rigo] update translations 2013-12-11 15:21:42 +01:00
Fabio Erculiani ebf63e6060 [entropy.locks] fix shared/exclusive locking mix due to reentrancy, add tests 2013-12-08 16:15:39 +01:00
Fabio Erculiani 358c6cc80c [entropy.client.repository] drop unlocked_sync(), locking happens externally nowadays 2013-12-08 14:42:23 +01:00
Fabio Erculiani 1917771b54 [entropy.locks] move Entropy Resources Lock code to a separate module 2013-12-08 14:37:57 +01:00
Fabio Erculiani 99bb796952 [Rigo] initialize the CSS provider as soon as possible, fixes a glitch with GTK 3.10 2013-12-08 07:37:20 +01:00
Fabio Erculiani c0776b07bd [RigoDaemon] import the threading module directly 2013-12-08 06:17:15 +01:00
Fabio Erculiani 0f32ae2696 [RigoDaemon] use systemd-logind shutdown/idle Inhibit() API
Inhibit shutdown or idling (see systemd documentation) during
application management or repository update phases.
2013-12-08 06:13:38 +01:00
Fabio Erculiani d8ee468768 [RigoDaemon] add execute_mainloop() wrapper method 2013-12-08 06:13:11 +01:00
Fabio Erculiani e213a5e775 [RigoDaemon] fix regression in api(), the keyword argument must be "sender" 2013-12-07 20:30:07 +01:00
Fabio Erculiani 4e597b8769 [RigoDaemon] use a shared lock with clean_package_cache 2013-12-07 20:30:07 +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 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 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 d88e33c40c [RigoDaemon] use context manager with ReadersWritersSemaphore 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 7b0d41e50f [Rigo] add "in:exact" command to allow users to match packages, use it for lts kernels
Conflicts:
	rigo/rigo/ui/gtk3/controllers/applications.py
2013-12-06 16:15:05 +01:00
Fabio Erculiani 0bf9ab5d82 [Rigo] document the installed repository lazy load requirement 2013-12-05 23:19:17 +01:00
Fabio Erculiani 82b85704ce [entropy.output] make TextInterface methods classmethods
This makes possible to fix a circular dependency in the Entropy
Resources Lock management methods
2013-12-05 21:36:30 +01:00
Fabio Erculiani 7fc8ad14ad [RigoDaemon] add debug output on _authorize callback method 2013-11-29 11:57:57 +01:00
Fabio Erculiani 3d1c79c299 [Rigo] update translations 2013-11-29 11:37:42 +01:00
Fabio Erculiani 0ce4687212 [Rigo] update rigo.pot 2013-11-29 11:37:15 +01:00
Fabio Erculiani f68ddef4ae [Rigo] add support for basic preserved libraries notification 2013-11-29 11:36:47 +01:00
Fabio Erculiani ae9707d39e [Rigo] make possible to toggle the VteTerminal scroll-on-output mode 2013-11-29 11:05:15 +01:00
Fabio Erculiani 04048b8818 [RigoDaemon] signal preserved libraries through preserved_libraries_available() 2013-11-29 10:48:50 +01:00
Fabio Erculiani 52791086d5 [Rigo] derive Shape from object, avoid python warning 2013-11-28 21:03:31 +01:00
Fabio Erculiani 41e0cf576b [RigoDaemon] migrate to the new PackageActionFactory API 2013-11-23 14:14:48 +01:00
Fabio Erculiani 8c5a499e58 [RigoDaemon] set the default terminal (${TERM}) if unset
This prevents portage phases printing weird things about missing ${TERM}
2013-11-21 21:48:07 +01:00
Fabio Erculiani 3431755aaf [RigoDaemon] do not trigger kernel-switcher if kernel is already installed 2013-11-13 15:36:32 +01:00
Fabio Erculiani 42ab0c38a1 [RigoDaemon] use KernelSwitcher.list() rather than reimplementing the same logic 2013-11-13 13:17:14 +01:00
Fabio Erculiani e93eb24728 [RigoDaemon] implement transparent kernel-switcher support 2013-11-13 13:14:17 +01:00
Fabio Erculiani 5e523521ef [Rigo] use kswitch to get the kernel binary package names 2013-11-13 11:46:18 +01:00
Fabio Erculiani 1938f9e439 [Rigo] update rigo.pot 2013-11-13 10:10:55 +01:00
Fabio Erculiani fb25f279f4 [Rigo] add preferences menu to show available kernel binaries (both LTS and not) 2013-11-13 10:08:30 +01:00
Fabio Erculiani 718b03f5cc [Rigo] add author bday check 2013-11-13 09:47:50 +01:00
Fabio Erculiani fd835e2c45 [Rigo] update translations 2013-11-08 22:03:17 +01:00
Fabio Erculiani a323563b22 [RigoDaemon] add "system_restart_needed" signaling 2013-11-05 11:17:32 +01:00
Fabio Erculiani bc0e366884 [Rigo] update translations 2013-11-03 15:48:08 +01:00
Fabio Erculiani fc3dc5181a [Rigo] update translations and config 2013-11-03 15:47:21 +01:00
Fabio Erculiani b71ede2b25 [RigoDaemon] implement support for fetch_abort_function
This makes possible to immediately interrupt the download process
2013-11-03 15:39:43 +01:00