Commit Graph

1181 Commits

Author SHA1 Message Date
Fabio Erculiani 67cccf3e8a [entropy.client] lazy load ClientSystemSettingsPlugin 2013-12-12 17:13:19 +01:00
Fabio Erculiani 8a7afe97e8 [entropy.client] use ClientSettings() whenever needed
This commit also drops the sys_settings_client_plugin_id attribute
2013-12-12 16:49:01 +01:00
Fabio Erculiani 56f0ed4fd5 [entropy.client] Client: move object attributes to @property to enable lazy loading 2013-12-12 15:05:02 +01:00
Fabio Erculiani 3a7269aa5c [entropy.db] EntropyBaseRepository: turn lock methods into no-op if direct mode
Now that the repository lock is reentrant, it's good to have the
methods take into account direct mode as well. In direct mode,
we explicitly don't want to deal with any kind of locking, because
we accept to manipulate stale data. In order to hide locking code
from the outside and have it transparently managed inside entropy.*
methods, we must respect requests made in direct mode.
2013-12-12 14:25:44 +01:00
Fabio Erculiani 412759e20f Release Entropy 251 2013-12-12 12:38:28 +01:00
Fabio Erculiani db8bd0fb40 [entropy.client.package] multifetch: ensure that path exists before calling _match_checksum 2013-12-12 12:36:45 +01:00
Fabio Erculiani 4b8b3b1af7 [entropy.client.package] multifetch: use the same path for both calls 2013-12-12 12:36:03 +01:00
Fabio Erculiani 864e3ecf21 [entropy.client.package] multifetch: fix exit status in case of download failures 2013-12-12 12:30:25 +01:00
Fabio Erculiani 36b634aea7 [entropy.output] _print_prio: use nice unicode header chars :-) 2013-12-12 11:56:04 +01:00
Fabio Erculiani e21d564669 Release Entropy 250 2013-12-12 10:50:15 +01:00
Fabio Erculiani d04f67c96f [entropy.db.sqlite] fix typo in argument name 2013-12-12 10:41:21 +01:00
Fabio Erculiani 023e8e1b72 [entropy.db] EntropyBaseRepository: make possible to permanently enable direct mode 2013-12-12 10:21:27 +01:00
Fabio Erculiani af2ce34d57 Release Entropy 249 2013-12-11 22:44:44 +01:00
Fabio Erculiani 856184b530 [entropy.client.db] do not hide the exception traceback 2013-12-11 22:43:02 +01:00
Fabio Erculiani 0243ed70b1 [entropy.db.sql] rewrite type checking in insertDependencies()
metadata could be of list type (and not just tuple) in case of
data coming from websrv.
2013-12-11 22:42:14 +01:00
Fabio Erculiani eada088f56 [entropy.client.db] do not catch KeyError for update() but just during object init 2013-12-11 22:19:40 +01:00
Fabio Erculiani 43f4bd5ee3 Release Entropy 248 2013-12-11 16:39:02 +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 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 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 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 b26842e826 [entropy.db] direct: wrap yield around a try/finally block 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 f8d0511506 [entropy.client.package.actions] multifetch: fix pre_download_hook for edeltas 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