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