WIP: Get everything working except logging and job completion

This commit is contained in:
Joseph Schorr 2014-11-12 14:03:07 -05:00
parent eacf3f01d2
commit f93c0a46e8
6 changed files with 120 additions and 52 deletions

View file

@ -11,6 +11,8 @@ from flask import Flask
from threading import Event, Lock
from trollius.coroutines import From
from buildjob import BuildJob, BuildJobLoadException
logger = logging.getLogger(__name__)
WORK_CHECK_TIMEOUT = 30
@ -98,11 +100,11 @@ class BuilderServer(object):
self._current_components.remove(component)
self._session_factory.remove(component)
def _job_complete(self, job_item, job_status):
def _job_complete(self, build_job, job_status):
if job_status == 'incomplete':
self._queue.incomplete(job_item, restore_retry=True)
self._queue.incomplete(build_job.job_item(), restore_retry=True)
elif job_status == 'error':
self._queue.incomplete(job_item, restore_retry=False)
self._queue.incomplete(build_job.job_item(), restore_retry=False)
else:
self._queue.complete(job)
@ -121,8 +123,14 @@ class BuilderServer(object):
yield From(trollius.sleep(WORK_CHECK_TIMEOUT))
continue
try:
build_job = BuildJob(job_item)
except BuildJobLoadException as irbe:
logger.exception(irbe)
self._queue.incomplete(job_item, restore_retry=False)
logger.debug('Build job found. Checking for an avaliable worker.')
if self._lifecycle_manager.schedule(job_item):
if self._lifecycle_manager.schedule(build_job, self._loop):
self._job_count = self._job_count + 1
logger.debug('Build job scheduled. Running: %s', self._job_count)
else:
@ -134,6 +142,8 @@ class BuilderServer(object):
@trollius.coroutine
def _initialize(self, loop, host):
self._loop = loop
# Create the WAMP server.
transport_factory = WampWebSocketServerFactory(self._session_factory, debug_wamp = False)
transport_factory.setProtocolOptions(failByDrop = True)