Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Log job failure even when there are retries configured #6169

Open
wants to merge 13 commits into
base: 8.4.x
Choose a base branch
from

Conversation

wxtim
Copy link
Member

@wxtim wxtim commented Jun 25, 2024

Closes #6151

Check List

  • I have read CONTRIBUTING.md and added my name as a Code Contributor.
  • Contains logically grouped changes (else tidy your branch by rebase).
  • Does not contain off-topic changes (use other PRs for other changes).
  • Applied any dependency changes to both setup.cfg (and conda-environment.yml if present).
  • Tests are included (or explain why tests are not needed).
  • CHANGES.md entry included if this is a change that can affect users
  • Cylc-Doc pull request opened if required at cylc/cylc-doc/pull/XXXX.
  • If this is a bug fix, PR should be raised against the relevant ?.?.x branch.

@wxtim wxtim force-pushed the fix.task_fail_not_logged_if_retries branch from 73714c8 to 8f20ab0 Compare June 25, 2024 13:57
@wxtim wxtim self-assigned this Jun 25, 2024
@wxtim wxtim added bug Something is wrong :( small labels Jun 25, 2024
@wxtim wxtim added this to the 8.3.1 milestone Jun 25, 2024
@wxtim wxtim linked an issue Jun 25, 2024 that may be closed by this pull request
Copy link
Member

@oliver-sanders oliver-sanders left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately, I don't think it's this simple.

  • I think this diff means that polled log messages for task failure will go back to being duplicated.
  • This only covers failure, but submission failure also has retries so may require similar treatment.
  • I think the failures before retries are exhausted will now get logged at CRITICAL level rather than INFO.

@wxtim wxtim marked this pull request as draft June 26, 2024 14:45
@oliver-sanders oliver-sanders modified the milestones: 8.3.1, 8.3.x Jun 27, 2024
@wxtim
Copy link
Member Author

wxtim commented Jul 15, 2024

I think this diff means that polled log messages for task failure will go back to being duplicated.

I think that you have a particular closed issue in mind, but I can't find it... Can you point it out to me?

This only covers failure, but submission failure also has retries so may require similar treatment.

I think that submission failure is already handled correctly - it certainly is in the simplistic case where you feed it platform=garbage you get a submission failed message at level critical:

CRITICAL - [1/bar/01:preparing] submission failed
CRITICAL - [1/bar/02:preparing] submission failed
CRITICAL - [1/bar/03:preparing] submission failed

These are logged at critical - and I think they should be?

I think the failures before retries are exhausted will now get logged at CRITICAL level rather than INFO.

This would be consistent with submit failure...

@wxtim wxtim requested a review from oliver-sanders July 15, 2024 10:17
@wxtim wxtim force-pushed the fix.task_fail_not_logged_if_retries branch from 2c7e480 to 3cedf2f Compare July 15, 2024 10:19
@wxtim wxtim marked this pull request as ready for review July 15, 2024 10:20
@oliver-sanders
Copy link
Member

I think this diff means that polled log messages for task failure will go back to being duplicated.

I think that you have a particular closed issue in mind, but I can't find it... Can you point it out to me?

No, I'm not thinking of the other log message duplication issue.

The change made here bypassed logic that was used for suppressing duplicate log messages (the f'{FAIL_MESSAGE_PREFIX}ERR' bit):

8f20ab0#diff-d6de42ef75ecc801c26a6be3a9dc4885b64db89d32bce6f07e319595257b9b2eL930

However, in your more recent "fix" commit, you have put this back the way it was before:

3cedf2f#diff-d6de42ef75ecc801c26a6be3a9dc4885b64db89d32bce6f07e319595257b9b2eR930

oliver-sanders

This comment was marked as off-topic.

@oliver-sanders oliver-sanders dismissed their stale review July 15, 2024 12:32

because I'm blind

@wxtim wxtim marked this pull request as draft July 16, 2024 15:36
@wxtim
Copy link
Member Author

wxtim commented Jul 22, 2024

This does not apply to submit failure, because submit failure will always log a critical warning through the jobs-submit command.

WARNING - platform: mulberry - Could not connect to mymachine.
    * mymachine has been added to the list of unreachable hosts
    * remote-init will retry if another host is available.
ERROR - [jobs-submit cmd] (remote init)
    [jobs-submit ret_code] 1
CRITICAL - [1/bar/02:preparing] submission failed
INFO - [1/bar/02:preparing] => waiting
WARNING - [1/bar:waiting] retrying in PT1S (after 2024-07-22T14:51:37+01:00)

@wxtim wxtim force-pushed the fix.task_fail_not_logged_if_retries branch from 3cedf2f to 1341355 Compare July 22, 2024 13:59
@wxtim wxtim marked this pull request as ready for review July 22, 2024 13:59
Copy link
Member

@MetRonnie MetRonnie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Test failures)

