diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-07-18 14:22:11 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-07-18 14:22:11 -0400 |
commit | 827d0a83b8c9148598c23cb550862c0cf50b5a23 (patch) | |
tree | 9f8f09b3d8414c98b82e2a960c6d7a4d881c8766 /src/lib/Bcfg2/Server | |
parent | 20794ebf60a9cc63d762b047ba24a2ad5c6a115f (diff) | |
download | bcfg2-827d0a83b8c9148598c23cb550862c0cf50b5a23.tar.gz bcfg2-827d0a83b8c9148598c23cb550862c0cf50b5a23.tar.bz2 bcfg2-827d0a83b8c9148598c23cb550862c0cf50b5a23.zip |
Packages: added lock to yum cache update
Diffstat (limited to 'src/lib/Bcfg2/Server')
-rw-r--r-- | src/lib/Bcfg2/Server/Plugins/Packages/Yum.py | 13 |
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( |