diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-03-26 16:25:15 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-03-26 16:25:15 -0700 |
commit | dfc5e174bdbcb21a16c5d5bb464ea4fc43b456a5 (patch) | |
tree | d336e83de68f7f062f72eb491bf0e88bd9266eff | |
parent | 7ab1280c237d7c83fcc2227259f7b52a06445525 (diff) | |
download | portage-dfc5e174bdbcb21a16c5d5bb464ea4fc43b456a5.tar.gz portage-dfc5e174bdbcb21a16c5d5bb464ea4fc43b456a5.tar.bz2 portage-dfc5e174bdbcb21a16c5d5bb464ea4fc43b456a5.zip |
MergeProcess: query blockers in the main process
Metadata cache queries may not work for some databases from within a
subprocess. For example, sqlite is known to misbehave.
-rw-r--r-- | pym/portage/dbapi/_MergeProcess.py | 8 | ||||
-rw-r--r-- | pym/portage/dbapi/vartree.py | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/pym/portage/dbapi/_MergeProcess.py b/pym/portage/dbapi/_MergeProcess.py index 43111cb16..ea7c3e6d6 100644 --- a/pym/portage/dbapi/_MergeProcess.py +++ b/pym/portage/dbapi/_MergeProcess.py @@ -114,9 +114,15 @@ class MergeProcess(SpawnProcess): elog_reader_fd, elog_writer_fd = os.pipe() fcntl.fcntl(elog_reader_fd, fcntl.F_SETFL, fcntl.fcntl(elog_reader_fd, fcntl.F_GETFL) | os.O_NONBLOCK) + blockers = None + if self.blockers is not None: + # Query blockers in the main process, since metadata cache + # queries may not work for some databases from within a + # subprocess. For example, sqlite is known to misbehave. + blockers = self.blockers() mylink = self.dblink(self.mycat, self.mypkg, settings=self.settings, treetype=self.treetype, vartree=self.vartree, - blockers=self.blockers, scheduler=self.scheduler, + blockers=blockers, scheduler=self.scheduler, pipe=elog_writer_fd) fd_pipes[elog_writer_fd] = elog_writer_fd self._elog_reg_id = self.scheduler.register(elog_reader_fd, diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 4be783ddd..45b5a6983 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -3076,9 +3076,7 @@ class dblink(object): return 1 # check for package collisions - blockers = None - if self._blockers is not None: - blockers = self._blockers() + blockers = self._blockers if blockers is None: blockers = [] collisions, plib_collisions = \ |