Skip to content

Keep collector authority continuous in reader-fence process laws #174

Description

@flyingrobots

Observed failure

PR #161 exact head e206298 fails reader_fence_process::collection_excludes_a_new_snapshot_until_release with Error: Busy in hosted Rust run 37153036962. Earlier identical runtime code passed; the first failing log is preserved. Do not retry this into green.

Contract and scope

The collector scenarios need continuous cooperating writer authority while arranging the real reader-fence schedule. Their migrated-store fixture currently drops authority and each law immediately reacquires it nonblockingly. Another concurrently running law spawns a process; inherited open-file descriptions can retain a flock until exec, including after the original parent's drop. This is a source-supported possible schedule, not a proven diagnosis of the untraced hosted occurrence.

Retain the existing migration authority throughout the collector scenario, avoiding the unnecessary release/reacquire gap. Keep production locking unchanged and preserve kernel-observed reader exclusion, SIGKILL/reap, persistent inode and post-release admission checks. No sleeps, unsafe fork hooks, retry-to-green, or broad test serialization.

Acceptance

  • Observe a runtime RED on unfixed code for a competing writer being admitted during collector preparation; the fixed fixture keeps exact Busy exclusion until the collector releases authority.
  • Both process laws pass in debug and release with their original reader-fence assertions intact.
  • Full required checks and independent review pass at the final candidate head.
  • Preserve the original hosted failure and distinguish the source-backed possible fork schedule from demonstrated runtime evidence.

One test-isolation repair, independently mergeable onto main. No dependency on #161's migration changes. After this lands, integrate it normally into #161 and verify that resulting exact head. Refs #113, #160, #161, #132.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions