Skip to content

Intermittent ready-age cold poll replay refusal after native restart (MariaDB restarts lane) #1096

Closed as not planned

Description

@rmcdaniel

Observation

In Shared fixtures run 42431342149, job 128581664078 mysql-execution (mariadb-10.11, restarts) failed on PR #1095 head d9c4d5d2. #1095 changes only CI install scripts and tests; no runtime or product file.

scripts/conformance/server-parity/ready-age-restart.php failed in its finish phase (line 80 → readyAgeClaim, line 28):

PHP Fatal error:  Uncaught RuntimeException: Native successful claim lacks its declared literal ready-age value.

The finish phase replays the original workflow- and activity-poll requests (same poll_request_id) against the recovered native node, after the original node was killed with SIGKILL. The check requires server_capabilities.claimed_task_ready_age === true and an integer task.ready_age_ms in the replayed claim.

Timeline from the job log:

  • The range profiles finished.
  • Restart, cooperative and ready-age prepare ran against native-a, then docker kill at 00:55:33Z.
  • The recovered node became ready at about 00:56:05Z.
  • finish ran at about 00:56:06Z.

That is roughly 30–40 s after prepare, inside the 60 s workflow lease plus the 5 s answer retention, so answer expiry is not the explanation on this evidence.

The same native source and lane passed on #1095's previous head (42429372674) and on recent main runs. The cause is unknown.

Evidence gap

The finish script throws without printing the replayed response. Only ready-age-restart-prepare-controls.txt is uploaded (artifact 13598420191, {"outcome":"prepared","claims":["workflow","activity"]}). The receipt JSON with prepared_at and the saved claims is not uploaded. So this run cannot distinguish:

  • an empty or non-leased poll answer;
  • a missing capability;
  • a missing ready_age_ms field.

Next action

  1. Diagnostics (Server). On refusal, ready-age-restart.php should print the bounded HTTP status, poll_status, the presence of server_capabilities.claimed_task_ready_age, and the task key set (no payloads), and keep the receipt JSON in the evidence upload. This is a CI-only change and does not weaken the assertion.
  2. Classification. Reproduce or attribute it once those diagnostics exist; until then treat it as an intermittent product-check result, not a pass. The decision on Install profile SDK fixtures from a verified job-scoped dist cache #1095's current failed job rests with General.

Owner: Server.

Activity

  1. rmcdaniel commented on Nov 11, 2026

    @rmcdaniel
    MemberAuthor

    Closing: not seen again since the diagnostics in #1095 landed; none of the shared-fixture failures since 11-08 were in the restarts lane. Reopen with the printed diagnostics if it recurs.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions