Commit Graph

10944 Commits

Author SHA1 Message Date
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 592f6e9279 [server] update translations 2013-12-11 16:25:02 +01:00
Fabio Erculiani 8284141f64 [client] update translations 2013-12-11 16:24:46 +01:00
Fabio Erculiani cc9c35fd81 [Rigo] update translations 2013-12-11 16:23:45 +01:00
Fabio Erculiani 041cf66875 Merge branch 'brave-new-lock' 2013-12-11 15:52:56 +01:00
Fabio Erculiani 4bf19be3bf [server] update translations 2013-12-11 15:22:01 +01:00
Fabio Erculiani bd253f3dab [client] update translations 2013-12-11 15:21:53 +01:00
Fabio Erculiani fa786cce39 [Rigo] update translations 2013-12-11 15:21:42 +01:00
Fabio Erculiani 68fe99d33e [entropy.db.sqlite] acquire an exclusive lock if schema updates are needed
_maybeDatabaseSchemaUpdates is only called inside the costructor,
at that time, it's not possible to acquire the lock elsewhere
because the object doesn't exist yet.
2013-12-11 07:49:04 +01:00
Fabio Erculiani 061b02bebc [entropy.db.sqlite] move indexing setup back to object constructor
This has nothing to do with schema update
2013-12-11 07:43:50 +01:00
Fabio Erculiani 023dc52368 [todo] update TODO 2013-12-10 22:30:22 +01:00
Fabio Erculiani c67e227b48 [todo] update TODO 2013-12-10 22:27:05 +01:00
Fabio Erculiani de88d6cc73 [entropy.client.repository] wrap Repository.sync() around a ResourceLock 2013-12-10 22:22:41 +01:00
Fabio Erculiani 82d6d37bcf [entropy.db.sqlite] move schema update code away from __init__ 2013-12-10 21:58:19 +01:00
Fabio Erculiani 7808ad6b92 [entropy.db.sqlite] migrate locking code to entropy.locks.ResourceLock
The new EntropySQLiteRepository uses ResourceLock, and gains support
for reentrancy, anti-deadlock safety measures (only for nested calls),
unification of memory and file repositories locking code (the semantics
was already the same).
2013-12-10 21:42:34 +01:00
Fabio Erculiani 401b9cbeb3 [entropy.client.loaders] Security: pass args and kwargs down to the object constructor 2013-12-10 16:42:34 +01:00
Fabio Erculiani 498674828d [entropy.tools] get_hash_from_md5_file: do not hide IOError exceptions 2013-12-10 16:39:55 +01:00
Fabio Erculiani fc597d04c5 [entropy.security] refactor System, add internal locking support, improve speed 2013-12-10 16:39:17 +01:00
Fabio Erculiani b99def9128 [entropy.locks] add exclusive() and shared() context managers 2013-12-10 11:22:42 +01:00
Fabio Erculiani 47e9b6ee0e [entropy.locks] rename _GenericResourceLock to ResourceLock 2013-12-10 05:39:59 +01:00
Fabio Erculiani 94ab49fd0b [tests] use const_mk{s,d}temp instead of tmpfile ones, default TMPDIR to /var/tmp 2013-12-09 14:36:34 +01:00
Fabio Erculiani 6a2d45df47 [entropy.locks] set recursed to False only when the reference counter is 0 2013-12-09 14:24:37 +01:00
Fabio Erculiani d080db0d3b [tests] locks: fix test class name 2013-12-09 14:21:05 +01:00
Fabio Erculiani bf3a8b79f9 [entropy.locks] use TLS for reentrancy safety checks, update tests 2013-12-09 14:19:21 +01:00
Fabio Erculiani 7e30b65744 [entropy.locks] _file_lock_create: beautify, open O_CREAT | O_RDONLY if shared mode 2013-12-08 16:33:29 +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 97f18338ba [entropy.locks] move acquire_lock(), release_lock() from entropy.tools 2013-12-08 14:54:42 +01:00
Fabio Erculiani d0f11728c8 [entropy.security] remove unlocked_sync(), locking happens externally nowadays 2013-12-08 14:46:05 +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 f758c1bfb5 [Rigo] initialize the CSS provider as soon as possible, fixes a glitch with GTK 3.10 2013-12-08 07:38:00 +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 b1ed42d80a [entropy.db.skel] drop __atomMatchValidateCache
SHA1 is used nowadays and all the caching bugs should be fixed
rather than being hidden.
2013-12-08 06:28:08 +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 1688ce53ac [entropy.client] clean_downloaded_packages, add skip_available_packages keyword arg
skip_available_packages can be used to filter out the removal of
package tarballs still belonging to available packages. This makes
possible to just use a shared Entropy Resources lock.
2013-12-07 20:30:07 +01:00
Fabio Erculiani 16025afc75 [entropy.client.package] move "QA:" to translatable strings 2013-12-07 20:30:07 +01:00
Fabio Erculiani e75b95a1b3 [entropy.client.package] workout_subdir: do not rmtree if symlink expected but directory found 2013-12-07 20:30:06 +01:00
Fabio Erculiani e6cca25473 [entropy.client.package] fail (rather than rmtree) when a file is expected but directory is found 2013-12-07 20:30:06 +01:00
Fabio Erculiani 0d486bc470 [entropy.client.package] if a directory is a file, do not unlink() but rename() 2013-12-07 20:30:06 +01:00
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