Commit Graph

8986 Commits

Author SHA1 Message Date
Fabio Erculiani b62e46abfc [Rigo] fixup several undefined references (thanks pylint)
Did I mention I hate Python?
2012-03-29 19:42:29 +02:00
Fabio Erculiani b928757e57 [todo] update TODO 2012-03-29 19:08:36 +02:00
Fabio Erculiani 96842e5043 [RigoDaemon] always write debug messages to stdout 2012-03-29 19:08:16 +02:00
Fabio Erculiani 1084359821 [entropy.const] const_debug_write: make posible to write to arbitrary files 2012-03-29 19:07:23 +02:00
Fabio Erculiani 3c5f2bf8b6 [Rigo/RigoDaemon] move authentication in RigoDaemon's security domain 2012-03-29 18:57:27 +02:00
Fabio Erculiani 892a2d5eae [Rigo] during App management, show the remaining enqueue actions 2012-03-29 13:51:11 +02:00
Fabio Erculiani 59b0aae5b1 [Rigo/RigoDaemon] complete initial application install implementation 2012-03-29 13:33:31 +02:00
Fabio Erculiani ada9d15f68 [Rigo] if --dumper is passed, test main thread health status before dumping threads state 2012-03-28 23:35:32 +02:00
Fabio Erculiani 1dcff4ce0a [entropy.client.interfaces.package] better handle download when network is unavailable
When network is unavailable, the package file fetch function returns an error
whilst the file itself has been completely and successfully downloaded already.
With this commit it is ensured that the event is correctly handled.
2012-03-28 23:21:31 +02:00
Fabio Erculiani e25ebbb59e [entropy.const] dump_signal: print stack variables if extended=True 2012-03-28 23:14:43 +02:00
Fabio Erculiani 0e3b18be2f [entropy.client] only setup differential download when edelta support is available 2012-03-28 18:24:49 +02:00
Fabio Erculiani 940b99b656 [entropy.client] trivial code style update 2012-03-28 18:23:54 +02:00
Fabio Erculiani 1b7ad171df [todo] update TODO 2012-03-27 19:25:35 +02:00
Fabio Erculiani f07e53c597 [RigoDaemon] implement stdout and stderr redirection to Rigo 2012-03-27 19:24:21 +02:00
Fabio Erculiani 3ee2e5cd56 [todo] update TODO 2012-03-27 18:27:45 +02:00
Fabio Erculiani da1a55a57f [Rigo] add app removal simulation cheatcode 2012-03-27 18:27:23 +02:00
Fabio Erculiani b58d1164c1 [todo] update TODO 2012-03-27 18:16:42 +02:00
Fabio Erculiani 0c506f5164 [RigoDaemon/Rigo] first chunk of App management code (install action only, incomplete) 2012-03-27 18:15:11 +02:00
Fabio Erculiani 4c954a9194 [entropy.client] _lock_resource: always increase lock reference count
Entropy Resouce Locks are reentrant, thus reference counted on lock()
and unlock() operations. For this reason, the counter must be increased
on every lock() request. This did not happen if the lock was already
held by the process with the unwanted effect of improperly releasing it.
This caused the "Calculating dependencies" glitch on each package
transaction.
2012-03-26 14:03:43 +02:00
Fabio Erculiani a20d8da868 [Rigo] ask for exit confirmation when there is local activity 2012-03-26 13:46:12 +02:00
Fabio Erculiani c659d4cbb4 [Rigo] dump threads every 30 seconds if --dumper is passed 2012-03-26 10:11:58 +02:00
Fabio Erculiani ee25f790af [Rigo/RigoDaemon] implement transaction state update notifications 2012-03-26 10:00:29 +02:00
Fabio Erculiani 72def71a07 [Rigo/RigoDaemon] implement Application License management 2012-03-25 18:02:54 +02:00
Fabio Erculiani ac8358772e [RigoDaemon] transaction_finished(): return AppTransactionOutcome struct 2012-03-25 11:02:04 +02:00
Fabio Erculiani 794e3a9134 [todo] update TODO 2012-03-24 20:15:07 +01:00
Fabio Erculiani abdb7dc53f [RigoDaemon] add reload() Dbus method
reload() is going to be used during RigoDaemon package
upgrade to kindly ask the Dbus service to reload itself as soon as
no more clients are connected.
2012-03-24 20:12:29 +01:00
Fabio Erculiani a3d82ff44f [RigoDaemon] expose daemon API version to Rigo 2012-03-24 19:53:08 +01:00
Fabio Erculiani f2f58e8616 [Rigo] list Application dependencies in App View 2012-03-24 17:30:46 +01:00
Fabio Erculiani 228e0a7da1 [entropy.db] add EntropyRepository.retrieveRuntimeDependencies() 2012-03-24 17:29:41 +01:00
Fabio Erculiani d1965b71ac [Rigo] show installed Application version if available 2012-03-24 16:35:12 +01:00
Fabio Erculiani 47b9570224 [Rigo] implement centralized Application transaction state 2012-03-24 16:07:39 +01:00
Fabio Erculiani dd46c23b20 [entropy.spm] PortagePlugin.add_installed_package: make sure to always run os.utime 2012-03-23 10:35:47 +01:00
Fabio Erculiani 99b20257a4 [entropy.client] handle _repodb_cache atomically
This prevents close_repositories() and _open_repository()
to concurrently mess with _repodb_cache, which is a dict, thus
not thread-safe.
2012-03-23 10:14:06 +01:00
Fabio Erculiani 115988a08c [entropy.client,entropy.server] drop __del__(), can be racey 2012-03-23 10:13:01 +01:00
Fabio Erculiani d465bb56e2 [entropy.db] EntropyRepository: use RLock() to handle connection pooling
This is much safer than being fault tolerant and shouldn't have any
tangible impact on performance
2012-03-23 10:07:48 +01:00
Fabio Erculiani af525fb0ea [Rigo] Entropy API: enforce the new singleton class 2012-03-23 10:04:49 +01:00
Fabio Erculiani ef28caff3b [RigoDaemon] reduce fake app management time 2012-03-23 10:03:51 +01:00
Fabio Erculiani 5bdaad7257 [Rigo] Application.get_extended_markup: fix typo in rwsem management
This could potentially cause Segmentation faults
2012-03-23 10:02:26 +01:00
Fabio Erculiani b093f24fbb [Rigo] enforce AppTreeView redraw whenever App state changes 2012-03-22 19:36:02 +01:00
Fabio Erculiani 6bce9168f0 [Rigo] call AppTreeView.clear_model() rather than model.clear()
This lets the view to reset its state accordingly to an empty model.
2012-03-22 19:35:14 +01:00
Fabio Erculiani 92e42ca3aa [entropy.db*] EntropyRepository, do not close() on object destruction
Closing the underlying sqlite3 db on object destruction (__del__())
causes funny race conditions when concurrently accessing the object
itself.

