summaryrefslogtreecommitdiff
path: root/lib/chef/provider/package/yum/yum_helper.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/provider/package/yum/yum_helper.py')
-rw-r--r--lib/chef/provider/package/yum/yum_helper.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/chef/provider/package/yum/yum_helper.py b/lib/chef/provider/package/yum/yum_helper.py
index 7e6f193054..70667f8f74 100644
--- a/lib/chef/provider/package/yum/yum_helper.py
+++ b/lib/chef/provider/package/yum/yum_helper.py
@@ -181,6 +181,16 @@ try:
except ValueError, e:
raise RuntimeError("bad json parse")
+ # handle closing the rpmdb early before we open it
+ # so that we don't reopen it on successive close_rpmdb calls
+ if command['action'] == "close_rpmdb":
+ if base is not None:
+ base.closeRpmDB()
+ base = None
+ outpipe.write('nil nil nil\n')
+ outpipe.flush()
+ continue
+
if base is None:
base = yum.YumBase()
@@ -192,11 +202,6 @@ try:
versioncompare(command['versions'])
elif command['action'] == "installonlypkgs":
install_only_packages(base, command['package'])
- elif command['action'] == "close_rpmdb":
- base.closeRpmDB()
- base = None
- outpipe.write('nil nil nil\n')
- outpipe.flush()
else:
raise RuntimeError("bad command")
finally: