docs(rustfs): record the two rc.5 defects, and stop calling this an evaluation #550

Closed
sean wants to merge 1 commit from sean/rustfs-rc5-defects into main AGit
Owner

Two rc.5 defects were measured while 170 GiB moved off MinIO, and both existed only in a session scratchpad. Filing upstream needs an account this cluster does not hold, so this tree is the record. (1) A recursive listing returns SHORT and reports success: 1,543 objects of 21,638 from the zot bucket root, three times out of three, store idle, HTTP 200, IsTruncated=false; per-directory listings are correct. It made mc diff call 20,095 present objects missing and still makes zot's /v2/_catalog report 12 repositories of 124. (2) A client that lists while it writes provokes GOAWAY(too_many_internal_resets) between nodes every 1.5 to 3 minutes, killing every shard write in flight. The rule both imply: copy and prove ONE prefix at a time, never list a whole bucket to decide what exists. The premise was also false in four places -- 'RustFS holds no live data', 'MinIO keeps every bucket' and 'a PARALLEL S3' still appeared in the doc, the cluster registry, the namespace and the StatefulSet. tests/rustfs.sh now fails if the write-up goes missing or any pre-migration claim returns. Five controls confirmed red. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76

Two rc.5 defects were measured while 170 GiB moved off MinIO, and both existed only in a session scratchpad. Filing upstream needs an account this cluster does not hold, so this tree is the record. (1) A recursive listing returns SHORT and reports success: 1,543 objects of 21,638 from the zot bucket root, three times out of three, store idle, HTTP 200, IsTruncated=false; per-directory listings are correct. It made mc diff call 20,095 present objects missing and still makes zot's /v2/_catalog report 12 repositories of 124. (2) A client that lists while it writes provokes GOAWAY(too_many_internal_resets) between nodes every 1.5 to 3 minutes, killing every shard write in flight. The rule both imply: copy and prove ONE prefix at a time, never list a whole bucket to decide what exists. The premise was also false in four places -- 'RustFS holds no live data', 'MinIO keeps every bucket' and 'a PARALLEL S3' still appeared in the doc, the cluster registry, the namespace and the StatefulSet. tests/rustfs.sh now fails if the write-up goes missing or any pre-migration claim returns. Five controls confirmed red. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
docs(rustfs): record the two rc.5 defects, and stop calling this an evaluation
Some checks failed
binjovi/ci Binjovi failed the frozen plan
7d93dbb205
THE WRITE-UP HAD NOWHERE TO LIVE. Two defects were measured while 170 GiB
moved off MinIO. Both are live in 1.0.0-rc.5 and both change how you are
allowed to drive this store, and both existed only in a session scratchpad.
Filing them upstream needs an account this cluster does not hold, so this
tree is the record.

1. A RECURSIVE LISTING RETURNS SHORT AND REPORTS SUCCESS. Bucket zot held
   21,638 objects; `mc ls --recursive` from the bucket root returned 1,543,
   three times out of three, with the store idle and HTTP 200 and
   IsTruncated=false. 1,543 is exactly the count of objects sorting before
   build/binjovi/, the first directory with about 10,000 entries. A
   per-directory listing is correct. It made `mc diff` report 20,095 present
   objects as missing, so every mirror pass re-uploaded them, and it still
   makes zot's /v2/_catalog report 12 repositories of 124 while serving all
   124 correctly by direct read.

2. A CLIENT THAT LISTS WHILE IT WRITES KILLS THE INTERNODE CONNECTION. Capped
   PUTs provoked GOAWAY(too_many_internal_resets, ENHANCE_YOUR_CALM) between
   nodes every 1.5 to 3 minutes. A cancelled walk_dir stream counts as a local
   error reset on the peer, and when that budget is spent every shard write in
   flight on the connection dies together.

The operating rule both imply is in the doc and in the guard: copy and prove
ONE prefix at a time, and never list a whole bucket to decide what exists.

THE PREMISE WAS ALSO FALSE IN FOUR PLACES. This install was a parallel
evaluation holding no live data. It is now the only object store, and MinIO is
retired. "RustFS holds no live data", "MinIO keeps every bucket" and "a
PARALLEL S3" all still appeared in the doc, the cluster registry, the
namespace and the StatefulSet. A stale premise is worse than no comment,
because it tells the reader the data is somewhere else. The five closed
migration blockers are kept as a record with their outcomes, not deleted.

The capacity comment also described 110Gi drives. They were expanded to 210Gi
in place during the migration: 840 GiB raw, about 420 GiB usable, about 190
GiB logical in use.

tests/rustfs.sh now fails if the write-up goes missing, if either defect
heading or its evidence is dropped, or if any pre-migration claim comes back
in the doc or the manifests. Five controls confirmed red. Full tests/check.sh
passes.

Claude-Session: https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
sean closed this pull request 2026-09-10 11:11:18 +00:00
Some checks failed
binjovi/ci Binjovi failed the frozen plan

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
sean/seanfarm!550
No description provided.