bobhan1 commented on PR #70218:
URL: https://github.com/apache/doris/pull/70218#issuecomment-6676454902
<!-- doris-repo-review:v1:begin -->
### Local pipeline review — PASS
```yaml
schema: doris-repo-review/v1
status: PASS
pr: apache/doris#70218
commit: 4ba6d0db1480dd018a2e9353cffbb6137fe1c65d
base: 87b462e4f58104140f098f5f4a8b5d58bec70149
reviewed_at: 2026-11-06T03:55:20+00:00
reviewer: bobhan1
model: gpt-6-astra
effort: max
findings: {blocker: 0, major: 0, minor: 1, nit: 0}
rounds: 1
converged: true
```
<!-- doris-repo-review:v1:end -->
One consolidated review round on the final head, covering all 12 changed
files, the FE-to-BE notification lifecycle, cache expiry, configuration
defaults and pipeline inheritance. The review incorporates the earlier
code-path analysis and the clarified intended snapshot semantics.
| Finding | Final disposition |
| --- | --- |
|
[MF-001](https://github.com/apache/doris/pull/70218#discussion_r4476514236) |
False positive. [The
sender](https://github.com/apache/doris/blob/4ba6d0db1480dd018a2e9353cffbb6137fe1c65d/fe/fe-core/src/main/java/org/apache/doris/cloud/transaction/CloudGlobalTransactionMgr.java#L3092)
uses `AgentBatchTask`, whose
[addTask](https://github.com/apache/doris/blob/4ba6d0db1480dd018a2e9353cffbb6137fe1c65d/fe/fe-core/src/main/java/org/apache/doris/task/AgentBatchTask.java#L98)
does not insert into `AgentTaskQueue`. The notification is therefore absent
from FE's resend queue. |
|
[MF-002](https://github.com/apache/doris/pull/70218#discussion_r4476514368) |
Withdrawn as a new P1; retained as a documented behavior tradeoff. The old
[sync then snapshot
path](https://github.com/apache/doris/blob/87b462e4f58104140f098f5f4a8b5d58bec70149/be/src/cloud/cloud_rowset_builder.cpp#L63)
was not atomic with concurrent commits or the later flush. A key missing from
the captured snapshot already could fail new-key validation. Skipping the
initialization sync enlarges that snapshot-lag window, including while an
earlier committed rowset has not reached local state. The intended change
accepts this existing mode as the default; [Cloud
p0](https://github.com/apache/doris/blob/87b462e4f58104140f098f5f4a8b5d58bec70149/regression-test/pipeline/cloud_p0/conf/be_custom.conf#L70)
and [Cloud
p1](https://github.com/apache/doris/blob/87b462e4f58104140f098f5f4a8b5d58bec70149/regression-test/pipeline/cloud_p1/conf/be_custom.conf#L50)
already configured it. The early-failure possibili
ty remains; no corrective code for it is claimed. APPEND's final-value
corruption claim is not established because [publish alignment rereads
historical
columns](https://github.com/apache/doris/blob/4ba6d0db1480dd018a2e9353cffbb6137fe1c65d/be/src/storage/tablet/base_tablet.cpp#L1398).
|
|
[MF-003](https://github.com/apache/doris/pull/70218#discussion_r4476514518) |
P2 / Minor, retained. A new FE can send notifications to an old BE that
supports this task but lacks its cleanup guard, exposing that old process's
signature leak. Keep FE notifications disabled until all receiving BEs contain
the cleanup fix. |
|
[MF-004](https://github.com/apache/doris/pull/70218#discussion_r4476514655) |
False positive. The [BE test
target](https://github.com/apache/doris/blob/4ba6d0db1480dd018a2e9353cffbb6137fe1c65d/be/test/CMakeLists.txt#L169)
uses `-fno-access-control`; the actual test compile command includes it, and
both new callback cases compiled and passed. |
Review checkpoints:
- Goal and scope: the callback guard releases signatures on enabled,
disabled and cache-miss paths; one cache now gives empty and non-empty entries
the same removal and expiry lifecycle. The final commit removes only six
redundant overrides from four Cloud p0/p1 FE/BE config files, so those
pipelines exercise product defaults.
- Concurrency and lifetime: the existing shared mutex protects the cache and
expiry map; refreshed entries retain their authoritative expiry checks.
Callback cleanup runs on scope exit after tablet processing. No new nested
locks, background threads, static-initialization dependencies or ownership
cycles are introduced.
- Configuration and compatibility: all three settings retain their existing
dynamic mutability. No Thrift/Protobuf fields, storage formats or persistence
protocols change. The old-BE rollout limitation is the retained P2 above.
- Transaction and data behavior: notifications remain best effort after the
MS commit and do not enter the FE resend queue. Flush snapshot/new-key
validation and publish alignment retain their existing algorithms; the
initial-sync default changes the freshness/cost tradeoff explicitly described
above.
- Parallel paths and observability: empty and non-empty committed-rowset
entries share cleanup; the separate MoW delete-bitmap cache is unchanged.
Insertion logging moves outside the cache lock and to DEBUG. Existing
transaction/tablet identifiers remain available.
- Validation and limits: implementation head
`17d42f6ef184c7f851920830ad3ce4861fe679aa` passed 46/46 targeted BE ASAN tests
and 56/56 FE Cloud transaction tests, plus build hygiene and diff checks. The
final config-only commit passed checks that the six removed overrides equal the
new defaults, all remaining parsed settings are unchanged, and `git diff
--check` is clean. Runtime tests were not repeated for that cleanup. No cloud
end-to-end or mixed-version runtime reproduction was performed; clang-tidy was
excluded as requested.
--
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]