Commit Graph

25 Commits

Author SHA1 Message Date
Fabio Erculiani
d1fa09ffb4 [entropy.*] remove etpUi imports 2012-11-06 21:24:41 +01:00
Fabio Erculiani
0deb4464e7 [entropy.const] kill etpUi['mute'] 2012-11-06 21:16:16 +01:00
Fabio Erculiani
2512df68ad [lib/] drop etpUi['debug'] 2012-11-06 20:13:49 +01:00
Fabio Erculiani
df3c27deac [entropy*] drop etpUi usage where possible 2012-11-04 22:36:54 +01:00
Fabio Erculiani
6ddc4c2f14 [tests] fix Entropy Client tests (add affected_infofiles metadata) 2012-09-08 20:11:23 +02:00
Fabio Erculiani
796e71e9ac [repo] migrate shebangs to /usr/bin/python 2012-08-18 16:53:32 +02:00
Fabio Erculiani
1b10177640 [entropy.db.sql] major cursor and connection pooling rework
The original idea was to avoid doing cursor and connection resources
cleanup (left by old and dead threads) synchronously every time
_connection() and/or _cursor() is accessed. This strategy also had
a huge drawback: with no activity on the object, resources were
left hanging there forever.

This commit introduces a better strategy for transparent and automatic
cleanup of resources belonging to terminated threads: every time a new
thread_id arrives at _cursor() or _connection(), a new daemon thread
starts and synchronizes with the caller through a simple Thread.join()
(because it's a daemon thread, we can join() daemon threads as well,
even if this is not really compliant with the specs, but it seems to work
just fine in Python).
When the caller thread is joined, it is possible to start the resources
cleanup procedure, carefully taking into account that thread_ids are
recycled and thus there might be clashing with newly created threads.

This helped a design issue to emerge from the sand (like a zombie
at the seaside): it is impossible to cleanup resources left by the
MainThread because this thread never ends living, and if it dies,
everything dies, obviously. So, the first implementation of this new
strategy was NOT touching the MainThread resources but then, the old
behaviour was to kill them as well on EntropyRepository.close().
So, the final version of this patch kept the old buggy behaviour of
touching MainThread stuff (nein, nein, nein, nein would Hitler say).
However, a new keyword argument "safe" has been added to the close()
method so it is possible to start migrating code to the dark side of the
power.

This means nothing really changed for API consumers yet, just entropy.db.sql
code being more efficient (no weird for loops and synchronous crap)
and actually faster (multi-threading ftw).
2012-08-15 20:59:45 +02:00
Fabio Erculiani
27a51598a0 [entropy.db] move most of the standard SQL code to entropy.db.sql 2012-08-11 21:58:41 +02:00
Fabio Erculiani
90400c4ade [tests/db] drop SCHEMA_2010 related code 2012-08-10 14:05:05 +02:00
Fabio Erculiani
23847b99eb [tests/server] directly import EntropyRepositoryCacher from entropy.db.cache 2012-08-10 11:38:55 +02:00
Fabio Erculiani
7058db3f0a [entropy.client] simplify content_file Trigger code by passing pre-made metadata 2012-07-28 10:40:29 +02:00
Fabio Erculiani
9c06a380f5 [entropy.client] use retrieveContentIter during Package install 2012-07-27 23:26:19 +02:00
Fabio Erculiani
abb9e515ad [tests] fix EntropyCacher test 2012-07-27 22:30:07 +02:00
Fabio Erculiani
90458f80b6 [entropy.client.services,Rigo] add support for the new get_documents() WS API
The new WebService get_documents() is more efficient in terms of
server resources consumption since it doesn't force the WS engine
to calculate the full result set length, which had little use anyway
in Rigo.
This commit switches entropy.client.services' DocumentList to and
reverse dependencies to use the new WS API. The older WS API will be
kept alive for a while (6 months, roughly).
2012-07-25 22:30:38 +02:00
Fabio Erculiani
b8976f4c0c [entropy.db] EntropyRepository: expose connection and cursor pools
This commit makes possible for subclasses to reimplement the
connection and cursor pool logic.
2012-07-07 13:29:29 +02:00
Fabio Erculiani
8f0c37323a [entropy.spm] PortagePlugin: introduce conditional deps support
Introduce Entropy conditional dependencies supoort if
ETP_PORTAGE_CONDITIONAL_DEPS_ENABLE is set in the environment.
This feature is disabled by default because it braks backward
compatibility and older Entropy Clients are broken wrt this.
2012-04-15 12:24:20 +02:00
Fabio Erculiani
cdf6be90be [tests] Spm: add PortageEntropyDepTranslator tests 2012-04-14 17:49:18 +02:00
Fabio Erculiani
7c2c9437bb [entropy.misc] add FlockFile class
The purpose of this class is to implement a file-based lock,
abstracting away from fcntl.
2012-02-15 19:36:28 +01:00
Fabio Erculiani
4d343233dc [entropy.*] drop usage of another_entropy_running(), wait_resources() or similar methods should be used 2011-11-12 16:10:33 +01:00
Fabio Erculiani
890de38fe2 [tests] spm: fix test_dependencies_calculation() test 2011-10-30 21:07:06 +01:00
Fabio Erculiani
2c97897cfd [tests] ignore outcome of remove_repository() since that is a temp repo 2011-10-27 00:39:08 +02:00
Fabio Erculiani
de47e0de3d [tests] ignore outcome of remove_repository() since that is a temp repo 2011-10-27 00:36:44 +02:00
Fabio Erculiani
85238b8de5 [entropy.*] add support for /etc/entropy/repositories.conf.d/ 2011-10-27 00:07:44 +02:00
Fabio Erculiani
a16ef24829 [tests] server: remove repository in tearDown() 2011-10-25 22:52:28 +02:00
Fabio Erculiani
69a0bb87e0 [entropy] move libraries/ to lib/ 2011-10-17 14:27:58 +02:00