morningman commented on PR #67322:
URL: https://github.com/apache/doris/pull/67322#issuecomment-5509186668

   <!-- doris-repo-review:v1:begin -->
   ### Local pipeline review — ✅ PASS
   
   ```yaml
   schema: doris-repo-review/v1
   status: PASS
   pr: apache/doris#67322
   commit: 14d9bff34f75f40731ef6b6079a7ed8c99849fcc
   base: 2b7475fa06a27437ae0384c9cf86d24fefd6407b
   reviewed_at: 2026-09-02T20:00+08:00
   reviewer: morningman
   model: claude-opus-5[1m]
   effort: max
   findings: {blocker: 0, major: 0, minor: 4, nit: 2}
   rounds: 1
   converged: true
   ```
   
   **Notes for maintainers**
   
   - 
`fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudClusterChecker.java:199-210`
 — the sibling `NODE_STATUS_DECOMMISSIONED` branch still has both defects this 
PR removes: `logBackendStateChange` sits outside the `setDecommissioned` CAS 
(one journal write per 10s poll for as long as MS still lists the node), and 
`:204` asserts on `isDecommissioned`, which nothing sets on the cloud path 
before `:207`, so `"impossible status, somewhere has bug"` fires on every 
normal decommission. `SystemHandler.java:603-607` has the idiom.
   - 
`fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudClusterChecker.java:190-195`
 — the flag now serves as both the "watershed registered" latch and the "drain 
traffic" switch, so while `getCurrentMaxTxnId` keeps failing the retiring BE 
stays a legal migration destination (`CloudTabletRebalancer.java:1935-1936`); 
previously that window was one tick. Self-healing, cannot wedge — but worth 
recording as a deliberate trade-off.
   - 
`fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudClusterChecker.java:188`
 — no test covers the once-only property and no Check List box is ticked. 
`CloudUpgradeMgrTest` already has the reflection + 
`Mockito.mockStatic(Env.class)` harness needed.
   - Verified the two premises the fix rests on: `isDecommissioning` is not 
persisted (`Backend.java:102` has no `@SerializedName`; 
`GsonUtilsBase.java:92-95` skips such fields), so it shares one lifetime with 
`txnBePairList`; and `registerWaterShedTxnId` mutates the queue only after its 
throwing call, so "both or neither" holds.
   - Not claimed in the PR body but true: for a single-BE compute group 
`CloudTabletRebalancer.java:964` bypasses the `isActive`/tablet/WAL guard, so 
the old code could send `NOTIFY_DECOMMISSIONED` after a *failed* registration 
while the BE was still serving. This change removes that hazard.
   
   <sub>Reviewed locally with the `doris-repo-review` pipeline (a local port of 
`.github/workflows/code-review-runner.yml`). This is not a CI status 
check.</sub>
   <!-- doris-repo-review:v1:end -->
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to