limit non-waiting newRepo tasks
This commit is contained in:
parent
daea405295
commit
84eaf7f06e
1 changed files with 16 additions and 4 deletions
20
util/kojira
20
util/kojira
|
|
@ -349,15 +349,22 @@ class RepoManager(object):
|
|||
|
||||
def updateRepos(self):
|
||||
#check on tasks
|
||||
running_tasks = 0
|
||||
for tag_id, task_id in self.tasks.items():
|
||||
tinfo = self.session.getTaskInfo(task_id)
|
||||
tstate = koji.TASK_STATES[tinfo['state']]
|
||||
if tstate == 'CLOSED':
|
||||
self.logger.info("Finished: newRepo task %s for tag %s" % (task_id, tag_id))
|
||||
del self.tasks[tag_id]
|
||||
continue
|
||||
elif tstate in ('CANCELED', 'FAILED'):
|
||||
self.logger.info("Problem: newRepo task %s for tag %s is %s" % (task_id, tag_id, tstate))
|
||||
del self.tasks[tag_id]
|
||||
continue
|
||||
if not tinfo['waiting']:
|
||||
#the largest hub impact is from the first part of the newRepo task
|
||||
#once it is waiting on subtasks, that part is over
|
||||
running_tasks += 1
|
||||
#TODO [?] - implement a timeout for active tasks?
|
||||
self.logger.debug("Current tasks: %r" % self.tasks)
|
||||
self.logger.debug("Updating repos")
|
||||
|
|
@ -411,8 +418,11 @@ class RepoManager(object):
|
|||
self.logger.debug("order: %s", regen)
|
||||
# i.e. tags with oldest (or no) repos get precedence
|
||||
for ts, tag_id in regen:
|
||||
if len(self.tasks) >= self.options.max_repo_tasks:
|
||||
self.logger.info("Maximum number of repo tasks reached.")
|
||||
if running_tasks >= self.options.max_repo_tasks:
|
||||
self.logger.info("Maximum number of repo tasks reached")
|
||||
break
|
||||
elif len(self.tasks) >= self.options.repo_tasks_limit:
|
||||
self.logger.info("Repo task limit reached")
|
||||
break
|
||||
tagname = tags[tag_id]
|
||||
taskopts = {}
|
||||
|
|
@ -425,6 +435,7 @@ class RepoManager(object):
|
|||
taskopts['src'] = True
|
||||
break
|
||||
task_id = self.session.newRepo(tagname, **taskopts)
|
||||
running_tasks += 1
|
||||
self.logger.info("Created newRepo task %s for tag %s (%s)" % (task_id, tag_id, tags[tag_id]))
|
||||
self.tasks[tag_id] = task_id
|
||||
#some cleanup
|
||||
|
|
@ -538,7 +549,8 @@ def get_options():
|
|||
'offline_retry_interval': 120,
|
||||
'prune_batch_size': 4,
|
||||
'delete_batch_size': 3,
|
||||
'max_repo_tasks' : 10,
|
||||
'max_repo_tasks' : 2,
|
||||
'repo_tasks_limit' : 10,
|
||||
'deleted_repo_lifetime': 7*24*3600,
|
||||
#XXX should really be called expired_repo_lifetime
|
||||
'cert': '/etc/kojira/client.crt',
|
||||
|
|
@ -546,7 +558,7 @@ def get_options():
|
|||
'serverca': '/etc/kojira/serverca.crt'
|
||||
}
|
||||
if config.has_section(section):
|
||||
int_opts = ('prune_batch_size', 'deleted_repo_lifetime', 'max_repo_tasks',
|
||||
int_opts = ('prune_batch_size', 'deleted_repo_lifetime', 'max_repo_tasks', 'repo_tasks_limit',
|
||||
'delete_batch_size', 'retry_interval', 'max_retries', 'offline_retry_interval')
|
||||
str_opts = ('topdir', 'server', 'user', 'password', 'logfile', 'principal', 'keytab', 'krbservice',
|
||||
'cert', 'ca', 'serverca', 'debuginfo_tags', 'source_tags')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue