yonchicy commented on PR #68371:
URL: https://github.com/apache/doris/pull/68371#issuecomment-5865136349

   @morningman Thanks for the detailed review. Addressed in
   fe8e604b5a8d6f1fdb250368c81f84f9afa7de08.
   
   **P1: Publish the result consumed by the load waiter**
   
   - In the legacy Coordinator, `deltaUrls`, `loadCounters`, `commitInfos`,
     and `errorTabletInfos` are now aggregated together with the URL and
     first error message before `updateStatus()` can cancel and release the
     latch. This remains behind the existing final-report deduplication
     gate.
   - The four result-container getters now return immutable snapshots taken
     under the same lock as their writers. `LoadLoadingTask` no longer
     clears the coordinator-owned error tablet list. Nereids also returns
     an error-tablet snapshot, alongside its existing counter/commit
     snapshots. Later report updates cannot mutate a container the waiter
     is already traversing.
   - In Nereids, `SingleFragmentPipelineTask.processReportExecStatus()`
     runs result aggregation and then the status-update callback inside its
     report acceptance section. An already accepted final report is not
     aggregated again. Normal completion is notified only afterward.
   - Hive/Iceberg/MC commit-data feeding remains after status publication
     and transaction-ID resolution. Normal completion still requires that
     acceptance to finish. Query cancellation and non-final error handling
     remain prompt; the non-final path does not accumulate final counters.
   
   For the final report that triggers the failure, the relevant order is
   now:
   
   ```text
   pass the fragment's final-report/deduplication gate
     -> aggregate the load result
     -> publish failure status and release load waiters
     -> the load task reads result-container snapshots
   ```
   
   **P2: Hook contract and repeated diagnostics updates**
   
   The diagnostics-only pre-status hook has been removed. Instead,
   `doProcessReportExecStatus` receives a status-update callback, with
   JavaDoc specifying the aggregation/status/completion ordering and status
   handling for incomplete or duplicate reports. Diagnostics are no longer
   written once in the hook and again in final-report aggregation for the
   same accepted final report, so the old double-update contract is no
   longer needed.
   
   **Validation and scope**
   
   The coordinator suites now contain 11 deterministic tests covering full
   results at the cancellation boundary, normal completion, completed
   report deduplication, snapshot stability across later reports, non-final
   errors, external commit-data failure, and query cancellation. Together
   with the related fragment and load-job suites, all 44 targeted FE tests
   passed with 0 failures, errors, or skips. Checkstyle also passed with 0
   violations. No cluster regression test was run locally.
   
   This fixes publication of the current failing final report and safe
   container reads. It does not wait for every remaining fragment after
   cancellation, or make separate getters one atomic cross-report snapshot.
   The deduplication guarantee above applies to already accepted final
   reports; existing retry behavior after external commit-data acceptance
   fails is unchanged. The PR description has been updated to match.
   


-- 
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