summaryrefslogtreecommitdiffstats
path: root/src/software
diff options
context:
space:
mode:
authorMichal Minar <miminar@redhat.com>2013-07-09 12:47:20 +0200
committerMichal Minar <miminar@redhat.com>2013-07-23 13:52:34 +0200
commit2053c1b1986688525c2e3fa171e0135dda178d40 (patch)
treed79f518bab5449f7958f6d6e63136bb81464d9d6 /src/software
parent92dc6ef51b693a6f74f5252b1828b2fd82289d15 (diff)
downloadopenlmi-providers-2053c1b1986688525c2e3fa171e0135dda178d40.tar.gz
openlmi-providers-2053c1b1986688525c2e3fa171e0135dda178d40.tar.xz
openlmi-providers-2053c1b1986688525c2e3fa171e0135dda178d40.zip
software: configurable timeout for job completion
Diffstat (limited to 'src/software')
-rw-r--r--src/software/lmi/software/yumdb/__init__.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/software/lmi/software/yumdb/__init__.py b/src/software/lmi/software/yumdb/__init__.py
index b1e26d2..470aaf8 100644
--- a/src/software/lmi/software/yumdb/__init__.py
+++ b/src/software/lmi/software/yumdb/__init__.py
@@ -45,6 +45,7 @@ import yum
from lmi.common import singletonmixin
from lmi.common.IndicationManager import IndicationManager
+from lmi.software.util import Configuration
from lmi.software.util import cmpi_logging
from lmi.software.util import get_signal_name
from lmi.software.yumdb import jobs
@@ -68,8 +69,8 @@ def log_reply_error(job, reply):
# asynchronous job
return
if not isinstance(reply, jobs.YumJob):
- raise TypeError('expected instance of jobs.YumJob for reply, not "%s"' %
- reply.__class__.__name__)
+ raise TypeError('expected instance of jobs.YumJob for reply, not "%s"'
+ % reply.__class__.__name__)
if reply.result == jobs.YumJob.RESULT_ERROR:
LOG().error("%s failed with error %s: %s",
job, reply.result_data[0].__name__, str(reply.result_data[1]))
@@ -248,11 +249,12 @@ class YumDB(singletonmixin.Singleton):
In case, that worker process terminated due to some error. Restart it
and resend all the job requests again.
"""
+ timeout = Configuration.get_instance().get_safe(
+ 'Jobs', 'WaitCompleteTimeout', float)
while True:
LOG().debug("[jobid=%d] blocking on downlink queue", job.jobid)
try:
- jobout = self._worker.downlink.get(
- block=True, timeout=MAX_JOB_WAIT_TIME)
+ jobout = self._worker.downlink.get(block=True, timeout=timeout)
if jobout.jobid == job.jobid:
LOG().debug("[jobid=%d] received desired reply", job.jobid)
with self._reply_lock:
@@ -268,7 +270,7 @@ class YumDB(singletonmixin.Singleton):
self._reply_cond.notifyAll()
except TQueue.Empty:
LOG().warn("[jobid=%d] wait for job reply timeout"
- "(%d seconds) occured", job.jobid, MAX_JOB_WAIT_TIME)
+ "(%d seconds) occured", job.jobid, timeout)
self._handle_reply_timeout(job)
@cmpi_logging.trace_method