| |
@@ -795,14 +795,32 @@
|
| |
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.get('score_adjust', 1)
|
| |
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 = set()
|
| |
+ for task in awaited:
|
| |
+ try:
|
| |
+ awaited.add(koji.parse_task_params('waitrepo', task['request'])['tag'])
|
| |
+ except Exception:
|
| |
+ # ignore malformed tasks
|
| |
+ self.logger.debug(f"Malformed task: {task}")
|
| |
+ pass
|
| |
+
|
| |
+ 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'] = 2
|
| |
self.setTagScore(entry)
|
| |
|
| |
def _delete_needed_tag(self, tag_id):
|
| |
Related: https://pagure.io/koji/issue/3757