kojira: prioritize awaited repos
Related: https://pagure.io/koji/issue/3757
This commit is contained in:
parent
11c3fe516a
commit
1c7e9a1a99
1 changed files with 13 additions and 2 deletions
15
util/kojira
15
util/kojira
|
|
@ -795,14 +795,24 @@ class RepoManager(object):
|
|||
if age < 0:
|
||||
self.logger.warning("Needed tag has future expire_ts: %r", entry)
|
||||
age = 0
|
||||
entry['score'] = age * adj
|
||||
entry['score'] = age * adj * entry['score_adjust']
|
||||
self.logger.debug("Needed tag %s got score %.2f",
|
||||
entry['taginfo']['name'], entry['score'])
|
||||
# so a day old unused repo gets about the regen same score as a
|
||||
# 2.4-hour-old, very popular repo
|
||||
|
||||
def updateTagScores(self):
|
||||
for entry in list(self.needed_tags.values()):
|
||||
# call listTasks waitrepo
|
||||
awaited = self.session.listTasks(opts={'method': ['waitrepo'],
|
||||
'state': [koji.TASK_STATES['FREE'],
|
||||
koji.TASK_STATES['ASSIGNED'],
|
||||
koji.TASK_STATES['OPEN']]})
|
||||
awaited = {koji.parse_task_params('waitrepo', task['request'])['tag'] for task in awaited}
|
||||
for tag_id, entry in self.needed_tags.items():
|
||||
if tag_id in awaited:
|
||||
# score multiplication factor, prioritize tags which are being awaited for
|
||||
# not needed on every setTagScore call (initial point will not account it for)
|
||||
entry['score_adjust'] = 1.5
|
||||
self.setTagScore(entry)
|
||||
|
||||
def _delete_needed_tag(self, tag_id):
|
||||
|
|
@ -938,6 +948,7 @@ class RepoManager(object):
|
|||
'taginfo': taginfo,
|
||||
'expire_ts': ts,
|
||||
'needed_since': time.time(),
|
||||
'score_adjust': 1.0, # modifier, updated in updateTagScores
|
||||
}
|
||||
self.setTagScore(entry)
|
||||
self.needed_tags[tag_id] = entry
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue