Skip to content

[flake] TestSupernodeInterop_SafeHeadProgression — EL safe label race with CL cross-safe #20851

@ajsutton

Description

@ajsutton

Claude: Tracking flake observed in pipeline 125516.

Failure

Job: https://app.circleci.com/pipelines/github/ethereum-optimism/optimism/125516/workflows/c482ad78-69f5-4051-ad85-f2ce1adcf4af/jobs/5062361

assertions.go:387:
    Error Trace: op-acceptance-tests/tests/supernode/interop/head_progression_test.go:89
    Error:       "9" is not greater than or equal to "10"
    Test:        TestSupernodeInterop_SafeHeadProgression
--- FAIL: TestSupernodeInterop_SafeHeadProgression (31.97s)

Suspected root cause (to be confirmed by fix agent)

After dsl.CheckAll(...) confirms the CL reached CrossSafe = finalTargetBlockNum (10), the test immediately reads the EL safe label via sys.L2ELA.BlockRefByLabel(eth.Safe) and asserts it is >= 10. The EL safe label is updated asynchronously through the engine API forkchoice flow, so there is a small window where the CL has marked the block cross-safe but the EL safe label still trails by one block.

Log evidence from the failing run:

  • INFO l2_cl.go:283 Chain advanced name=sequencer chain=902 label=safe target=10 target=10 at 23:49:26.233
  • Assertion fired at 23:49:26.242 with safeA.Number == 9

Fix direction

Replace the immediate EL label read at lines 87–90 (and likely similar reads later in the test) with a polling wait (e.g. ReachedFn or equivalent helper) that waits for the EL safe label to catch up to finalTargetBlockNum before asserting.

A fix PR is in progress.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions