summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Packages
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-07-18 14:22:11 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-07-18 14:22:11 -0400
commit827d0a83b8c9148598c23cb550862c0cf50b5a23 (patch)
tree9f8f09b3d8414c98b82e2a960c6d7a4d881c8766 /src/lib/Bcfg2/Server/Plugins/Packages
parent20794ebf60a9cc63d762b047ba24a2ad5c6a115f (diff)
downloadbcfg2-827d0a83b8c9148598c23cb550862c0cf50b5a23.tar.gz
bcfg2-827d0a83b8c9148598c23cb550862c0cf50b5a23.tar.bz2
bcfg2-827d0a83b8c9148598c23cb550862c0cf50b5a23.zip
Packages: added lock to yum cache update
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Packages')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Yum.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py
index 7c950a435..7a90f4f2e 100644
--- a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py
@@ -53,11 +53,13 @@ The Yum Backend
import os
import re
import sys
+import time
import copy
import errno
import socket
import logging
import lxml.etree
+from lockfile import FileLock
from subprocess import Popen, PIPE
import Bcfg2.Server.Plugin
# pylint: disable=W0622
@@ -864,6 +866,17 @@ class YumCollection(Collection):
if not self.use_yum:
return Collection.complete(self, packagelist)
+ lock = FileLock(os.path.join(self.cachefile, "lock"))
+ slept = 0
+ while lock.is_locked():
+ if slept > 30:
+ self.logger.warning("Packages: Timeout waiting for yum cache "
+ "to release its lock")
+ return set(), set()
+ self.logger.debug("Packages: Yum cache is locked, waiting...")
+ time.sleep(3)
+ slept += 3
+
if packagelist:
try:
result = self.call_helper(