[yum-commits] Branch 'yum-3_2_X' - 4 commits - cli.py output.py test/yum-leak-test.py yum/__init__.py yum/plugins.py yum/repos.py

James Antill james at osuosl.org
Wed Feb 4 18:22:03 UTC 2009


 cli.py                |   11 +++++++----
 output.py             |    2 ++
 test/yum-leak-test.py |   11 +++++++++++
 yum/__init__.py       |    8 +++++---
 yum/plugins.py        |   11 +++++++----
 yum/repos.py          |    9 ++++++++-
 6 files changed, 40 insertions(+), 12 deletions(-)

New commits:
commit bf276cc6369a5d97113950ba7a10df1ea3e47032
Author: James Antill <james at and.org>
Date:   Wed Feb 4 13:20:54 2009 -0500

    Fix circular reference due to bound YumBase instance method

diff --git a/yum/repos.py b/yum/repos.py
index c4c2449..694fd93 100644
--- a/yum/repos.py
+++ b/yum/repos.py
@@ -43,9 +43,16 @@ class RepoStorage:
         # callbacks for handling gpg key imports for repomd.xml sig checks
         # need to be set from outside of the repos object to do anything
         # even quasi-useful
-        self.gpg_import_func = self.ayum.getKeyForRepo # defaults to what is probably sane-ish
+        # defaults to what is probably sane-ish
+        self.gpg_import_func = self._wrap_ayum_getKeyForRepo
         self.confirm_func = None
 
+    def _wrap_ayum_getKeyForRepo(repo, callback=None):
+        """ This is a wrapper for calling self.ayum.getKeyForRepo() because
+            otherwise we take a real reference through the bound method and
+            that is d00m. """
+        return self.ayum.getKeyForRepo(repo, callback)
+
     def doSetup(self, thisrepo = None):
         
         self.ayum.plugins.run('prereposetup')
commit a59c4d9aee210f52b83760687bcef53a7c61a680
Author: James Antill <james at and.org>
Date:   Wed Feb 4 13:20:10 2009 -0500

    Add test for leaking YumBase objects

diff --git a/test/yum-leak-test.py b/test/yum-leak-test.py
new file mode 100755
index 0000000..f3d6de3
--- /dev/null
+++ b/test/yum-leak-test.py
@@ -0,0 +1,11 @@
+#! /usr/bin/python -tt
+
+import yum, os, sys, time, gc
+
+while True:
+    yb = yum.YumBase()
+    yb.repos.setCacheDir(yum.misc.getCacheDir())
+    yb.rpmdb.returnPackages()
+    yb.pkgSack.returnPackages()
+    time.sleep(4)
+    # print "DBG:", gc.get_referrers(yb)
commit 7f82b5e2f1b2a59538b165756e0f5497a7ddfebd
Author: James Antill <james at and.org>
Date:   Wed Feb 4 10:30:02 2009 -0500

    Move some output out of -v, -d 6 to -d 7

