Blob Blame Raw
diff --git a/yum/__init__.py b/yum/__init__.py
index 6378cdc..cc57e98 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -427,6 +427,9 @@ class YumBase(depsolve.Depsolve):
 
     def closeRpmDB(self):
         """closes down the instances of the rpmdb we have wangling around"""
+        if self._rpmdb is not None:
+            self._rpmdb.ts = None
+            self._rpmdb.dropCachedData()
         self._rpmdb = None
         self._ts = None
         self._tsInfo = None
@@ -1008,6 +1011,7 @@ class YumBase(depsolve.Depsolve):
         # for any kind of install add from_repo to the yumdb, and the cmdline
         # and the install reason
 
+        self.rpmdb.dropCachedData()
         for txmbr in self.tsInfo:
             if txmbr.output_state in TS_INSTALL_STATES:
                 if not self.rpmdb.contains(po=txmbr.po):
@@ -1037,7 +1041,7 @@ class YumBase(depsolve.Depsolve):
             else:
                 self.verbose_logger.log(logginglevels.DEBUG_2, 'What is this? %s' % txmbr.po)
 
-
+        self.rpmdb.dropCachedData()
 
     def costExcludePackages(self):
         """exclude packages if they have an identical package in another repo

diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 5189b18..8556e9a 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -140,7 +140,10 @@ class RPMDBPackageSack(PackageSackBase):
         self._simple_pkgtup_list = []
         self._get_pro_cache = {}
         self._get_req_cache = {}
-        misc.unshare_data()
+        #  We can be called on python shutdown (due to yb.__del__), at which
+        # point other modules might not be available.
+        if misc is not None:
+            misc.unshare_data()
         self._cache = {
             'provides' : { },
             'requires' : { },