diff --git a/docs/investigations/r6/README.md b/docs/investigations/r6/README.md index 309f9c296..fa03e3aa8 100644 --- a/docs/investigations/r6/README.md +++ b/docs/investigations/r6/README.md @@ -2,12 +2,13 @@ ## 当前交付状态 -本地实现已完成,v3 已与真实 Opus 5.0 达成共识,原研究基线上的定向回归、race、完整构建、vet、lint 全部通过。正在将隔离分支同步到新主干快照 `af2b1794d38d9e70e1d2c3ee692426e4b6cab4bd` 并复验。 +本地实现已完成,v3 已与真实 Opus 5.0 达成共识。原研究基线和同步到主干快照后的定向回归、race、完整构建、vet、lint 全部通过;此前受宿主机容量限制的六项 DELETE 测试,在空间恢复后也全部通过。 - 研究基线:`9ebe81c1b3611f9cc73e676b5b741c2be62c467a`。 +- 集成基线:`af2b1794d38d9e70e1d2c3ee692426e4b6cab4bd`;通过最终验证的源码提交:`cf381a7151ef25fc95ace5fedcd767fa19410de2`。后续提交仅整理本目录的验证文档。 - 分支:`codex/r6-delete-marker-mrf`。 - [PR #184](https://github.com/pgsty/silo/pull/184) 在最终核对时仍为 OPEN,head `6addf9eb916b5a4b837480cf534cd1efa5407d3c`。复用其按 purge 状态识别操作、接纳 marker 405 的方向,补齐实测遗漏;没有直接合并该 PR。 -- 新主干只新增 R4 的 SSE-KMS PUT 选项与对应材料,R6 涉及的生产文件、测试文件和依赖未发生交叉修改。 +- 从研究基线到集成基线,仅新增 R4 的 SSE-KMS PUT 选项与对应材料,R6 涉及的生产文件、测试文件和依赖未发生交叉修改。五个 R6 文件在同步前后的 SHA256 一致。 - 本任务没有执行主干合并、远端推送、发布、部署或现网存量改写。 ## 修复内容 @@ -39,7 +40,16 @@ ## 验证范围 -原基线证据:[机器记录](verification/baseline-verification.json),以及同目录 scope/race/build/vet/lint 日志。 +原基线证据:[机器记录](verification/baseline-verification.json)。最终集成证据:[五项检查记录](verification/rebased-verification.json)、[六项 DELETE 复验](verification/rebased-delete-verification.json)、[源码与方案哈希清单](final-source-manifest.json)。对应日志在同目录,均与原始日志逐字节一致。运行环境:Go 1.27.1,darwin/arm64,GOMAXPROCS=4。 + +| 检查 | 最终结果 | +|---|---| +| `go test -p 2 ./cmd ./internal/bucket/replication -run 'TestReplication\|TestReplicate\|TestMRF\|TestResync\|TestSiteResync' -count=1 -v` | 通过,28 个顶层测试 / 198 个通过条目 | +| `go test -race -p 2 ./cmd -run 'TestReplicateDelete\|TestReplicationMRF\|TestReplicationDeleteQueueFull' -count=1 -v` | 通过,无数据竞争报告 | +| `go build -p 2 ./...` | 通过 | +| `go vet -p 2 ./cmd ./internal/bucket/replication` | 通过 | +| golangci-lint 2.13.1,仓库配置,`--build-tags kqueue` | 通过,0 issues | +| 原容量失败的六项 DELETE 测试,按完整测试名精确复跑 | 六项全部通过 | - 28 个顶层定向测试通过,包含 198 个通过条目(含子测试)。 - 单盘、16 盘真实 erasure 存储;真实源端签名 DELETE、minio-go HTTP、源/目标 marker 元数据。 @@ -50,7 +60,7 @@ **边界:** 目标为受控 HTTP 适配器,调用真实 ObjectLayer;测试显式消费队列并执行生产复制函数,直接驱动 MRF 保存,没有启动后台定时器和完整 worker 循环。这是三端点 fan-out 与磁盘恢复验证,不是三台独立 SILO 进程的站点复制集群、接收端认证或进程崩溃验收。 -6 项无关广义 DELETE 测试在种子数据写入时触发宿主机容量阈值,该次扩大测试未通过;R6 存储夹具使用仓库现有容量适配器,数据仍真实落盘。一次测试链接遇到磁盘空间耗尽,清理可确认属于本任务的旧 Go 缓存后复验。详情和中间失败记录:[verification-notes.md](verification-notes.md)。 +首次扩大测试中,六项无关 DELETE 测试在种子数据写入时触发宿主机容量阈值,该次测试未通过。空间恢复后,保持代码不变精确复跑六项,全部通过;这不等于运行了整个 cmd 测试集。R6 存储夹具使用仓库现有容量适配器,数据仍真实落盘。一次测试链接遇到磁盘空间耗尽,清理可确认属于本任务的旧 Go 缓存后复验。详情和中间失败记录:[verification-notes.md](verification-notes.md)。 ## 仍然独立的事项 diff --git a/docs/investigations/r6/consensus.md b/docs/investigations/r6/consensus.md index 65ace86af..cb7193ff1 100644 --- a/docs/investigations/r6/consensus.md +++ b/docs/investigations/r6/consensus.md @@ -47,3 +47,7 @@ The v2 implementation was completed only after v2 agreement. Codex then found an | N6 prior proof | v2's regex proof is correct only for a single target. The immutable raw reviews and executable counterexample are both retained. | Only v3's three field assignments and the required invariant remain to be applied after this record. All earlier compatible refinements and acceptance limits still stand. + +## Implementation completion, 2026-09-16 CST + +The paragraph above records the state at approval time. The agreed v3 assignments and mandatory payload invariant have since been implemented and verified. After rebasing onto `af2b1794d38d9e70e1d2c3ee692426e4b6cab4bd`, all five R6 source/test hashes remained identical. Source commit `cf381a7151ef25fc95ace5fedcd767fa19410de2` passed the scoped regression, race, build, vet and lint checks, plus the six formerly capacity-blocked DELETE tests. See [README.md](README.md) and its linked machine verification records. Subsequent changes only document this evidence; no new production-plan deviation was introduced. diff --git a/docs/investigations/r6/final-source-manifest.json b/docs/investigations/r6/final-source-manifest.json new file mode 100644 index 000000000..7528e2f5c --- /dev/null +++ b/docs/investigations/r6/final-source-manifest.json @@ -0,0 +1,39 @@ +{ + "recorded_at_utc": "2026-09-15T16:31:10.707976+00:00", + "research_base": "9ebe81c1b3611f9cc73e676b5b741c2be62c467a", + "integration_base": "af2b1794d38d9e70e1d2c3ee692426e4b6cab4bd", + "verified_source_commit": "cf381a7151ef25fc95ace5fedcd767fa19410de2", + "branch": "codex/r6-delete-marker-mrf", + "source_sha256": { + "cmd/bucket-replication.go": "999c2818a8980cbeb55cfcbc244840069fb44e042b4b4d6ef7668c2660ce31e0", + "cmd/bucket-replication-utils.go": "365641c760901641e8320cc5123697ab92a46f1add612048b991ed2d1cfad43b", + "cmd/replication-delete-marker_test.go": "d967787804d558ac6266b113228fdf4a4f9fcb7cab39138a4fb07558814ccca4", + "cmd/replication-delete-operation_test.go": "2888a04a543324776041316de2821f388d28c3c1a6f5d0031e5ac9d34f58d504", + "cmd/replication-delete-mrf_test.go": "5e160f7e19cbbb8cd5fa4e7ffd9cff9e09361b3fc4c5ee5ae61458f99c777781" + }, + "source_patch_sha256": "f374335371c9c6bed00fe453a6e10270bedcc1f1f391bfc09338664b3f50d886", + "source_patch_raw_path": "/Users/vonng/tmp/silo-r6-20260915-aa3f/final-integrated-source.diff", + "dependency_and_lint_config_sha256": { + "go.mod": "8351bb86377a8deed95fd0bd67c1e363e11d33f8da7631cea8f68cea11259976", + "go.sum": "2287ce975cab91f92f59a3b6e164d49325f141f35d480b8c3d23f796df3772b2", + ".golangci.yml": "b18a20eb81da3e8714ba3d9cdf404913b7c8e011fe6958ff7f10e6410a4573ba" + }, + "final_plan": { + "path": "plan-v3.md", + "sha256": "dc9a67fc91b3113fa35218a2f903455807430cc4daf9c78a88d0be6b8fc27058" + }, + "opus_metadata_sha256": { + "opus-v1.metadata.json": "22b8d6b27a1112441b070bae096641eb5f0d2f954ddfe3fd88e17e0377b577f4", + "opus-v2.metadata.json": "9b6d7a44578fa6be9cc341a045db0c73fc7439ef7e0ee5a8aa99e66250493cc8", + "opus-v3.metadata.json": "678ed800aae399d627a19e9802aeb7109bf51ee539163263c2fec06aba4efbc3" + }, + "verification_record_sha256": { + "verification/baseline-verification.json": "700dddb0a9efab01a0524a51736fecd457ed81e689926c842fa2de6838f1e1d6", + "verification/rebased-delete-verification.json": "f370ba2c9c0b9d6695cf2701f97dbd774a336f833d474992f2c390e67d9cbf58", + "verification/rebased-verification.json": "4d9ad5688d45cba15fe9632590854a48e6fca048f5f3556d5edf9a4b1997d9ca" + }, + "go_version": "go version go1.27.1 darwin/arm64", + "GOMAXPROCS": "4", + "verification_source_unchanged": true, + "delivery_note": "The follow-up commit records verification documents only; all production and test files match verified_source_commit." +} diff --git a/docs/investigations/r6/verification-notes.md b/docs/investigations/r6/verification-notes.md index 9032e4690..530b01d0f 100644 --- a/docs/investigations/r6/verification-notes.md +++ b/docs/investigations/r6/verification-notes.md @@ -26,7 +26,7 @@ The multi-target fixture checks one target complete while the other fails/offlin ## Environment failures and fixes to test inputs -- The host reports a high used-space percentage. Six unrelated broad DELETE tests abort at seed PutObject with `Storage reached its minimum free drive threshold`: TestDeleteObjectConditional, TestDeleteObjectConditionalWithReadQuorumFailure, TestDeleteObjectConditionalVersioned, TestDeleteObjectsVersioned, TestDeleteObject, TestDeleteObjectVersionMarker. See replication-suite.log. That exploratory broad suite was not a pass. No unrelated production capacity policy or those tests were changed. +- During the exploratory broad run, the host reported a high used-space percentage. Six unrelated DELETE tests aborted at seed PutObject with `Storage reached its minimum free drive threshold`: TestDeleteObjectConditional, TestDeleteObjectConditionalWithReadQuorumFailure, TestDeleteObjectConditionalVersioned, TestDeleteObjectsVersioned, TestDeleteObject, TestDeleteObjectVersionMarker. See replication-suite.log. That exploratory broad suite was not a pass. After host free space recovered, all six exact tests passed on the final integrated source, without changing those tests or production capacity policy; see verification/rebased-delete-verification.json and rebased-delete-recheck.log. This recheck is not a full cmd-suite run. - R6 storage fixtures reuse the repository's tagTestCapacityDisk adapter: Total/Used are adapted to the actual free space; object/MRF metadata and data still go to real disks. This isolates host occupancy from replication semantics. - A test link later failed with `no space left on device` (head-exits.log). Thirteen old Go cache artifacts containing this exact worktree path, totaling 1495 MiB, were removed after identification. No repository data or other tasks' cache entries were selected. The manifest is owned-cache-cleanup.json in the raw evidence directory. Available space also changed due to unrelated host activity; we do not attribute the whole increase to this cleanup. - The HEAD quorum test initially used HTTP 503 and expected a quorum-code fall-through. Existing ErrorRespToObjectError classifies 503 as backend-down before its S3 code conversion. Final tests separately cover 503 not-ready failure and a non-503 SlowDownRead code reaching the existing quorum branch. No production change to that classification was made. diff --git a/docs/investigations/r6/verification/rebased-build.log b/docs/investigations/r6/verification/rebased-build.log new file mode 100644 index 000000000..e69de29bb diff --git a/docs/investigations/r6/verification/rebased-delete-recheck.log b/docs/investigations/r6/verification/rebased-delete-recheck.log new file mode 100644 index 000000000..394a1b61c --- /dev/null +++ b/docs/investigations/r6/verification/rebased-delete-recheck.log @@ -0,0 +1,30 @@ +=== RUN TestDeleteObjectConditional +=== RUN TestDeleteObjectConditional/wrong-etag-precondition-failed +=== RUN TestDeleteObjectConditional/missing-object-not-found +=== RUN TestDeleteObjectConditional/correct-etag-succeeds +--- PASS: TestDeleteObjectConditional (0.08s) + --- PASS: TestDeleteObjectConditional/wrong-etag-precondition-failed (0.00s) + --- PASS: TestDeleteObjectConditional/missing-object-not-found (0.00s) + --- PASS: TestDeleteObjectConditional/correct-etag-succeeds (0.00s) +=== RUN TestDeleteObjectConditionalWithReadQuorumFailure +--- PASS: TestDeleteObjectConditionalWithReadQuorumFailure (0.07s) +=== RUN TestDeleteObjectConditionalVersioned +=== RUN TestDeleteObjectConditionalVersioned/wildcard-on-delete-marker-latest +=== RUN TestDeleteObjectConditionalVersioned/explicit-version-selection +=== RUN TestDeleteObjectConditionalVersioned/missing-version +=== RUN TestDeleteObjectConditionalVersioned/missing-version-absent-key +=== RUN TestDeleteObjectConditionalVersioned/wildcard-on-explicit-delete-marker-version +--- PASS: TestDeleteObjectConditionalVersioned (0.13s) + --- PASS: TestDeleteObjectConditionalVersioned/wildcard-on-delete-marker-latest (0.01s) + --- PASS: TestDeleteObjectConditionalVersioned/explicit-version-selection (0.02s) + --- PASS: TestDeleteObjectConditionalVersioned/missing-version (0.01s) + --- PASS: TestDeleteObjectConditionalVersioned/missing-version-absent-key (0.00s) + --- PASS: TestDeleteObjectConditionalVersioned/wildcard-on-explicit-delete-marker-version (0.01s) +=== RUN TestDeleteObjectsVersioned +--- PASS: TestDeleteObjectsVersioned (0.08s) +=== RUN TestDeleteObject +--- PASS: TestDeleteObject (0.45s) +=== RUN TestDeleteObjectVersionMarker +--- PASS: TestDeleteObjectVersionMarker (0.25s) +PASS +ok github.com/minio/minio/cmd 3.066s diff --git a/docs/investigations/r6/verification/rebased-delete-verification.json b/docs/investigations/r6/verification/rebased-delete-verification.json new file mode 100644 index 000000000..bb4e81abc --- /dev/null +++ b/docs/investigations/r6/verification/rebased-delete-verification.json @@ -0,0 +1,32 @@ +{ + "baseline": "cf381a7151ef25fc95ace5fedcd767fa19410de2", + "source_sha256": { + "cmd/bucket-replication.go": "999c2818a8980cbeb55cfcbc244840069fb44e042b4b4d6ef7668c2660ce31e0", + "cmd/bucket-replication-utils.go": "365641c760901641e8320cc5123697ab92a46f1add612048b991ed2d1cfad43b", + "cmd/replication-delete-marker_test.go": "d967787804d558ac6266b113228fdf4a4f9fcb7cab39138a4fb07558814ccca4", + "cmd/replication-delete-operation_test.go": "2888a04a543324776041316de2821f388d28c3c1a6f5d0031e5ac9d34f58d504", + "cmd/replication-delete-mrf_test.go": "5e160f7e19cbbb8cd5fa4e7ffd9cff9e09361b3fc4c5ee5ae61458f99c777781" + }, + "checks": [ + { + "name": "delete-recheck", + "command": [ + "go", + "test", + "-p", + "2", + "./cmd", + "-run", + "^(TestDeleteObjectConditional|TestDeleteObjectConditionalWithReadQuorumFailure|TestDeleteObjectConditionalVersioned|TestDeleteObjectsVersioned|TestDeleteObject|TestDeleteObjectVersionMarker)$", + "-count=1", + "-v" + ], + "exit_code": 0, + "seconds": 11.058, + "log": "/Users/vonng/tmp/silo-r6-20260915-aa3f/rebased-delete-recheck.log", + "log_sha256": "657a04bc3f5143f3355471f46a034ca234648374ca876927e58e5a755613c674", + "finished_at_utc": "2026-09-15T16:30:06.615423+00:00" + } + ], + "source_unchanged": true +} diff --git a/docs/investigations/r6/verification/rebased-lint.log b/docs/investigations/r6/verification/rebased-lint.log new file mode 100644 index 000000000..6a3ebaa7e --- /dev/null +++ b/docs/investigations/r6/verification/rebased-lint.log @@ -0,0 +1 @@ +0 issues. diff --git a/docs/investigations/r6/verification/rebased-race.log b/docs/investigations/r6/verification/rebased-race.log new file mode 100644 index 000000000..b91a048d5 --- /dev/null +++ b/docs/investigations/r6/verification/rebased-race.log @@ -0,0 +1,276 @@ +=== RUN TestReplicateDeleteMarkerPurge +=== RUN TestReplicateDeleteMarkerPurge/recover_legacy_false +=== RUN TestReplicateDeleteMarkerPurge/recover_legacy_true +--- PASS: TestReplicateDeleteMarkerPurge (0.56s) + --- PASS: TestReplicateDeleteMarkerPurge/recover_legacy_false (0.29s) + --- PASS: TestReplicateDeleteMarkerPurge/recover_legacy_true (0.27s) +=== RUN TestReplicateDeleteMarkerTargetSemantics +=== RUN TestReplicateDeleteMarkerTargetSemantics/existing_marker_is_idempotent +=== RUN TestReplicateDeleteMarkerTargetSemantics/purge_removes_an_existing_marker +=== RUN TestReplicateDeleteMarkerTargetSemantics/purge_forbidden +=== RUN TestReplicateDeleteMarkerTargetSemantics/purge_method_rejected +=== RUN TestReplicateDeleteMarkerTargetSemantics/purge_unavailable +--- PASS: TestReplicateDeleteMarkerTargetSemantics (0.09s) + --- PASS: TestReplicateDeleteMarkerTargetSemantics/existing_marker_is_idempotent (0.00s) + --- PASS: TestReplicateDeleteMarkerTargetSemantics/purge_removes_an_existing_marker (0.00s) + --- PASS: TestReplicateDeleteMarkerTargetSemantics/purge_forbidden (0.00s) + --- PASS: TestReplicateDeleteMarkerTargetSemantics/purge_method_rejected (0.00s) + --- PASS: TestReplicateDeleteMarkerTargetSemantics/purge_unavailable (0.09s) +=== RUN TestReplicationMRFMarkerRecovery +=== RUN TestReplicationMRFMarkerRecovery/canonical + replication-delete-mrf_test.go:485: ErasureSD: canonical recovered; 1 target(s), persisted MRF, source/target metadata checked +goroutine 5732 [running]: +runtime/debug.Stack() + /opt/homebrew/Cellar/go/1.27.1/libexec/src/runtime/debug/stack.go:26 +0x6c +runtime/debug.PrintStack() + /opt/homebrew/Cellar/go/1.27.1/libexec/src/runtime/debug/stack.go:18 +0x24 +github.com/minio/minio/internal/ioutil.SafeClose[...](...) + /Users/vonng/.codex/worktrees/aa3f/silo/internal/ioutil/ioutil.go:470 +github.com/minio/minio/internal/logger/target/http.(*Target).Cancel(0xc001231860) + /Users/vonng/.codex/worktrees/aa3f/silo/internal/logger/target/http/http.go:630 +0x98 +github.com/minio/minio/cmd.replicationTestAudit.func2() + /Users/vonng/.codex/worktrees/aa3f/silo/cmd/replication-delete-mrf_test.go:593 +0xa4 +github.com/minio/minio/cmd.testReplicationMRFMarkerRecovery(0xc00137a248, {0x10a44f2c0, _}, {_, _}, {_, _}, {_, _}, {{0x10687dafa, ...}, ...}, ...) + /Users/vonng/.codex/worktrees/aa3f/silo/cmd/replication-delete-mrf_test.go:486 +0x5cb8 +github.com/minio/minio/cmd.TestReplicationMRFMarkerRecovery.func1.1({0x10a44f2c0, 0xc002e19930}, {0x106879eea, 0x9}, {0xc002bf60c0, 0x3c}, {0x10a3f8e30, _}, {{0x10687dafa, 0xa}, ...}, ...) + /Users/vonng/.codex/worktrees/aa3f/silo/cmd/replication-delete-mrf_test.go:53 +0x124 +github.com/minio/minio/cmd.ExecObjectLayerAPITest({0xc00137a248, 0xc002e65e90, {0xc002bf5cd0, 0x1, 0x1}, 0x0, {0x0, 0x0, 0x0, {0x0, ...}, ...}}) + /Users/vonng/.codex/worktrees/aa3f/silo/cmd/test-utils_test.go:1789 +0x32c +github.com/minio/minio/cmd.TestReplicationMRFMarkerRecovery.func1(0xc00137a248) + /Users/vonng/.codex/worktrees/aa3f/silo/cmd/replication-delete-mrf_test.go:52 +0x15c +testing.tRunner(0xc00137a248, 0xc002e65d70) + /opt/homebrew/Cellar/go/1.27.1/libexec/src/testing/testing.go:2193 +0x168 +created by testing.(*T).Run in goroutine 5731 + /opt/homebrew/Cellar/go/1.27.1/libexec/src/testing/testing.go:2258 +0x7c0 + replication-delete-mrf_test.go:485: Erasure: canonical recovered; 1 target(s), persisted MRF, source/target metadata checked +goroutine 9170 [running]: +runtime/debug.Stack() + /opt/homebrew/Cellar/go/1.27.1/libexec/src/runtime/debug/stack.go:26 +0x6c +runtime/debug.PrintStack() + /opt/homebrew/Cellar/go/1.27.1/libexec/src/runtime/debug/stack.go:18 +0x24 +github.com/minio/minio/internal/ioutil.SafeClose[...](...) + /Users/vonng/.codex/worktrees/aa3f/silo/internal/ioutil/ioutil.go:470 +github.com/minio/minio/internal/logger/target/http.(*Target).Cancel(0xc000cce000) + /Users/vonng/.codex/worktrees/aa3f/silo/internal/logger/target/http/http.go:630 +0x98 +created by github.com/minio/minio/internal/logger.cancelTargets in goroutine 5732 + /Users/vonng/.codex/worktrees/aa3f/silo/internal/logger/targets.go:213 +0x3c +=== RUN TestReplicationMRFMarkerRecovery/lock-failure + replication-delete-mrf_test.go:485: ErasureSD: lock-failure recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: lock-failure recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/empty-info +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/not-a-marker +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-version +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-bucket +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-object +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/zero-modtime +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/missing +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/read-error +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/empty-info#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/not-a-marker#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-version#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-bucket#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-object#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/zero-modtime#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/missing#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/read-error#01 +=== RUN TestReplicationMRFMarkerRecovery/legacy + replication-delete-mrf_test.go:485: ErasureSD: legacy recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: legacy recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/unrecorded-purge + replication-delete-mrf_test.go:485: ErasureSD: unrecorded-purge recovered; 2 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: unrecorded-purge recovered; 2 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/two-targets + replication-delete-mrf_test.go:485: ErasureSD: two-targets recovered; 2 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: two-targets recovered; 2 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/two-targets-offline + replication-delete-mrf_test.go:485: ErasureSD: two-targets-offline recovered; 2 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: two-targets-offline recovered; 2 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/replica-source + replication-delete-mrf_test.go:485: ErasureSD: replica-source recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: replica-source recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/lost-reply-canonical + replication-delete-mrf_test.go:485: ErasureSD: lost-reply-canonical recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: lost-reply-canonical recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/lost-reply-legacy + replication-delete-mrf_test.go:485: ErasureSD: lost-reply-legacy recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: lost-reply-legacy recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/creation + replication-delete-mrf_test.go:485: ErasureSD: creation recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: creation recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/partial-creation-block +=== RUN TestReplicationMRFMarkerRecovery/retry-budget-and-scanner + replication-delete-mrf_test.go:485: ErasureSD: retry-budget-and-scanner recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: retry-budget-and-scanner recovered; 1 target(s), persisted MRF, source/target metadata checked +--- PASS: TestReplicationMRFMarkerRecovery (6.77s) + --- PASS: TestReplicationMRFMarkerRecovery/canonical (0.31s) + --- PASS: TestReplicationMRFMarkerRecovery/lock-failure (0.29s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata (1.88s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/empty-info (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/not-a-marker (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-version (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-bucket (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-object (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/zero-modtime (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/missing (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/read-error (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/empty-info#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/not-a-marker#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-version#01 (0.11s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-bucket#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-object#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/zero-modtime#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/missing#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/read-error#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/legacy (0.27s) + --- PASS: TestReplicationMRFMarkerRecovery/unrecorded-purge (0.35s) + --- PASS: TestReplicationMRFMarkerRecovery/two-targets (0.41s) + --- PASS: TestReplicationMRFMarkerRecovery/two-targets-offline (0.43s) + --- PASS: TestReplicationMRFMarkerRecovery/replica-source (0.40s) + --- PASS: TestReplicationMRFMarkerRecovery/lost-reply-canonical (0.54s) + --- PASS: TestReplicationMRFMarkerRecovery/lost-reply-legacy (0.75s) + --- PASS: TestReplicationMRFMarkerRecovery/creation (0.39s) + --- PASS: TestReplicationMRFMarkerRecovery/partial-creation-block (0.33s) + --- PASS: TestReplicationMRFMarkerRecovery/retry-budget-and-scanner (0.41s) +=== RUN TestReplicationDeleteQueueFullRetryBudget +--- PASS: TestReplicationDeleteQueueFullRetryBudget (0.00s) +=== RUN TestReplicateDeleteOperationExits +=== RUN TestReplicateDeleteOperationExits/marker-creation/pending-success +=== RUN TestReplicateDeleteOperationExits/marker-creation/completed-creation +=== RUN TestReplicateDeleteOperationExits/marker-creation/existing-marker +=== RUN TestReplicateDeleteOperationExits/marker-creation/head-read-quorum +=== RUN TestReplicateDeleteOperationExits/marker-creation/replica-creation-status +=== RUN TestReplicateDeleteOperationExits/marker-creation/head-unavailable +=== RUN TestReplicateDeleteOperationExits/marker-creation/head-forbidden +=== RUN TestReplicateDeleteOperationExits/marker-creation/delete-forbidden +=== RUN TestReplicateDeleteOperationExits/marker-creation/delete-method-rejected +=== RUN TestReplicateDeleteOperationExits/marker-creation/delete-unavailable +=== RUN TestReplicateDeleteOperationExits/marker-creation/offline +=== RUN TestReplicateDeleteOperationExits/marker-creation/retry-failed +=== RUN TestReplicateDeleteOperationExits/marker-creation/purge-complete +=== RUN TestReplicateDeleteOperationExits/marker-creation/resync-success +=== RUN TestReplicateDeleteOperationExits/marker-creation/resync-already-purged +=== RUN TestReplicateDeleteOperationExits/marker-creation/resync-failure +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/pending-success +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/completed-creation +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/existing-marker +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/head-read-quorum +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/replica-creation-status +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/head-unavailable +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/head-forbidden +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/delete-forbidden +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/delete-method-rejected +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/delete-unavailable +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/offline +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/retry-failed +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/purge-complete +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/resync-success +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/resync-already-purged +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/resync-failure +=== RUN TestReplicateDeleteOperationExits/marker-purge/pending-success +=== RUN TestReplicateDeleteOperationExits/marker-purge/completed-creation +=== RUN TestReplicateDeleteOperationExits/marker-purge/existing-marker +=== RUN TestReplicateDeleteOperationExits/marker-purge/head-read-quorum +=== RUN TestReplicateDeleteOperationExits/marker-purge/replica-creation-status +=== RUN TestReplicateDeleteOperationExits/marker-purge/head-unavailable +=== RUN TestReplicateDeleteOperationExits/marker-purge/head-forbidden +=== RUN TestReplicateDeleteOperationExits/marker-purge/delete-forbidden +=== RUN TestReplicateDeleteOperationExits/marker-purge/delete-method-rejected +=== RUN TestReplicateDeleteOperationExits/marker-purge/delete-unavailable +=== RUN TestReplicateDeleteOperationExits/marker-purge/offline +=== RUN TestReplicateDeleteOperationExits/marker-purge/retry-failed +=== RUN TestReplicateDeleteOperationExits/marker-purge/purge-complete +=== RUN TestReplicateDeleteOperationExits/marker-purge/resync-success +=== RUN TestReplicateDeleteOperationExits/marker-purge/resync-already-purged +=== RUN TestReplicateDeleteOperationExits/marker-purge/resync-failure +=== RUN TestReplicateDeleteOperationExits/object-purge/pending-success +=== RUN TestReplicateDeleteOperationExits/object-purge/completed-creation +=== RUN TestReplicateDeleteOperationExits/object-purge/existing-marker +=== RUN TestReplicateDeleteOperationExits/object-purge/head-read-quorum +=== RUN TestReplicateDeleteOperationExits/object-purge/replica-creation-status +=== RUN TestReplicateDeleteOperationExits/object-purge/head-unavailable +=== RUN TestReplicateDeleteOperationExits/object-purge/head-forbidden +=== RUN TestReplicateDeleteOperationExits/object-purge/delete-forbidden +=== RUN TestReplicateDeleteOperationExits/object-purge/delete-method-rejected +=== RUN TestReplicateDeleteOperationExits/object-purge/delete-unavailable +=== RUN TestReplicateDeleteOperationExits/object-purge/offline +=== RUN TestReplicateDeleteOperationExits/object-purge/retry-failed +=== RUN TestReplicateDeleteOperationExits/object-purge/purge-complete +=== RUN TestReplicateDeleteOperationExits/object-purge/resync-success +=== RUN TestReplicateDeleteOperationExits/object-purge/resync-already-purged +=== RUN TestReplicateDeleteOperationExits/object-purge/resync-failure +--- PASS: TestReplicateDeleteOperationExits (0.43s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/pending-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/completed-creation (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/existing-marker (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/head-read-quorum (0.08s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/replica-creation-status (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/head-unavailable (0.02s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/head-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/delete-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/delete-method-rejected (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/delete-unavailable (0.02s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/offline (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/retry-failed (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/purge-complete (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/resync-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/resync-already-purged (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/resync-failure (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/pending-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/completed-creation (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/existing-marker (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/head-read-quorum (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/replica-creation-status (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/head-unavailable (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/head-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/delete-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/delete-method-rejected (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/delete-unavailable (0.08s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/offline (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/retry-failed (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/purge-complete (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/resync-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/resync-already-purged (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/resync-failure (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/pending-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/completed-creation (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/existing-marker (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/head-read-quorum (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/replica-creation-status (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/head-unavailable (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/head-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/delete-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/delete-method-rejected (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/delete-unavailable (0.12s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/offline (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/retry-failed (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/purge-complete (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/resync-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/resync-already-purged (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/resync-failure (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/pending-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/completed-creation (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/existing-marker (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/head-read-quorum (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/replica-creation-status (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/head-unavailable (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/head-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/delete-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/delete-method-rejected (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/delete-unavailable (0.07s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/offline (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/retry-failed (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/purge-complete (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/resync-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/resync-already-purged (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/resync-failure (0.00s) +=== RUN TestReplicateDeletePurgeMissingTargetState +--- PASS: TestReplicateDeletePurgeMissingTargetState (0.00s) +=== RUN TestReplicationMRFDropsVisible +=== RUN TestReplicationMRFDropsVisible/node +=== RUN TestReplicationMRFDropsVisible/bucket +--- PASS: TestReplicationMRFDropsVisible (0.01s) + --- PASS: TestReplicationMRFDropsVisible/node (0.00s) + --- PASS: TestReplicationMRFDropsVisible/bucket (0.00s) +PASS +ok github.com/minio/minio/cmd 11.683s diff --git a/docs/investigations/r6/verification/rebased-scope.log b/docs/investigations/r6/verification/rebased-scope.log new file mode 100644 index 000000000..32cfe5b38 --- /dev/null +++ b/docs/investigations/r6/verification/rebased-scope.log @@ -0,0 +1,444 @@ +=== RUN TestReplicatedInfos +--- PASS: TestReplicatedInfos (0.00s) +=== RUN TestReplicationResync +--- PASS: TestReplicationResync (0.00s) +=== RUN TestReplicationResyncwrapper +--- PASS: TestReplicationResyncwrapper (0.00s) +=== RUN TestReplicationValidationObjectUsesRulePrefix +=== RUN TestReplicationValidationObjectUsesRulePrefix/empty_prefix +=== RUN TestReplicationValidationObjectUsesRulePrefix/filter_prefix +=== RUN TestReplicationValidationObjectUsesRulePrefix/and_prefix +--- PASS: TestReplicationValidationObjectUsesRulePrefix (0.00s) + --- PASS: TestReplicationValidationObjectUsesRulePrefix/empty_prefix (0.00s) + --- PASS: TestReplicationValidationObjectUsesRulePrefix/filter_prefix (0.00s) + --- PASS: TestReplicationValidationObjectUsesRulePrefix/and_prefix (0.00s) +=== RUN TestResyncBucketFinalize +=== RUN TestResyncBucketFinalize/persists_complete_counts +=== RUN TestResyncBucketFinalize/parent_cancel_during_drain_downgrades_to_failed +=== RUN TestResyncBucketFinalize/user_cancel_persists_canceled +--- PASS: TestResyncBucketFinalize (0.13s) + --- PASS: TestResyncBucketFinalize/persists_complete_counts (0.01s) + --- PASS: TestResyncBucketFinalize/parent_cancel_during_drain_downgrades_to_failed (0.01s) + --- PASS: TestResyncBucketFinalize/user_cancel_persists_canceled (0.01s) +=== RUN TestResyncFinishDrainsResults +--- PASS: TestResyncFinishDrainsResults (0.00s) +=== RUN TestResyncFinishWaitsForInflightWorker +--- PASS: TestResyncFinishWaitsForInflightWorker (0.00s) +=== RUN TestResyncResultFor +=== RUN TestResyncResultFor/completed_update +=== RUN TestResyncResultFor/failed_update_over_existing_version +=== RUN TestResyncResultFor/completed_but_errored_is_a_failure +=== RUN TestResyncResultFor/delete_failed +=== RUN TestResyncResultFor/delete_marker_replicated_counts_zero_bytes +=== RUN TestResyncResultFor/arn_not_attempted_is_a_failure +=== RUN TestResyncResultFor/completed_with_zero_size_falls_back_to_object_size +=== RUN TestResyncResultFor/version_purge_complete_is_a_success +=== RUN TestResyncResultFor/version_purge_failed_is_a_failure +=== RUN TestResyncResultFor/benign_duplicate_412_is_a_success +--- PASS: TestResyncResultFor (0.00s) + --- PASS: TestResyncResultFor/completed_update (0.00s) + --- PASS: TestResyncResultFor/failed_update_over_existing_version (0.00s) + --- PASS: TestResyncResultFor/completed_but_errored_is_a_failure (0.00s) + --- PASS: TestResyncResultFor/delete_failed (0.00s) + --- PASS: TestResyncResultFor/delete_marker_replicated_counts_zero_bytes (0.00s) + --- PASS: TestResyncResultFor/arn_not_attempted_is_a_failure (0.00s) + --- PASS: TestResyncResultFor/completed_with_zero_size_falls_back_to_object_size (0.00s) + --- PASS: TestResyncResultFor/version_purge_complete_is_a_success (0.00s) + --- PASS: TestResyncResultFor/version_purge_failed_is_a_failure (0.00s) + --- PASS: TestResyncResultFor/benign_duplicate_412_is_a_success (0.00s) +=== RUN TestReplicationActionForTargetRetentionRemoval +=== RUN TestReplicationActionForTargetRetentionRemoval/removal_confirmed_by_destination +=== RUN TestReplicationActionForTargetRetentionRemoval/destination_still_holds_the_retention_hidden_from_HEAD +=== RUN TestReplicationActionForTargetRetentionRemoval/retention_hidden_from_HEAD_by_permissions +=== RUN TestReplicationActionForTargetRetentionRemoval/destination_reports_no_object_lock_configuration +=== RUN TestReplicationActionForTargetRetentionRemoval/version_never_had_retention_is_not_confirmed +--- PASS: TestReplicationActionForTargetRetentionRemoval (0.00s) + --- PASS: TestReplicationActionForTargetRetentionRemoval/removal_confirmed_by_destination (0.00s) + --- PASS: TestReplicationActionForTargetRetentionRemoval/destination_still_holds_the_retention_hidden_from_HEAD (0.00s) + --- PASS: TestReplicationActionForTargetRetentionRemoval/retention_hidden_from_HEAD_by_permissions (0.00s) + --- PASS: TestReplicationActionForTargetRetentionRemoval/destination_reports_no_object_lock_configuration (0.00s) + --- PASS: TestReplicationActionForTargetRetentionRemoval/version_never_had_retention_is_not_confirmed (0.00s) +=== RUN TestReplicationActionForTargetNullVersionResync +=== RUN TestReplicationActionForTargetNullVersionResync/destination_holds_retention +=== RUN TestReplicationActionForTargetNullVersionResync/retention_read_denied +--- PASS: TestReplicationActionForTargetNullVersionResync (0.00s) + --- PASS: TestReplicationActionForTargetNullVersionResync/destination_holds_retention (0.00s) + --- PASS: TestReplicationActionForTargetNullVersionResync/retention_read_denied (0.00s) +=== RUN TestReplicationActionForTargetTimestampOnlyRemoval +=== RUN TestReplicationActionForTargetTimestampOnlyRemoval/retention_hidden_from_HEAD_by_permissions +=== RUN TestReplicationActionForTargetTimestampOnlyRemoval/destination_still_holds_the_retention +=== RUN TestReplicationActionForTargetTimestampOnlyRemoval/removal_confirmed_by_destination +--- PASS: TestReplicationActionForTargetTimestampOnlyRemoval (0.00s) + --- PASS: TestReplicationActionForTargetTimestampOnlyRemoval/retention_hidden_from_HEAD_by_permissions (0.00s) + --- PASS: TestReplicationActionForTargetTimestampOnlyRemoval/destination_still_holds_the_retention (0.00s) + --- PASS: TestReplicationActionForTargetTimestampOnlyRemoval/removal_confirmed_by_destination (0.00s) +=== RUN TestReplicateDeleteMarkerPurge +=== RUN TestReplicateDeleteMarkerPurge/recover_legacy_false +=== RUN TestReplicateDeleteMarkerPurge/recover_legacy_true +--- PASS: TestReplicateDeleteMarkerPurge (0.61s) + --- PASS: TestReplicateDeleteMarkerPurge/recover_legacy_false (0.31s) + --- PASS: TestReplicateDeleteMarkerPurge/recover_legacy_true (0.30s) +=== RUN TestReplicateDeleteMarkerTargetSemantics +=== RUN TestReplicateDeleteMarkerTargetSemantics/existing_marker_is_idempotent +=== RUN TestReplicateDeleteMarkerTargetSemantics/purge_removes_an_existing_marker +=== RUN TestReplicateDeleteMarkerTargetSemantics/purge_forbidden +=== RUN TestReplicateDeleteMarkerTargetSemantics/purge_method_rejected +=== RUN TestReplicateDeleteMarkerTargetSemantics/purge_unavailable +--- PASS: TestReplicateDeleteMarkerTargetSemantics (0.15s) + --- PASS: TestReplicateDeleteMarkerTargetSemantics/existing_marker_is_idempotent (0.00s) + --- PASS: TestReplicateDeleteMarkerTargetSemantics/purge_removes_an_existing_marker (0.00s) + --- PASS: TestReplicateDeleteMarkerTargetSemantics/purge_forbidden (0.00s) + --- PASS: TestReplicateDeleteMarkerTargetSemantics/purge_method_rejected (0.00s) + --- PASS: TestReplicateDeleteMarkerTargetSemantics/purge_unavailable (0.15s) +=== RUN TestReplicationMRFMarkerRecovery +=== RUN TestReplicationMRFMarkerRecovery/canonical + replication-delete-mrf_test.go:485: ErasureSD: canonical recovered; 1 target(s), persisted MRF, source/target metadata checked +goroutine 6994 [running]: +runtime/debug.Stack() + /opt/homebrew/Cellar/go/1.27.1/libexec/src/runtime/debug/stack.go:26 +0x64 +runtime/debug.PrintStack() + /opt/homebrew/Cellar/go/1.27.1/libexec/src/runtime/debug/stack.go:18 +0x1c +github.com/minio/minio/internal/ioutil.SafeClose[...](...) + /Users/vonng/.codex/worktrees/aa3f/silo/internal/ioutil/ioutil.go:470 +github.com/minio/minio/internal/logger/target/http.(*Target).Cancel(0x132a6cb8d520) + /Users/vonng/.codex/worktrees/aa3f/silo/internal/logger/target/http/http.go:630 +0x74 +created by github.com/minio/minio/internal/logger.cancelTargets in goroutine 6639 + /Users/vonng/.codex/worktrees/aa3f/silo/internal/logger/targets.go:213 +0x28 + replication-delete-mrf_test.go:485: Erasure: canonical recovered; 1 target(s), persisted MRF, source/target metadata checked +goroutine 10069 [running]: +runtime/debug.Stack() + /opt/homebrew/Cellar/go/1.27.1/libexec/src/runtime/debug/stack.go:26 +0x64 +runtime/debug.PrintStack() + /opt/homebrew/Cellar/go/1.27.1/libexec/src/runtime/debug/stack.go:18 +0x1c +github.com/minio/minio/internal/ioutil.SafeClose[...](...) + /Users/vonng/.codex/worktrees/aa3f/silo/internal/ioutil/ioutil.go:470 +github.com/minio/minio/internal/logger/target/http.(*Target).Cancel(0x132a6bf75a00) + /Users/vonng/.codex/worktrees/aa3f/silo/internal/logger/target/http/http.go:630 +0x74 +created by github.com/minio/minio/internal/logger.cancelTargets in goroutine 6639 + /Users/vonng/.codex/worktrees/aa3f/silo/internal/logger/targets.go:213 +0x28 +=== RUN TestReplicationMRFMarkerRecovery/lock-failure + replication-delete-mrf_test.go:485: ErasureSD: lock-failure recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: lock-failure recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/empty-info +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/not-a-marker +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-version +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-bucket +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-object +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/zero-modtime +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/missing +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/read-error +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/empty-info#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/not-a-marker#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-version#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-bucket#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-object#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/zero-modtime#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/missing#01 +=== RUN TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/read-error#01 +=== RUN TestReplicationMRFMarkerRecovery/legacy + replication-delete-mrf_test.go:485: ErasureSD: legacy recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: legacy recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/unrecorded-purge + replication-delete-mrf_test.go:485: ErasureSD: unrecorded-purge recovered; 2 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: unrecorded-purge recovered; 2 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/two-targets + replication-delete-mrf_test.go:485: ErasureSD: two-targets recovered; 2 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: two-targets recovered; 2 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/two-targets-offline + replication-delete-mrf_test.go:485: ErasureSD: two-targets-offline recovered; 2 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: two-targets-offline recovered; 2 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/replica-source + replication-delete-mrf_test.go:485: ErasureSD: replica-source recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: replica-source recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/lost-reply-canonical + replication-delete-mrf_test.go:485: ErasureSD: lost-reply-canonical recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: lost-reply-canonical recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/lost-reply-legacy + replication-delete-mrf_test.go:485: ErasureSD: lost-reply-legacy recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: lost-reply-legacy recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/creation + replication-delete-mrf_test.go:485: ErasureSD: creation recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: creation recovered; 1 target(s), persisted MRF, source/target metadata checked +=== RUN TestReplicationMRFMarkerRecovery/partial-creation-block +=== RUN TestReplicationMRFMarkerRecovery/retry-budget-and-scanner + replication-delete-mrf_test.go:485: ErasureSD: retry-budget-and-scanner recovered; 1 target(s), persisted MRF, source/target metadata checked + replication-delete-mrf_test.go:485: Erasure: retry-budget-and-scanner recovered; 1 target(s), persisted MRF, source/target metadata checked +--- PASS: TestReplicationMRFMarkerRecovery (8.35s) + --- PASS: TestReplicationMRFMarkerRecovery/canonical (0.36s) + --- PASS: TestReplicationMRFMarkerRecovery/lock-failure (0.38s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata (1.89s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/empty-info (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/not-a-marker (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-version (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-bucket (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-object (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/zero-modtime (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/missing (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/read-error (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/empty-info#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/not-a-marker#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-version#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-bucket#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/wrong-object#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/zero-modtime#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/missing#01 (0.11s) + --- PASS: TestReplicationMRFMarkerRecovery/invalid-MRF-metadata/read-error#01 (0.10s) + --- PASS: TestReplicationMRFMarkerRecovery/legacy (0.31s) + --- PASS: TestReplicationMRFMarkerRecovery/unrecorded-purge (0.50s) + --- PASS: TestReplicationMRFMarkerRecovery/two-targets (0.64s) + --- PASS: TestReplicationMRFMarkerRecovery/two-targets-offline (0.48s) + --- PASS: TestReplicationMRFMarkerRecovery/replica-source (0.48s) + --- PASS: TestReplicationMRFMarkerRecovery/lost-reply-canonical (0.99s) + --- PASS: TestReplicationMRFMarkerRecovery/lost-reply-legacy (0.72s) + --- PASS: TestReplicationMRFMarkerRecovery/creation (0.48s) + --- PASS: TestReplicationMRFMarkerRecovery/partial-creation-block (0.56s) + --- PASS: TestReplicationMRFMarkerRecovery/retry-budget-and-scanner (0.55s) +=== RUN TestReplicationDeleteQueueFullRetryBudget +--- PASS: TestReplicationDeleteQueueFullRetryBudget (0.00s) +=== RUN TestReplicateDeleteOperationExits +=== RUN TestReplicateDeleteOperationExits/marker-creation/pending-success +=== RUN TestReplicateDeleteOperationExits/marker-creation/completed-creation +=== RUN TestReplicateDeleteOperationExits/marker-creation/existing-marker +=== RUN TestReplicateDeleteOperationExits/marker-creation/head-read-quorum +=== RUN TestReplicateDeleteOperationExits/marker-creation/replica-creation-status +=== RUN TestReplicateDeleteOperationExits/marker-creation/head-unavailable +=== RUN TestReplicateDeleteOperationExits/marker-creation/head-forbidden +=== RUN TestReplicateDeleteOperationExits/marker-creation/delete-forbidden +=== RUN TestReplicateDeleteOperationExits/marker-creation/delete-method-rejected +=== RUN TestReplicateDeleteOperationExits/marker-creation/delete-unavailable +=== RUN TestReplicateDeleteOperationExits/marker-creation/offline +=== RUN TestReplicateDeleteOperationExits/marker-creation/retry-failed +=== RUN TestReplicateDeleteOperationExits/marker-creation/purge-complete +=== RUN TestReplicateDeleteOperationExits/marker-creation/resync-success +=== RUN TestReplicateDeleteOperationExits/marker-creation/resync-already-purged +=== RUN TestReplicateDeleteOperationExits/marker-creation/resync-failure +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/pending-success +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/completed-creation +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/existing-marker +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/head-read-quorum +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/replica-creation-status +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/head-unavailable +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/head-forbidden +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/delete-forbidden +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/delete-method-rejected +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/delete-unavailable +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/offline +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/retry-failed +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/purge-complete +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/resync-success +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/resync-already-purged +=== RUN TestReplicateDeleteOperationExits/legacy-marker-purge/resync-failure +=== RUN TestReplicateDeleteOperationExits/marker-purge/pending-success +=== RUN TestReplicateDeleteOperationExits/marker-purge/completed-creation +=== RUN TestReplicateDeleteOperationExits/marker-purge/existing-marker +=== RUN TestReplicateDeleteOperationExits/marker-purge/head-read-quorum +=== RUN TestReplicateDeleteOperationExits/marker-purge/replica-creation-status +=== RUN TestReplicateDeleteOperationExits/marker-purge/head-unavailable +=== RUN TestReplicateDeleteOperationExits/marker-purge/head-forbidden +=== RUN TestReplicateDeleteOperationExits/marker-purge/delete-forbidden +=== RUN TestReplicateDeleteOperationExits/marker-purge/delete-method-rejected +=== RUN TestReplicateDeleteOperationExits/marker-purge/delete-unavailable +=== RUN TestReplicateDeleteOperationExits/marker-purge/offline +=== RUN TestReplicateDeleteOperationExits/marker-purge/retry-failed +=== RUN TestReplicateDeleteOperationExits/marker-purge/purge-complete +=== RUN TestReplicateDeleteOperationExits/marker-purge/resync-success +=== RUN TestReplicateDeleteOperationExits/marker-purge/resync-already-purged +=== RUN TestReplicateDeleteOperationExits/marker-purge/resync-failure +=== RUN TestReplicateDeleteOperationExits/object-purge/pending-success +=== RUN TestReplicateDeleteOperationExits/object-purge/completed-creation +=== RUN TestReplicateDeleteOperationExits/object-purge/existing-marker +=== RUN TestReplicateDeleteOperationExits/object-purge/head-read-quorum +=== RUN TestReplicateDeleteOperationExits/object-purge/replica-creation-status +=== RUN TestReplicateDeleteOperationExits/object-purge/head-unavailable +=== RUN TestReplicateDeleteOperationExits/object-purge/head-forbidden +=== RUN TestReplicateDeleteOperationExits/object-purge/delete-forbidden +=== RUN TestReplicateDeleteOperationExits/object-purge/delete-method-rejected +=== RUN TestReplicateDeleteOperationExits/object-purge/delete-unavailable +=== RUN TestReplicateDeleteOperationExits/object-purge/offline +=== RUN TestReplicateDeleteOperationExits/object-purge/retry-failed +=== RUN TestReplicateDeleteOperationExits/object-purge/purge-complete +=== RUN TestReplicateDeleteOperationExits/object-purge/resync-success +=== RUN TestReplicateDeleteOperationExits/object-purge/resync-already-purged +=== RUN TestReplicateDeleteOperationExits/object-purge/resync-failure +--- PASS: TestReplicateDeleteOperationExits (0.70s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/pending-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/completed-creation (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/existing-marker (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/head-read-quorum (0.09s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/replica-creation-status (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/head-unavailable (0.19s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/head-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/delete-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/delete-method-rejected (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/delete-unavailable (0.15s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/offline (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/retry-failed (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/purge-complete (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/resync-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/resync-already-purged (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-creation/resync-failure (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/pending-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/completed-creation (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/existing-marker (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/head-read-quorum (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/replica-creation-status (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/head-unavailable (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/head-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/delete-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/delete-method-rejected (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/delete-unavailable (0.07s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/offline (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/retry-failed (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/purge-complete (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/resync-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/resync-already-purged (0.00s) + --- PASS: TestReplicateDeleteOperationExits/legacy-marker-purge/resync-failure (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/pending-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/completed-creation (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/existing-marker (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/head-read-quorum (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/replica-creation-status (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/head-unavailable (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/head-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/delete-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/delete-method-rejected (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/delete-unavailable (0.04s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/offline (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/retry-failed (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/purge-complete (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/resync-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/resync-already-purged (0.00s) + --- PASS: TestReplicateDeleteOperationExits/marker-purge/resync-failure (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/pending-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/completed-creation (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/existing-marker (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/head-read-quorum (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/replica-creation-status (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/head-unavailable (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/head-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/delete-forbidden (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/delete-method-rejected (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/delete-unavailable (0.11s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/offline (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/retry-failed (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/purge-complete (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/resync-success (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/resync-already-purged (0.00s) + --- PASS: TestReplicateDeleteOperationExits/object-purge/resync-failure (0.00s) +=== RUN TestReplicateDeletePurgeMissingTargetState +--- PASS: TestReplicateDeletePurgeMissingTargetState (0.00s) +=== RUN TestReplicationMRFDropsVisible +=== RUN TestReplicationMRFDropsVisible/bucket +=== RUN TestReplicationMRFDropsVisible/node +--- PASS: TestReplicationMRFDropsVisible (0.00s) + --- PASS: TestReplicationMRFDropsVisible/bucket (0.00s) + --- PASS: TestReplicationMRFDropsVisible/node (0.00s) +=== RUN TestReplicationObjectDeleteWorkerAffinity +--- PASS: TestReplicationObjectDeleteWorkerAffinity (0.00s) +=== RUN TestSiteResyncCancelState +--- PASS: TestSiteResyncCancelState (0.00s) +=== RUN TestResyncRecoveryOwnsLeaderContext +=== RUN TestResyncRecoveryOwnsLeaderContext/lose_leader_false +=== RUN TestResyncRecoveryOwnsLeaderContext/lose_leader_true +--- PASS: TestResyncRecoveryOwnsLeaderContext (0.00s) + --- PASS: TestResyncRecoveryOwnsLeaderContext/lose_leader_false (0.00s) + --- PASS: TestResyncRecoveryOwnsLeaderContext/lose_leader_true (0.00s) +=== RUN TestResyncCancelRouting +--- PASS: TestResyncCancelRouting (0.00s) +=== RUN TestResyncCancellationWinsFinalization +--- PASS: TestResyncCancellationWinsFinalization (0.00s) +=== RUN TestResyncCancelFullWorkerQueue +--- PASS: TestResyncCancelFullWorkerQueue (0.00s) +=== RUN TestResyncCancelBlockedWalkReceive +--- PASS: TestResyncCancelBlockedWalkReceive (0.00s) +=== RUN TestResyncCancelsOwnedWalkOnError +--- PASS: TestResyncCancelsOwnedWalkOnError (0.00s) +=== RUN TestReplicationTrustControlsInternalOptionsAndEvents +--- PASS: TestReplicationTrustControlsInternalOptionsAndEvents (0.00s) +PASS +ok github.com/minio/minio/cmd 12.620s +=== RUN TestReplicate +=== RUN TestReplicate/#00 +=== RUN TestReplicate/c1test +=== RUN TestReplicate/c1test#01 +=== RUN TestReplicate/c1test#02 +=== RUN TestReplicate/c1test#03 +=== RUN TestReplicate/c1test#04 +=== RUN TestReplicate/c1test#05 +=== RUN TestReplicate/c1test#06 +=== RUN TestReplicate/c1test#07 +=== RUN TestReplicate/c2test +=== RUN TestReplicate/c2test#01 +=== RUN TestReplicate/c2test#02 +=== RUN TestReplicate/c2test#03 +=== RUN TestReplicate/c2test#04 +=== RUN TestReplicate/c2test#05 +=== RUN TestReplicate/c2test#06 +=== RUN TestReplicate/xy/c3test +=== RUN TestReplicate/xyz/c3test +=== RUN TestReplicate/xyz/c3test#01 +=== RUN TestReplicate/xyz/c3test#02 +=== RUN TestReplicate/xyz/c3test#03 +=== RUN TestReplicate/xyz/c3test#04 +=== RUN TestReplicate/xy/c3test#01 +=== RUN TestReplicate/xyz/c3test#05 +=== RUN TestReplicate/xyz/c3test#06 +=== RUN TestReplicate/xyz/c3test#07 +=== RUN TestReplicate/abc/c3test +=== RUN TestReplicate/xy/c4test +=== RUN TestReplicate/xa/c4test +=== RUN TestReplicate/xyz/c4test +=== RUN TestReplicate/xyz/c4test#01 +=== RUN TestReplicate/xyz/c4test#02 +=== RUN TestReplicate/xyz/c4test#03 +=== RUN TestReplicate/abc/c4test +=== RUN TestReplicate/abc/c4test#01 +=== RUN TestReplicate/abc/c4test#02 +=== RUN TestReplicate/abc/c4test#03 +=== RUN TestReplicate/abc/c4test#04 +=== RUN TestReplicate/xy/c5test +=== RUN TestReplicate/xa/c5test +--- PASS: TestReplicate (0.00s) + --- PASS: TestReplicate/#00 (0.00s) + --- PASS: TestReplicate/c1test (0.00s) + --- PASS: TestReplicate/c1test#01 (0.00s) + --- PASS: TestReplicate/c1test#02 (0.00s) + --- PASS: TestReplicate/c1test#03 (0.00s) + --- PASS: TestReplicate/c1test#04 (0.00s) + --- PASS: TestReplicate/c1test#05 (0.00s) + --- PASS: TestReplicate/c1test#06 (0.00s) + --- PASS: TestReplicate/c1test#07 (0.00s) + --- PASS: TestReplicate/c2test (0.00s) + --- PASS: TestReplicate/c2test#01 (0.00s) + --- PASS: TestReplicate/c2test#02 (0.00s) + --- PASS: TestReplicate/c2test#03 (0.00s) + --- PASS: TestReplicate/c2test#04 (0.00s) + --- PASS: TestReplicate/c2test#05 (0.00s) + --- PASS: TestReplicate/c2test#06 (0.00s) + --- PASS: TestReplicate/xy/c3test (0.00s) + --- PASS: TestReplicate/xyz/c3test (0.00s) + --- PASS: TestReplicate/xyz/c3test#01 (0.00s) + --- PASS: TestReplicate/xyz/c3test#02 (0.00s) + --- PASS: TestReplicate/xyz/c3test#03 (0.00s) + --- PASS: TestReplicate/xyz/c3test#04 (0.00s) + --- PASS: TestReplicate/xy/c3test#01 (0.00s) + --- PASS: TestReplicate/xyz/c3test#05 (0.00s) + --- PASS: TestReplicate/xyz/c3test#06 (0.00s) + --- PASS: TestReplicate/xyz/c3test#07 (0.00s) + --- PASS: TestReplicate/abc/c3test (0.00s) + --- PASS: TestReplicate/xy/c4test (0.00s) + --- PASS: TestReplicate/xa/c4test (0.00s) + --- PASS: TestReplicate/xyz/c4test (0.00s) + --- PASS: TestReplicate/xyz/c4test#01 (0.00s) + --- PASS: TestReplicate/xyz/c4test#02 (0.00s) + --- PASS: TestReplicate/xyz/c4test#03 (0.00s) + --- PASS: TestReplicate/abc/c4test (0.00s) + --- PASS: TestReplicate/abc/c4test#01 (0.00s) + --- PASS: TestReplicate/abc/c4test#02 (0.00s) + --- PASS: TestReplicate/abc/c4test#03 (0.00s) + --- PASS: TestReplicate/abc/c4test#04 (0.00s) + --- PASS: TestReplicate/xy/c5test (0.00s) + --- PASS: TestReplicate/xa/c5test (0.00s) +PASS +ok github.com/minio/minio/internal/bucket/replication 0.497s diff --git a/docs/investigations/r6/verification/rebased-verification.json b/docs/investigations/r6/verification/rebased-verification.json new file mode 100644 index 000000000..b96ab40d0 --- /dev/null +++ b/docs/investigations/r6/verification/rebased-verification.json @@ -0,0 +1,101 @@ +{ + "baseline": "cf381a7151ef25fc95ace5fedcd767fa19410de2", + "source_sha256": { + "cmd/bucket-replication.go": "999c2818a8980cbeb55cfcbc244840069fb44e042b4b4d6ef7668c2660ce31e0", + "cmd/bucket-replication-utils.go": "365641c760901641e8320cc5123697ab92a46f1add612048b991ed2d1cfad43b", + "cmd/replication-delete-marker_test.go": "d967787804d558ac6266b113228fdf4a4f9fcb7cab39138a4fb07558814ccca4", + "cmd/replication-delete-operation_test.go": "2888a04a543324776041316de2821f388d28c3c1a6f5d0031e5ac9d34f58d504", + "cmd/replication-delete-mrf_test.go": "5e160f7e19cbbb8cd5fa4e7ffd9cff9e09361b3fc4c5ee5ae61458f99c777781" + }, + "checks": [ + { + "name": "scope", + "command": [ + "go", + "test", + "-p", + "2", + "./cmd", + "./internal/bucket/replication", + "-run", + "TestReplication|TestReplicate|TestMRF|TestResync|TestSiteResync", + "-count=1", + "-v" + ], + "exit_code": 0, + "seconds": 38.805, + "log": "/Users/vonng/tmp/silo-r6-20260915-aa3f/rebased-scope.log", + "log_sha256": "5a038acd48f99ccac00646e490a51270a2e426d8b8b3c7841330d739d773f06d", + "finished_at_utc": "2026-09-15T16:26:02.042157+00:00" + }, + { + "name": "race", + "command": [ + "go", + "test", + "-race", + "-p", + "2", + "./cmd", + "-run", + "TestReplicateDelete|TestReplicationMRF|TestReplicationDeleteQueueFull", + "-count=1", + "-v" + ], + "exit_code": 0, + "seconds": 67.636, + "log": "/Users/vonng/tmp/silo-r6-20260915-aa3f/rebased-race.log", + "log_sha256": "1d4016ab2e69d795c9cab377aed980127a823b38d9a530101f8eb5fc470d920b", + "finished_at_utc": "2026-09-15T16:27:09.680875+00:00" + }, + { + "name": "build", + "command": [ + "go", + "build", + "-p", + "2", + "./..." + ], + "exit_code": 0, + "seconds": 25.522, + "log": "/Users/vonng/tmp/silo-r6-20260915-aa3f/rebased-build.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "finished_at_utc": "2026-09-15T16:27:35.203431+00:00" + }, + { + "name": "vet", + "command": [ + "go", + "vet", + "-p", + "2", + "./cmd", + "./internal/bucket/replication" + ], + "exit_code": 0, + "seconds": 3.399, + "log": "/Users/vonng/tmp/silo-r6-20260915-aa3f/rebased-vet.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "finished_at_utc": "2026-09-15T16:27:38.603261+00:00" + }, + { + "name": "lint", + "command": [ + "/Users/vonng/pgsty/silo/.bin/golangci/v2.13.1/golangci-lint", + "run", + "--build-tags", + "kqueue", + "--timeout=10m", + "--config", + "./.golangci.yml" + ], + "exit_code": 0, + "seconds": 114.749, + "log": "/Users/vonng/tmp/silo-r6-20260915-aa3f/rebased-lint.log", + "log_sha256": "e92606b0bf483111dff0a120c315ea165821348f31365020e2468a0059095c47", + "finished_at_utc": "2026-09-15T16:29:33.354263+00:00" + } + ], + "source_unchanged": true +} diff --git a/docs/investigations/r6/verification/rebased-vet.log b/docs/investigations/r6/verification/rebased-vet.log new file mode 100644 index 000000000..e69de29bb