Make all portage access from one thread/process
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Portato |
Confirmed
|
Low
|
Unassigned |
Bug Description
Currently portato uses several threads to access portage. This won't work with its sqlite cache backend ... and isn't supported either.
<zmedico> Necoro: hmm, I guess you need to do all your portage api access in a single thread. it's never been thread safe.
Here is an sql exception:
Exception in thread "Show Updates Thread":
Traceback (most recent call last):
File "/usr/lib64/
Thread.
File "/usr/lib64/
self.
File "/usr/lib64/
packages.
File "/usr/lib64/
lambda: (x.get_cpv() for x in system.
File "/usr/lib64/
packages = self.get_
File "/usr/lib64/
inst = self.find_
File "/usr/lib64/
return self.geneticize
File "/usr/lib64/
return [self.new_
File "/usr/lib64/
return PortagePackage(cpv)
File "/usr/lib64/
self._status = portage.
File "/usr/lib64/
metadata = dict(zip(db_keys, portdb.
File "/usr/lib64/
mydata, st, emtime = self._pull_
File "/usr/lib64/
metadata = auxdb[cpv]
File "/usr/lib64/
d=self.
File "/usr/lib64/
self.
ProgrammingError: SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 139805472351984 and this is thread id 139805080684816
Portato version: 0.14_alpha (git: 9f720636bbe5db2
System: Gentoo
Python version: 2.6.4 (r264:75706, Mar 10 2010, 03:10:05)
[GCC 4.3.4]
Used backend: Portage 2.1.8.3
Used database type: sql
pygtk: 2.16.0 (using GTK+: 2.18.7)
pygobject: 2.18.0 (using GLib: 2.22.4)
Changed in portato: | |
importance: | Undecided → Low |
status: | New → Confirmed |
For the moment, sqlite backend of portage will make portato bail out in master and 0.14