Commit Graph

8992 Commits

Author SHA1 Message Date
Fabio Erculiani
0cfbd6a3bc [todo] update TODO 2012-03-30 18:06:45 +02:00
Fabio Erculiani
fe5e723d8a [Rigo] implement License management code for System Upgrade activity 2012-03-30 18:05:54 +02:00
Fabio Erculiani
e35b225d26 [Rigo/RigoDaemon] implement basic support to System Upgrade 2012-03-30 17:15:56 +02:00
Fabio Erculiani
34ee151d9a [Rigo/RigoDaemon] implement Application removal support 2012-03-30 07:13:25 +02:00
Fabio Erculiani
154d038b7f [todo] update TODO 2012-03-29 19:44:35 +02:00
Fabio Erculiani
e6b24784ba [Rigo] notify user about apps being removed due to conflict 2012-03-29 19:43:14 +02:00
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