Add delay to missed new repo check

This commit is contained in:
Brendan Reilly
2022-09-02 12:01:34 -04:00
parent 7f6f58401d
commit 79e3eae43e
2 changed files with 13 additions and 6 deletions

View File

@@ -2,6 +2,7 @@
# SPDX-License-Identifier: MIT
from __future__ import absolute_import
from datetime import timedelta, datetime
import time
import operator
import koji
@@ -452,5 +453,8 @@ def has_missed_new_repo_message(module_build, koji_session):
'Checking status of newRepo task "%d" for %s',
module_build.new_repo_task_id, module_build)
task_info = koji_session.getTaskInfo(module_build.new_repo_task_id)
# To avoid a race condition, wait at least 10 minutes to nudge build
if task_info['completion_ts'] and (time.time() - task_info['completion_ts']) < 600:
return False
# Other final states, FAILED and CANCELED, are handled by retrigger_new_repo_on_failure
return task_info["state"] == koji.TASK_STATES["CLOSED"]

View File

@@ -2,6 +2,7 @@
# SPDX-License-Identifier: MIT
from __future__ import absolute_import
from datetime import datetime, timedelta
import time
import koji
import mock
@@ -77,14 +78,15 @@ class TestPoller:
assert len(start_build_component.mock_calls) == expected_build_calls
@pytest.mark.parametrize('task_state, expect_start_build_component', (
(None, True), # Indicates a newRepo task has not been triggered yet.
(koji.TASK_STATES["CLOSED"], True),
(koji.TASK_STATES["OPEN"], False),
@pytest.mark.parametrize('completion_ts, task_state, expect_start_build_component', (
(None, None, True), # Indicates a newRepo task has not been triggered yet.
((time.time() - 601), koji.TASK_STATES["CLOSED"], True),
(time.time(), koji.TASK_STATES["CLOSED"], False),
(None, koji.TASK_STATES["OPEN"], False),
))
@patch("module_build_service.scheduler.batches.start_build_component")
def test_process_paused_module_builds_with_new_repo_task(
self, start_build_component, create_builder, dbg, task_state,
self, start_build_component, create_builder, dbg, completion_ts, task_state,
expect_start_build_component
):
"""
@@ -100,7 +102,8 @@ class TestPoller:
module_build.time_modified = datetime.utcnow() - timedelta(days=5)
if task_state:
koji_session = mock.MagicMock()
koji_session.getTaskInfo.return_value = {"state": task_state}
koji_session.getTaskInfo.return_value = {"state": task_state,
"completion_ts": completion_ts}
builder.koji_session = koji_session
module_build.new_repo_task_id = 123
db_session.commit()