diff --git a/cli.py b/cli.py
index 99aaafd..ca0ca34 100644
--- a/cli.py
+++ b/cli.py
@@ -253,8 +253,10 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
         base command + argument makes any sense at all""" 
 
         self.verbose_logger.debug('Yum Version: %s', yum.__version__)
-        self.verbose_logger.debug('COMMAND: %s', self.cmdstring)
-        self.verbose_logger.debug('Installroot: %s', self.conf.installroot)
+        self.verbose_logger.log(yum.logginglevels.DEBUG_4,
+                                'COMMAND: %s', self.cmdstring)
+        self.verbose_logger.log(yum.logginglevels.DEBUG_4,
+                                'Installroot: %s', self.conf.installroot)
         if len(self.conf.commands) == 0 and len(self.cmds) < 1:
             self.cmds = self.conf.commands
         else:
@@ -268,9 +270,10 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
         self.extcmds = self.cmds[1:] # out extended arguments/commands
         
         if len(self.extcmds) > 0:
-            self.verbose_logger.debug('Ext Commands:\n')
+            self.verbose_logger.log(yum.logginglevels.DEBUG_4,
+                                    'Ext Commands:\n')
             for arg in self.extcmds:
-                self.verbose_logger.debug('   %s', arg)
+                self.verbose_logger.log(yum.logginglevels.DEBUG_4, '   %s', arg)
         
         if not self.yum_cli_commands.has_key(self.basecmd):
             self.usage()
diff --git a/yum/__init__.py b/yum/__init__.py
index 5de0ba2..9334f98 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -402,7 +402,8 @@ class YumBase(depsolve.Depsolve):
 
         if self._rpmdb is None:
             rpmdb_st = time.time()
-            self.verbose_logger.debug(_('Reading Local RPMDB'))
+            self.verbose_logger.log(logginglevels.DEBUG_4,
+                                    _('Reading Local RPMDB'))
             self._rpmdb = rpmsack.RPMDBPackageSack(root=self.conf.installroot)
             self.verbose_logger.debug('rpmdb time: %0.3f' % (time.time() - rpmdb_st))
         return self._rpmdb
@@ -573,7 +574,8 @@ class YumBase(depsolve.Depsolve):
             return self._comps
 
         group_st = time.time()            
-        self.verbose_logger.debug(_('Getting group metadata'))
+        self.verbose_logger.log(logginglevels.DEBUG_4,
+                                _('Getting group metadata'))
         reposWithGroups = []
         self.repos.doSetup()
         for repo in self.repos.listGroupsEnabled():
@@ -598,7 +600,7 @@ class YumBase(depsolve.Depsolve):
             if repo.groups_added: # already added the groups from this repo
                 continue
                 
-            self.verbose_logger.log(logginglevels.DEBUG_1,
+            self.verbose_logger.log(logginglevels.DEBUG_4,
                 _('Adding group file from repository: %s'), repo)
             groupfile = repo.getGroups()
             # open it up as a file object so iterparse can cope with our gz file
diff --git a/yum/plugins.py b/yum/plugins.py
index 6d7c529..cfc8bd6 100644
--- a/yum/plugins.py
+++ b/yum/plugins.py
@@ -171,8 +171,9 @@ class YumPlugins:
         conduitcls = eval(conduitcls)       # Convert name to class object
 
         for modname, func in self._pluginfuncs[slotname]:
-            self.verbose_logger.debug('Running "%s" handler for "%s" plugin', slotname,
-                modname)
+            self.verbose_logger.log(logginglevels.DEBUG_4,
+                                    'Running "%s" handler for "%s" plugin',
+                                    slotname, modname)
     
             _, conf = self._plugins[modname]
             func(conduitcls(self, self.base, conf, **kwargs))
@@ -196,7 +197,9 @@ class YumPlugins:
             for modulefile in sorted(glob.glob('%s/*.py' % dir)):
                 self._loadplugin(modulefile, types)
 
-        if self._plugins:
+        # If we are in verbose mode we get the full 'Loading "blah" plugin' lines
+        if (self._plugins and
+            not self.verbose_logger.isEnabledFor(logginglevels.DEBUG_3)):
             # Mostly copied from YumOutput._outKeyValFill()
             key = _("Loaded plugins: ")
             val = ", ".join(sorted(self._plugins))
@@ -248,7 +251,7 @@ class YumPlugins:
                                   config.BoolOption(False)) and
              not self._plugin_cmdline_match(modname, self.enabledPlugins,
                                             self._used_enable_plugin))):
-            self.verbose_logger.debug(_('"%s" plugin is disabled'), modname)
+            self.verbose_logger.debug(_('Not loading "%s" plugin, as it is disabled'), modname)
             return
 
         try:
commit 2febff6fc8ae1ac76634082d4e93bd29925f16fb
Author: James Antill <james at and.org>
Date:   Wed Feb 4 10:14:55 2009 -0500

    Show groupid in verbose mode of groupinfo

diff --git a/output.py b/output.py
index 7a2c6a1..a582fd1 100755
--- a/output.py
+++ b/output.py
@@ -700,6 +700,8 @@ class YumOutput:
         print _('\nGroup: %s') % group.ui_name
 
         verb = self.verbose_logger.isEnabledFor(logginglevels.DEBUG_3)
+        if verb:
+            print _(' Group-Id: %s') % to_unicode(group.groupid)
         pkg_names2pkgs = None
         if verb:
             pkg_names2pkgs = self._group_names2aipkgs(group.packages)


More information about the Yum-commits mailing list