[yum-commits] Branch 'yum-3_2_X' - yum/rpmsack.py
skvidal at osuosl.org
skvidal at osuosl.org
Tue Feb 17 20:54:01 UTC 2009
yum/rpmsack.py | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
New commits:
commit adb07924792a968a18e60c4f7147aeedcf20803e
Author: Seth Vidal <skvidal at fedoraproject.org>
Date: Tue Feb 17 15:52:44 2009 -0500
add auto_close option (defaulting to false) for access to the rpmdb/ts.
diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 31ae142..c9a6d81 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -96,6 +96,9 @@ class RPMDBPackageSack(PackageSackBase):
self._get_pro_cache = {}
self._get_req_cache = {}
self.ts = None
+ self.auto_close = False # this forces a self.ts.close() after
+ # most operations so it doesn't leave
+ # any lingering locks.
self._cache = {
'provides' : { },
@@ -135,6 +138,8 @@ class RPMDBPackageSack(PackageSackBase):
def readOnlyTS(self):
if not self.ts:
self.ts = initReadOnlyTransaction(root=self.root)
+ if not self.ts.open:
+ self.ts = initReadOnlyTransaction(root=self.root)
return self.ts
def buildIndexes(self):
@@ -168,6 +173,9 @@ class RPMDBPackageSack(PackageSackBase):
if not result.has_key(pkg.pkgid):
result[pkg.pkgid] = pkg
+ if self.auto_close:
+ self.ts.close()
+
return result.values()
def searchFiles(self, name):
@@ -184,6 +192,10 @@ class RPMDBPackageSack(PackageSackBase):
del mi
result = result.values()
+
+ if self.auto_close:
+ self.ts.close()
+
return result
def searchPrco(self, name, prcotype):
@@ -209,6 +221,10 @@ class RPMDBPackageSack(PackageSackBase):
result = result.values()
self._cache[prcotype][name] = result
+
+ if self.auto_close:
+ self.ts.close()
+
return result
def searchProvides(self, name):
@@ -363,6 +379,9 @@ class RPMDBPackageSack(PackageSackBase):
if hdr['name'] != 'gpg-pubkey':
yield (hdr, mi.instance())
del mi
+ if self.auto_close:
+ self.ts.close()
+
def _header_from_index(self, idx):
"""returns a package header having been given an index"""
@@ -382,6 +401,9 @@ class RPMDBPackageSack(PackageSackBase):
del hdr
del mi
+ if self.auto_close:
+ self.ts.close()
+
def _search(self, name=None, epoch=None, ver=None, rel=None, arch=None):
'''Generator that yields matching packages
@@ -422,6 +444,10 @@ class RPMDBPackageSack(PackageSackBase):
break
else:
ret.append(po)
+
+ if self.auto_close:
+ self.ts.close()
+
return ret
def _makePackageObject(self, hdr, index):
More information about the Yum-commits
mailing list