@wxtim wxtim force-pushed the fix.task_fail_not_logged_if_retries branch from 1341355 to ce0498e Compare July 26, 2024 09:50
@wxtim wxtim requested a review from MetRonnie July 26, 2024 10:14
changes.d/fix.6169.md Outdated Show resolved Hide resolved
cylc/flow/task_events_mgr.py Show resolved Hide resolved
cylc/flow/task_events_mgr.py Outdated Show resolved Hide resolved
@MetRonnie MetRonnie removed the request for review from markgrahamdawson July 31, 2024 11:39
@wxtim
Copy link
Member Author

wxtim commented Nov 6, 2024

These test failures were caused by a slight change in the nature of the message caused by moving it: By the time the code reaches _process_message_failed some of the info required for the original error messages (the state) is not available, or has changed.

@wxtim wxtim marked this pull request as ready for review November 6, 2024 14:35
Copy link
Member

@hjoliver hjoliver left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One small typo found.

cylc/flow/task_events_mgr.py Outdated Show resolved Hide resolved
@oliver-sanders oliver-sanders requested review from hjoliver and removed request for oliver-sanders November 8, 2024 16:17
@hjoliver
Copy link
Member

hjoliver commented Dec 5, 2024

@wxtim this seems to have diverged a bit from what I thought was agreed above, which was:

  • log the job (or submit) failure as ERROR whether there are retries or not
  • then log the retry message at WARNING level, if there are retries

Now, if there are retries we only get the retry warning. (Which I think is back to the problem we were trying to fix here, although the logging location has changed to the methods that would support the fix).

Co-authored-by: Hilary James Oliver <[email protected]>

response to review
@wxtim wxtim force-pushed the fix.task_fail_not_logged_if_retries branch from fc12804 to 5453cac Compare December 6, 2024 09:34
@wxtim wxtim requested a review from oliver-sanders December 6, 2024 10:01
Copy link
Member

@MetRonnie MetRonnie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The execution retry log message is now:

WARNING - [1/foo:waiting] failed/ERR - retrying in ...

Whereas the submission retry log message is still just:

WARNING - [1/foo:waiting] retrying in ...

I think it would make sense to update this too.

Comment on lines +187 to +191
one.task_job_mgr._set_retry_timers(
fail_once, {
'execution retry delays': [1],
'submission retry delays': [1]
})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Less fragile if this was just set in the workflow config for the test?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it really make any difference? - the aim was to avoid fiddling with one. Can do if you insist.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Surely creating a workflow config with these retry delays set is not any more involved than fiddling the internal retry timers?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not going to argue. Will change.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Went away and had a look at it - essentially this is more unit-testy than integration test-like: If you set these timers in the config you still need to run this function here to set the retry timers. So I think that I'll leave it.

tests/integration/test_task_events_mgr.py Outdated Show resolved Hide resolved
@wxtim wxtim requested a review from MetRonnie January 7, 2025 14:03
@hjoliver
Copy link
Member

hjoliver commented Jan 8, 2025

Here's a screenshot comparing two execution failures (one retry) with two submission failures (one retry):

frap-2

Contrary to @MetRonnie 's suggestion (I think) you just need to get rid of the failed/ERR bit in the execution retry message. That information is already logged as the error. The warning is just about the resulting retry.

@MetRonnie

This comment was marked as resolved.

@oliver-sanders oliver-sanders removed their request for review January 8, 2025 13:54
@hjoliver
Copy link
Member

hjoliver commented Jan 8, 2025

Or have "execution retrying in..." and "submission retrying in..."?

Not really necessary because both entail a full "retry" (i.e., submit the job, then execute it).

@hjoliver
Copy link
Member

hjoliver commented Jan 8, 2025

Still waiting on my suggestion above, I think. In case it got a bit lost in the log lines:

# submission retry (good)
ERROR - [1/foo/01:preparing] submission failed
INFO - [1/foo/01:preparing] => waiting
WARNING - [1/foo:waiting] retrying in PT5S (after 2025-01-09T11:08:20+13:00)
# execution retry (needs tweak)
ERROR - [1/foo/01:running] failed/ERR
INFO - [1/foo/01:running] => waiting
WARNING - [1/foo:waiting] failed/ERR - retrying in PT5S (after 2025-01-09T11:05:49+13:00)

(Pretty minor, but there's no need to double-log the failed/ERR bit).

@hjoliver hjoliver modified the milestones: 8.3.7, 8.4.1 Jan 8, 2025
@wxtim
Copy link
Member Author

wxtim commented Jan 9, 2025

Still waiting on my suggestion #6169 (comment), I think. In case it got a bit lost in the log lines:

Done, but not pushed, because I was was also looking at Ronnie's Comments about the tests.

@wxtim wxtim requested a review from oliver-sanders January 9, 2025 13:47
@MetRonnie MetRonnie changed the base branch from 8.3.x to 8.4.x January 9, 2025 18:33
@oliver-sanders oliver-sanders removed their request for review January 13, 2025 10:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something is wrong :( small
Projects
None yet
Development

Successfully merging this pull request may close these issues.

scheduler: task failure not logged when retries are configured
4 participants