Repository navigation
[Bug]: Embedded-cluster UTs still lose HAKeeper connections under Ubuntu/x86 load #26522
Description
Is there an existing issue for the same bug?
- I have checked the existing issues.
Branch Name
main
Commit ID
Other Environment Information
- Hardware parameters:
amd64-mo-shanghai-8c16gGitHub Actions runner - OS type: Linux/amd64
- Others: MatrixOne ALL CI, Ubuntu/x86 UT job
91130900423
Actual Behavior
Four embedded-cluster consumers failed in one current-main-based Ubuntu/x86 UT job after repeated HAKeeper/LogService heartbeat timeouts and TCP connection resets:
TestCreateAndDropPitr(pkg/tests/ddl): LogService heartbeat to127.0.0.1:11020was reset.TestMultiClusterCanWork(pkg/embed): CN/TN/LogService heartbeats to127.0.0.1:10740repeatedly reset; the second cluster timed out inwaitAnyShardReadyLockedatcluster_test.go:182.TestIcebergSQLEngineEmbeddedCredentialSecurityAndRedaction(pkg/embed): LogService heartbeats to127.0.0.1:11140reset before the assertion aticeberg_sql_harness_test.go:796.TestTableFeatures(pkg/tests/features): HAKeeper allocation on127.0.0.1:12020reset while creating the test database, failing attable_features_test.go:47.
The triggering PR #26505 changes only pkg/frontend/data_branch_output.go and its focused tests; the full pkg/frontend package passed in the same job. The failure is therefore outside that PR.
The job ran after #26448 (fb7dc32ee) was merged into the base. That fix stabilized the shared authenticated base cluster, but these failures show that other embedded-cluster consumers remain vulnerable to the same CI-load heartbeat starvation/reset pattern.
Expected Behavior
Embedded clusters used by UT packages should keep HAKeeper/LogService heartbeats alive and start deterministically under the Ubuntu/x86 CI load profile. Tests should not lose their control-plane connection or time out waiting for TN shards.
Steps to Reproduce
- Run the MatrixOne Ubuntu/x86 unit-test workflow at
0b8b53dff3869dcd5e3ab52992852c9ea6545026or a descendant. - Run the normal parallel UT package set on an
amd64-mo-shanghai-8c16grunner. - Observe the embedded clusters in
pkg/embed,pkg/tests/ddl, andpkg/tests/featuresfor HAKeeper/LogService heartbeat timeouts, connection resets, andwaitAnyShardReadyLockedtimeouts.
Additional information
- Failed job: https://github.com/matrixorigin/matrixone/actions/runs/30622745418/job/91130900423
- Triggering PR: fix(frontend): surface data branch file finalization errors #26505
- Failed tests:
TestCreateAndDropPitr,TestMultiClusterCanWork,TestIcebergSQLEngineEmbeddedCredentialSecurityAndRedaction, andTestTableFeatures. - Related closed reports: [Bug]: TestIssue26114LegacyCrossAccountMetadataCountsTowardTargetQuota loses HAKeeper connection #26441 (shared authenticated base cluster), [Bug]: TestMultiClusterCanWork panics after logservice connection reset in UT #26482 (
TestMultiClusterCanWork), and [Bug]: Embedded Iceberg credential UT loses logservice connection during CREATE ACCOUNT #26107 (embedded Iceberg credential test). This occurrence is on current main after their cited fixes and also affects two previously unreported consumers.
Activity
gouhongshen commentedon Jul 31, 2026
Another occurrence on PR #26505 head
d7a02bfaa1a976c996766a6862a7d236e31826a6in the Ubuntu/x86 UT job:https://github.com/matrixorigin/matrixone/actions/runs/30638598838/job/91182528687
Three tests failed with the embedded-cluster/HAKeeper signature tracked here:
TestCreateAndDropPitr: HAKeeper/LogService heartbeats timed out and the connection to127.0.0.1:11020was reset; database creation failed.TestTableFeatures: HAKeeper ID allocation lost127.0.0.1:12020withconnection reset by peer; database creation failed.Test_UpgradeEntry: repeated HAKeeper proposal/checker-state timeouts and TN heartbeat failures ended incontext deadline exceeded/internal error: waitAnyShardReadyLockedatpkg/tests/upgrade/upgrade_v1_2_3_test.go:32.Test_UpgradeEntryis a newly observed consumer of the same failure family. The fourth failed test, the independent ISCPTestStaleReadassertion, is documented in #26517. PR #26505 changes only data-branch file-output finalization inpkg/frontendand has no overlap with embedded-cluster, HAKeeper, DDL/features, or upgrade code.fix(frontend): surface data branch file finalization errors (#26505)
XuPeng-SH commentedon Aug 1, 2026
Another two-attempt reproduction confirms that the embedded-cluster/HAKeeper startup failure is still present after the narrower fixes already included in the tested main base.
Workflow: https://github.com/matrixorigin/matrixone/actions/runs/30639089405
Tested PR: #26501
Tested head:
939a675096f0cc9283a28bfd08304d9baecaf462Main parent merged into that head:
e1a11841ec96c7fba3870dfa67ef86a6fb75533fBoth Ubuntu/x86 UT attempts failed with the same control-plane signature, but in different embed tests:
TestMultiClusterCanWorkfailed after 41.03s withcontext deadline exceeded / internal error: waitAnyShardReadyLocked.TestBasicClusterfailed after 41.27s with the samewaitAnyShardReadyLockederror.Attempt 2 shows the failure chain clearly:
LocalTickmessages;shard not ready;PR #26501 changes recursive CTE planning/execution and has no overlap with
pkg/embed, LogService, HAKeeper Raft startup, or TN shard readiness.Latest-main audit (2026-08-01):
main:3e9ad81b9a13732305b168e0f443fd76cca62a81;e1a11841through current main, no commit changedpkg/embedor the LogService/Raft startup path;Conclusion: current main has no demonstrated fix for this startup failure. The two consecutive attempts make this stronger than a single flaky occurrence; keep this issue open until the relevant startup/control-plane path is fixed and repeatedly validated under the Ubuntu/x86 full-UT load profile.
gouhongshen commentedon Aug 3, 2026
Automated AI triage
This issue requires human involvement and cannot currently be completed independently by the
automated fix loop.
Reason
Requires a HAKeeper/CN/TN maintainer to define and approve the control-plane progress contract—command-delivery deadline, concurrency model, and stale-response behavior—before implementation. The human next action is to choose the design for #26566 and split #26522 into bounded implementation and CI-validation work.
Evidence
The failure recurred after merged mitigations #26507 and #26546. Current main still performs CN/TN heartbeat RPCs synchronously before handling schedule commands, while #26566 documents several competing architectural solutions and requires shutdown/restart-generation semantics across CN, TN, LogService, and embed startup.
Please use this analysis to provide the missing decision, environment, evidence, or ownership
needed before the issue is returned to the AI candidate pool.
gouhongshen commentedon Aug 3, 2026
Current-main root-cause audit
I re-audited the original failures, the relevant code on current
main(820ee12144439c5b63c03b261f4330ec0364fdb3), and CI after the merged mitigations.Conclusion
This was a real load-sensitive embedded-cluster failure, not a bad assertion or a change-specific failure. It was not fixed by #26546 alone. However, the evidence after #26503 indicates that the original failure family is now substantially mitigated, while a separate production control-plane weakness remains tracked by #26566.
Confirmed failure chain
UT_PARALLEL=6. Several package processes can each keep a complete LogService/TN/3-CN cluster alive.TestMultiClusterCanWorkalso intentionally keeps two clusters alive in one process.LocalTickmessages. At the configured 100-ms tick interval, that is direct evidence of roughly 1-2.4 seconds of delayed Raft/control-plane processing. HAKeeper proposals, ticks, checker-state reads, and heartbeats then timed out.SendCNHeartbeat/SendTNHeartbeatmust return before the response commands are handled or another heartbeat can be sent. A slow request therefore also delays delivery of commands such asD/Start.waitAnyShardReadyLockedexhausted its 30-second deadline. Connection resets and broken pipes were largely downstream effects of failed startup/cleanup and, before fix(cnservice): return bootstrap failures #26503, a transient CN bootstrap error terminating the package process.The recurrence after #26546 is concrete:
ac4a306825as its main parent.TestPitrCases,TestCreateAndDropPitr,TestClusterCanStartNewCNServices, andTestTableFeaturesfailed with delayed ticks, heartbeat/reset errors, andwaitAnyShardReadyLocked.https://github.com/matrixorigin/matrixone/actions/runs/30733617873/job/91458176028
TestMultiClusterCanWorkreproduced the same control-plane failure after fix: harden async lifecycle and CI test contracts #26546.https://github.com/matrixorigin/matrixone/actions/runs/30743462011/job/91484899682
What the merged changes do and do not fix
After #26503 merged, I checked 94 completed
MatrixOne ALL CIworkflows through 2026-08-03: 40 completed successfully, and the four Ubuntu/x86 UT job failures in that set did not reproduce the originalwaitAnyShardReadyLocked/HAKeeper-loss startup signature. This is good mitigation evidence, but not a deterministic proof of closure.A later current-main failure of
TestClusterCanStartNewCNServices(run 30784347559, job 91594982538) spent about 39 minutes incluster.Close -> CN Close -> txn trace Stopper.Stop. Its test body had already completed. That is a distinct shutdown-lifecycle defect and should not be used as evidence that the original startup failure recurred.Recommended scope
UT_PARALLEL=6profile; isolated package runs are insufficient.I would not close #26522 solely from the recent green sample. Closure should require a bounded embedded-cluster runtime-concurrency contract plus repeated full-profile validation; #26566 can remain open independently for the production liveness contract.
aptend commentedon Aug 3, 2026
New reproduction on PR #26531 after merging current main into head 0349df7.\n\nFailed job: https://github.com/matrixorigin/matrixone/actions/runs/30817969769/job/91700405563\n\nThe Ubuntu/x86 UT job failed only TestTableFeatures after 69.90s. The failure signature matches this issue:\n- Dragonboat reported 12-16 delayed LocalTick messages.\n- HAKeeper proposals and checker-state reads timed out.\n- TN/LogService heartbeats timed out.\n- database setup finally failed with connection reset by peer while talking to the local HAKeeper endpoint.\n\nThe job reported no OOM or process-kill signature. The tested PR does not change the TestTableFeatures setup or HAKeeper/LogService control-plane path.
gouhongshen commentedon Aug 5, 2026
Three-day post-merge observation
Updated: 2026-08-06. Merge commit:
295fb60070f394a9697a5544fa32f91f5494f7d9from PR #26667.Scope and counts
I enumerated all
MatrixOne ALL CIworkflow runs created after the merge, then kept only heads whose commit ancestry contains the merge commit.The remaining jobs were cancelled, skipped, or failed before Unit Testing. Two pre-UT failures were infrastructure failures caused by TLS/network problems.
#26522 recurrence
I count a recurrence only when a failed Ubuntu/x86 Unit Testing job contains a runtime failure signature, not when a passing test name merely contains
TimeoutorwaitAnyShardReadyLocked.7 recurrences were found among 169 completed Unit Testing executions:
waitAnyShardReadyLocked, HAKeeper heartbeat/checker timeouts.waitAnyShardReadyLocked, HAKeeper control-plane timeout.waitAnyShardReadyLocked, heartbeat timeout, connection reset.waitAnyShardReadyLocked, heartbeat/checker timeout, connection reset.waitAnyShardReadyLocked, heartbeat/checker timeout, connection reset.waitAnyShardReadyLocked, HAKeeper checker/heartbeat timeout, connection reset.The other 17 Unit Testing failures did not contain this failure family. The two failures before Unit Testing were TLS/network infrastructure failures and are not counted as recurrences.
Observation continues through the agreed three-day window; new completed jobs will be added to this same comment.
gouhongshen commentedon Aug 6, 2026
Root cause found and draft fix
The post-merge recurrence is not only cross-process package parallelism. In the serial Ubuntu/x86 stage of run 31074714519,
pkg/tests/issuesranTestAuthenticatedTestsReuseBaseClusterbeforeTestHashBuildSharedBudgetRecoverySQL.The first retained the package's 3-CN shared base. The second started a bespoke 1-CN cluster. Admission was reentrant within one binary, so six services could coexist despite
-p 1; the second cluster then hit the no-leader / dropped-proposal / failed-initial-cluster-info signature.Draft PR #26752 fixes the test lifecycle contract without rebuilding the shared base:
pkg/tests/issues/isolated, a separate test binary explicitly included inrun_ut.sh's serial scope;This avoids the extra 3-CN base-cluster restarts in the earlier draft approach. It does not change production HAKeeper heartbeat/RPC behavior; #26566 remains the separate production command-progress issue. CI duration is being measured on the final design.
test(embed): isolate shared test-cluster lifecycles (#26522) (#26752)
iamlinjunhong commentedon Sep 11, 2026
New CI occurrence for PR #27716, exact original head
90a1ab95db305f486d99c541a33fbfdfde743838.Failed workflow/check: Matrixone CI execution / UT Test on Ubuntu/x86, run
34565278565, job103156040935, attempt 1. The aggregate CI Required check failed on the same run.The second exact failure was
pkg/logservice.TestHAKeeperClientSendCNHeartbeatatpkg/logservice/hakeeper_client_test.go:618:The PR changes view-metadata protocol/parser/planner/sysview paths and does not change
pkg/logservice, HAKeeper heartbeat code, embedded-cluster startup, or the CI harness. With the repository CGo wrapper and-race -tags matrixone_test -short -p 1 -timeout 40m -count=3 -run ^TestHAKeeperClientSendCNHeartbeat$ ./pkg/logservice, the exact PR head passed 3/3 and clean detached currentup/main(123b4c1f5fb6e0f0bc69d02eee5b0b7cca289bcf) passed 3/3. The test selection was non-empty in both trees. This is another occurrence of the Ubuntu/x86 HAKeeper/LogService control-plane timing failure family tracked by this issue, rather than a deterministic failure in PR #27716.iamlinjunhong commentedon Sep 12, 2026
New occurrence: PR #28608 / run 34600385547
Source PR/head:
2fcf65a14bd9565bacafed44fe0f4a0cdb23e771m1-27943amd64-mo-shanghai-8c16g-92mgx-runner-6tqc6make ut UT_CONFIGURED=1 UT_PARALLEL=6 UT_TIMEOUT=40 UT_SHARD=allFailed checks:
Complete UT failure signature:
github.com/matrixorigin/matrixone/pkg/tests/arrowload.TestArrowLoadBVTfailed after 404.80s while writing to HAKeeper at127.0.0.1:11020:read tcp4 ...: connection reset by peer.invalid state no CN in the cluster, and a later127.0.0.1:11141: connect: connection refused.TestArrowLoadGateDisabledandTestArrowLoadDistributedDisabledSoftFallbackfailed at the admission guard withinvalid state another complete test cluster is already active in this process.oom=0andoom_kill=0. The job ended withmake: *** [Makefile:513: ut] Error 1; the aggregate job only propagated this result.Attribution:
pkg/tests/arrowload,pkg/embed,pkg/logservice, HAKeeper/LogService lifecycle code, or the UT runner/harness. Its changed planner/frontend/window-partition closure passed in the same run; the focused frontend, plan, partition, and window compile checks also pass locally through the repository CGo wrapper.The failed jobs from run 34600385547 will be rerun once under the approved CI policy after this evidence is recorded.
iamlinjunhong commentedon Sep 12, 2026
Follow-up evidence for PR #28636 / run 34666156512
Source:
b87412462de438434effaae7d4ace808df081f2bm-28583Complete UT log signature:
make ut UT_CONFIGURED=1 UT_PARALLEL=6 UT_TIMEOUT=40 UT_SHARD=all; the job is the normal CGO-enabled Ubuntu/x86 UT lane.pkg/tests/arrowload.TestArrowLoadBVT:pkg/tests/arrowload/cluster_test.go:148/arrow_load_test.go:45,context deadline exceeded, with HAKeeper heartbeat/propose/checker/address-refresh timeouts and connection-reset noise; the test failed after 52.36s.matrixone-ci: failure; it has no independent product failure. The complete log contains no compile/type/static/security failure.pkg/tests/arrowload, embedded-cluster/HAKeeper/LogService code, or the UT runner/harness.Exact-head and clean-main comparison:
-count=1 -timeout=120s -run '^TestArrowLoadBVT$' ./pkg/tests/arrowload: 3/3 passed (26.665s, 23.135s, 26.160s).up/mainefb2c5084957ac90273a3f625668fc6a784562c4, the identical selection and CGo mode in a detached worktree: 3/3 passed (27.998s, 27.537s, 26.528s).Attribution: this is a non-PR flaky candidate in the embedded-cluster/HAKeeper timing family tracked by this issue. All four required checks are present: complete failure log with no stable product/compiler/static failure; 3/3 exact selected-test passes on the PR head; no PR diff or dependency-closure overlap with the failed package/mechanism/harness; and 3/3 identical passes on clean official
up/main. The failed jobs of run34666156512will be rerun once under the approved CI policy after this evidence is recorded.iamlinjunhong commentedon Sep 12, 2026
New CI occurrence: PR #28608 / run 34689614866
Source:
def5228c81b3c14eda492608ccbb557148eef8fbm1-27943MatrixOne ALL CI, attempt 1amd64-mo-shanghai-8c16g-92mgx-runner-chdpvmake clean && time make config;make ut UT_CONFIGURED=1 UT_PARALLEL=6 UT_TIMEOUT=40 UT_SHARD=allComplete failure signature:
github.com/matrixorigin/matrixone/pkg/tests/issues.TestIssue26118DatabaseCopiesPreserveHashIdentifiersfailed after 48.94s.pkg/tests/issues/issue_26118_test.go:62, throughissue_test.go:182, and the run ended withmake: *** [Makefile:513: ut] Error 1.17183281152withoom=0andoom_kill=0.Attribution:
pkg/tests/issues,pkg/embed, LogService/HAKeeper lifecycle code, or the UT runner/harness.pkg/sql/planrace shards successfully; the failed-package summary contains onlypkg/tests/issues. The failure occurred in teardown of an unrelated issue regression, not in the PR window closure.The failed job from run 34689614866 will be rerun once under the approved CI policy after this evidence is recorded.
iamlinjunhong commentedon Sep 12, 2026
Follow-up evidence: PR #28608 / run 34689614866 attempt 2
Source:
def5228c81b3c14eda492608ccbb557148eef8fbamd64-mo-shanghai-8c16g-92mgx-runner-l4wdlmake ut UT_CONFIGURED=1 UT_PARALLEL=6 UT_TIMEOUT=40 UT_SHARD=allComplete failure signature:
pkg/tests/issues.TestWWConflictremained active for the full 40-minute package timeout and ended withpanic: test timed out after 40m0s; the stack contains the test goroutine waiting in the issue-test workflow.pkg/tests/partition.TestAffectedRowsfailed duringcreate databaseaftercontext deadline exceededfrom HAKeeper ID allocation.CI Requiredhas no independent product failure; its github-script step only propagatedmatrixone-ci: failure.Attribution:
pkg/tests/issues,pkg/tests/partition, embedded-cluster, HAKeeper/LogService lifecycle, or the UT harness. The changed closure passed the exact-head focused race validation locally; the exact-head CI run also completed the changedpkg/sql/planrace shards and unrelated frontend/window packages successfully.This is the already-authorized one rerun for run
34689614866; attempt 2 was accepted and completed with the same infrastructure signature. No further rerun is requested from this occurrence.fix(frontend): surface data branch file finalization errors (matrixor…
test(embed): isolate shared test-cluster lifecycles (matrixorigin#26522…
fix(frontend): surface data branch file finalization errors (matrixor…
test(embed): isolate shared test-cluster lifecycles (matrixorigin#26522…
fix(frontend): surface data branch file finalization errors (matrixor…
test(embed): isolate shared test-cluster lifecycles (matrixorigin#26522…
iamlinjunhong commentedon Oct 15, 2026
Additional CI occurrence for PR #30262, exact head
1fb117bedeb4ade795cc99cf505c340de40e609f, branchfix/csv-external-integer-whitespace.Run 38715428406, attempt 1 is complete. Recording this against the existing embedded-cluster/HAKeeper connection-loss tracker. This tracker is closed; the classification here is based on the fresh four-part comparison protocol below.
Failed checks and complete-log evidence:
pkg/tests/sqlintegration.TestLegacyPartitionColumnLimitCopy(49.39s).verifyResultspropagatesmatrixone-ci: failure, without an independent product failure.make ut UT_CONFIGURED=1 UT_PARALLEL=6 UT_TIMEOUT=40 UT_SHARD=all; Go 1.27.1, Ubuntu/x86, CGo, short/race,matrixone_test. The failed package ran in the embedded stage's four fresh batches with bounded process parallelism 2.Normalized failure:
The failure window also contains LogService heartbeat/checker/proposal timeouts and CN heartbeat connection resets. The cgroup checkpoint at 11:55:37 UTC reports memory current 11,637,600,256 bytes, peak 17,179,869,184, and
oom=0,oom_kill=0; these capacity observations do not establish an infrastructure root cause. No OOM kill, panic, reported data race, compiler/type/static/security failure was found in the complete job logs. The raw diagnostic JSON artifact was size-truncated; the complete job log retains the failed-test output and assertion above.Fresh four-part comparison:
135.955s, exit 0).eb18dbfa030b6309c5f5d0c2d5e7078a1466ac7fpassed the same exact test 3/3, root times 41.38s, 39.68s, 57.24s, with terminal package PASS (141.075s, exit 0). To respect the managed-lane boundary, the official GitHub archive was exported into an ignored directory in the same lane; all 11,216 files were byte-verified against that archive before and after testing. No Git worktree, checkout or shared-config mutation was used. The failed test and fixture are identical between the PR and main. All 191 tracked native-source/wrapper inputs were also verified identical; both controls use the same read-only Darwin/arm64 native artifacts. Temporary native links were removed by the installed cleanup trap.Both local controls used Go 1.27.1 on Darwin/arm64, retaining the CI race/tags/CGo/short mode:
.agents/skills/mo-dev/scripts/mo-cgo-test -v -race -short \ -tags matrixone_test -vet=off -count=3 -p=1 -timeout=40m \ -run '^TestLegacyPartitionColumnLimitCopy$' ./pkg/tests/sqlintegrationFor the exported main control,
GIT_WORK_TREEscopes the wrapper's read-only root resolution to that source tree;GIT_OPTIONAL_LOCKS=0prevents shared-index refresh. The archive SHA-256 isf5899980017a8c5569997caa78e7ce3e8a2c7c65c3f9e9afec5c2ae397dafa5f.Additional exact-head CI evidence: the failed race run's raw events contain terminal PASS for all changed owning packages: external
40.034s, function23.683s, csvparser1.265s. The same head's shared build, SCA, coverage producer/merge and both selected multi-CN BVT lanes also passed.Classification: non-PR flaky candidate under the fresh four-part protocol. These controls do not reproduce the Ubuntu/x86 full-load failure or prove its underlying mechanism is fixed. The absence of the signature in clean-main controls is the expected bounded flaky-candidate result. No unrelated production code or assertions were changed. After recording this evidence, only the failed jobs of run 38715428406 will be rerun once; another occurrence requires renewed attribution.
iamlinjunhong commentedon Oct 18, 2026
Additional occurrence for PR #30171, exact head
e9955d8e2ac5c1d379f85d05bc2a0ed0d0dc78ab, branchfix/30158-decimal-div-domain.Run 39092472034, attempt 1 is complete. Reusing this embedded-cluster/HAKeeper tracker to retain the matching failure history. This issue is closed; the classification below relies on fresh four-part comparison evidence, rather than the known-open-defect exception.
Complete-log evidence:
pkg/tests/issues.TestIssue26118DatabaseCopiesPreserveHashIdentifiers(59.06s).verifyResultspropagatesmatrixone-ci: failure; it has no independent product failure.time make ut UT_CONFIGURED=1 UT_PARALLEL=8 UT_TIMEOUT=40 UT_SHARD=all, Go 1.27.1, Linux/amd64, CGO enabled, short/race,matrixone_test, bounded Go package parallelism 2 and 40-minute timeout.Normalized failure:
The failure occurs in deferred cleanup: user/role removal and five database drops share one 30-second context, and the final source-database DROP times out. The preceding business assertions were not reported as failing. The surrounding window contains LogService/HAKeeper heartbeat/checker/proposal timeouts. Those messages and capacity observations are correlations, not proof of an infrastructure root cause. The full failed-step logs contain no compiler/type/static/security failure, panic, reported data race or OOM kill. The diagnostic JSON artifact was size-truncated; complete failure output remains in the downloaded job logs.
Fresh four-part comparison:
12.817s, exit 0).DecimalDivDisplayLength, so the new DIV view projection is not inserted. The failing deferredDROP DATABASEcall does not exercise the changed DIV execution, view-boundary or warning paths. The failed test and shared fixture are byte-identical between the PR and current main.3c07fac240311d6f2b706674614ed6034e97ff79passed the same exact test 3/3, root times 7.20s, 1.57s, 1.54s, with terminal package PASS (12.733s, exit 0).Both local comparisons use Go 1.27.1 on Darwin/arm64, retaining the CI race/tags/CGO/short mode:
.agents/skills/mo-dev/scripts/mo-cgo-test \ -vet=off -short -v -race -tags matrixone_test -count=3 -p 2 -timeout=40m \ -run '^TestIssue26118DatabaseCopiesPreserveHashIdentifiers$' ./pkg/tests/issuesTo respect the managed-lane boundary, official main was exported into an ignored directory inside the same lane. All 11,436 source files/symlinks were verified against the Git archive, including bytes/targets and modes, before and after testing. The archive SHA-256 is
9d5f7cfc093edad9ce338dd07520101419df9cd9369682bfb39585bf9e9c8b69. The main wrapper's root was verified to be this exported source tree usingGIT_WORK_TREE;GIT_OPTIONAL_LOCKS=0prevents shared-index refresh. Shared Git metadata remains read-only; main source identity is established by the archive verification. No Git worktree, checkout or shared-config mutation was used. All 193 tracked native/Makefile/wrapper/Go-module inputs match between PR and main; both controls use the same verified read-only Darwin/arm64 native artifacts. The cleanup trap removed both temporary native links, and the PR worktree remains clean.Additional evidence from this exact PR head's CI: raw UT events contain terminal PASS for
pb/plan,sql/colexec,sql/compile,sql/plan/function,sql/plan/rule, and all eightsql/planshards. Eleven PR-related DECIMAL integer-DIV/view/warning protocol regression roots found in the artifact passed. The same head's shared build, SCA, coverage producer/merge and both selected multi-CN BVT lanes also passed.Classification: non-PR flaky candidate under the fresh four-part protocol. The local controls do not reproduce the full-load Linux/amd64 failure or prove its underlying mechanism is fixed. Clean-main controls passing is the expected bounded flaky-candidate result. No production code, assertions, timeout or skip was changed. After recording this evidence, only the failed jobs of run 39092472034 will be rerun once; a further occurrence requires renewed attribution.