When the Garbage Collector tries to free memory, which can happen
when no more references pointing to self are used, by calling __del__()
(which called close()) it is possible to run into troubles if another
thread is inside a method of the same object holding a valid sqlite cursor.

Moreover, no external arbitration is possible if the garbage collection
gets in the middle and calls close() through the destructor on behalf
of a poor random innocent thread.

Solution is simple, destructor is evil and resource leaks have to be
handled where they actually are. Bye bye __del__().
2012-03-22 19:09:24 +01:00
Fabio Erculiani 6d0c2d93a8 [Rigo] wrap a dedicated rwsem around any EntropyRepository call
The ReadersWritersSemaphore object protects concurrent access
on EntropyRepository objects ensuring that they don't get closed
by RigoServiceController while in use.
2012-03-22 16:50:15 +01:00
Fabio Erculiani 30041ee0f2 [Rigo] implement App Install transaction validation checks and application-abort signaling 2012-03-22 08:40:31 +01:00
Fabio Erculiani b6c71301d6 [Rigo] NotificationBox: enable message text wrap 2012-03-22 08:39:32 +01:00
Fabio Erculiani 14023c39d1 [Rigo] add Application.is_installable() 2012-03-22 08:39:13 +01:00
Fabio Erculiani 539476d3a3 [Rigo] add package set search support via "@setname" 2012-03-22 08:20:54 +01:00
Fabio Erculiani 48c74e2db1 [Rigo] add Search Bar completion code, but keep it disabled due to Gtk3 bug 2012-03-21 23:41:28 +01:00
Fabio Erculiani 332b8ffe03 [Rigo] handle Application processing in AppTreeView widgets 2012-03-20 21:43:47 +01:00
Fabio Erculiani 53ec387cd5 [Rigo] AppTreeView: drop weirdo code from Software Center 2012-03-20 20:55:32 +01:00
Fabio Erculiani 196036ebd7 [Rigo] several App Install UI improvements 2012-03-20 19:44:09 +01:00