Skip to content

[P2] Four-node restart reports online before every coordinator can read and write #116

Description

@Vonng

Functional observation

After stopping and restarting a four-node test cluster, all nodes/drives/network links can appear online in all four mcli admin info views while one or more coordinators still return PUT 503 SlowDownWrite and cross-node GET 404 NoSuchKey for objects successfully written through another coordinator.

This occurred with both 0806 -> 0806 and 0806 -> 0903 full-stop/full-start runs. It is not established as a 0903 regression. The environment is four native Darwin/arm64 processes on one host, one directory per node, loopback HTTP and published binaries. Multi-host/Linux behavior remains unverified.

Measured evidence

After setup and full restart, probe PUT through each coordinator and immediately GET each successful object through every coordinator at 0/2/5/15/30/60 seconds after the all-online check.

  • The unchanged 0806 restart control returned early write-quorum failures after reporting online.
  • An independent 0903 timed run reported online after 2.734 seconds. At 0/2/5 seconds, node 0 PUT failed; six objects successfully written through nodes 1/2 initially returned 404 through node 0.
  • At 15/30/60 seconds, all newly submitted PUT/GET combinations passed (12 PUT, 48 GET). Both versions passed single-node-outage read/write at 60 seconds.
  • Trace captured the actual HTTP 503/404 responses and storage.ReadVersion file-version-not-found results. Startup logs show the same coordinator missing the remote disk connections involved in the failures.

The original fast-restart functional test remains failed; later successful requests do not retroactively make its acceptance pass.

Data readback

A separate run re-read 12 early PUT-200 objects at 15/30/60 seconds: 144/144 full-byte and VersionId comparisons passed. That run did not reproduce early 404s.

The original nine early PUT-200 objects were then read from their retained directories after one same-version 0903 restart: 36/36 comparisons passed, including 24/24 reads of the six objects that had returned 404. No persistent loss of those objects was observed. Because this included a restart, the original objects' natural recovery time before shutdown remains unknown.

Investigation and acceptance

Admin info aggregates local disk information, while connectDisks installs remote disks and its monitor retries every 15 seconds. This supports an incomplete coordinator disk-connection explanation, but the internal state was not directly instrumented and a product fix is not yet proven.

  • Establish the per-coordinator disk/peer state during the early failures and compare both versions.
  • Use a bounded per-coordinator PUT plus cross-node GET readiness check for subsequent restart/outage tests, recording time to usable I/O separately from admin/health readiness.
  • Re-read the same early acknowledged objects after the window; do not substitute later new-object success for those checks.
  • Repeat the focused comparison on independent Linux nodes before generalizing the environment or declaring distributed upgrade acceptance complete.

Keep this investigation small: no mixed-binary rolling-upgrade assumption, unlimited retry loop, fixed 15-second readiness guarantee, or unrelated cluster redesign is required.

Versions and verification

Reproduced in the 2026-09-05 functional review on the published SILO release RELEASE.2026-09-03T13-18-01Z (9b11dc9469e650815b775cb47b039610644f5da4), with RELEASE.2026-08-06T00-00-00Z (3be10fcc1a44f6620ded0bd303461f9d688cca23) as the baseline. The reviewed code remains unchanged on current main f0bd164b92d799c026fb1a31ad8e0df8ecb39388. Product fixes have not been applied.

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

    bugSomething isn't working

    Type

    No type

    Projects

    • Status
      Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions