Skip to content

Fix flaky KubernetesPodOperator log-timestamp test - #69563

Merged
jason810496 merged 2 commits into
apache:mainfrom
Dev-iL:2607/deflake_podlog
Jul 8, 2026
Merged

Fix flaky KubernetesPodOperator log-timestamp test#69563
jason810496 merged 2 commits into
apache:mainfrom
Dev-iL:2607/deflake_podlog

Conversation

@Dev-iL

@Dev-iL Dev-iL commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Fixes a flaky unit test in TestAsyncPodManager::test_fetch_container_logs_before_current_sec_various_logs.

The parametrize data built each log line's timestamp and the test's now value from separate pendulum.now() calls made at collection time. When those calls happened to straddle a second boundary, the "timestamp equal to the current second" cases (3 and 6) would intermittently fail, because the values were no longer equal once truncated to the second — even though the test assumed they always would be.

This surfaced as an intermittent CI failure:

FAILED providers/cncf/kubernetes/tests/unit/cncf/kubernetes/utils/test_pod_manager.py::TestAsyncPodManager::test_fetch_container_logs_before_current_sec_various_logs[log_lines5-now5-expected_log_messages5-not_expected_log_messages5] - AssertionError: assert call(20, '[%s] %s', 'base', 'msg2') not in [call(20, '[%s] %s', 'base', 'msg1'), call(20, '[%s] %s', 'base', 'msg2')]

The fix removes the wall-clock dependency: each parametrize case now specifies log-line timestamps as second offsets (or None for a continuation line with no timestamp) relative to a single fixed reference instant (pendulum.datetime(2024, 1, 1, 12, 0, 0)) that the test body builds and mocks pendulum.now() to return. This guarantees the "equal to now" cases are always exactly equal to the second, regardless of how fast or slow the test runs.

Verified the previously-flaky test 20x in a row locally with no failures, and confirmed the failure reproduces identically on main without this change (i.e., unrelated to any in-flight work).


Was generative AI tooling used to co-author this PR?
  • Yes (please specify the tool below)

Generated-by: Claude Code (Sonnet 5) following the guidelines


  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

@boring-cyborg boring-cyborg Bot added area:providers provider:cncf-kubernetes Kubernetes (k8s) provider related issues labels Jul 7, 2026
Dev-iL added 2 commits July 8, 2026 08:41
The parametrize data for test_fetch_container_logs_before_current_sec_various_logs
built each log line's timestamp and the test's `now` value from separate
pendulum.now() calls at collection time. When those calls straddled a second
boundary, the "timestamp equal to the current second" cases (3 and 6) would
intermittently fail because the values were no longer equal to the second.
Build timestamps as offsets from a single fixed reference instant instead.
The msk extra was added to providers/apache/kafka/pyproject.toml without
regenerating docs/index.rst, so the extras table was missing the
corresponding row. CI's doc-sync check flags this drift on every PR
touching this branch, regardless of relevance, so fix it here to unblock.
@jason810496

Copy link
Copy Markdown
Member

We can merge if the provider test pass, the remaining CI failure on current run was addressed in #69583.

@jason810496
jason810496 merged commit e546579 into apache:main Jul 8, 2026
102 of 103 checks passed
@Dev-iL
Dev-iL deleted the 2607/deflake_podlog branch July 8, 2026 06:52
@vincbeck

vincbeck commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Thanks Dev-iL for fixing it!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providers provider:cncf-kubernetes Kubernetes (k8s) provider related issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants