github-actions[bot] commented on code in PR #67913:
URL: https://github.com/apache/doris/pull/67913#discussion_r4004322865


##########
regression-test/data/cloud_p0/node_mgr/test_compute_group_name_reconciliation.out:
##########
@@ -0,0 +1,21 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this

Review Comment:
   [P2] Generate this result by running the Docker suite
   
   The commit that introduced this expected-result file says the new cloud 
Docker case was not executed and no `.out` was generated or handwritten; the 
follow-up commit also reports that the case was not run. Repository policy 
requires regression outputs to be produced by the test script, and static 
inspection cannot prove the debug-point orchestration reached all phases. 
Please run this exact suite in record mode, replace this file with the 
generated output, then run it normally and report the command/result.



##########
fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudInstanceStatusChecker.java:
##########
@@ -109,6 +127,7 @@ private void processVirtualClusters(List<Cloud.ClusterPB> 
clusters) {
         handleComputeClusters(computeClusters);
         handleVirtualClusters(virtualClusters, computeClusters);
         removeObsoleteVirtualGroups(virtualClusters);
+        cloudSystemInfoService.refreshComputeGroupNames(virtualClusters);

Review Comment:
   [P1] Refresh only virtual groups that passed validation
   
   This passes every raw virtual PB to the repair step even when 
`handleExistingVirtualComputeGroup` returned without applying it. For example, 
with installed valid `V:X`, a response `V:Y` whose policy or subgroup shape is 
invalid leaves the local metadata named X, but `refreshComputeGroupNames` still 
adds `Y -> V`. If V disappears in the next snapshot, removal only clears X, so 
Y remains a permanent alias to a missing ID; before removal, Y routes through 
the stale policy that validation explicitly rejected. Please refresh only 
successfully reconciled virtual records (and clear all aliases owned by a 
removed ID), with a rejected-rename test.



##########
fe/fe-core/src/main/java/org/apache/doris/cloud/catalog/CloudClusterChecker.java:
##########
@@ -146,19 +147,22 @@ private void checkToDelCluster(Map<String, ClusterPB> 
remoteClusterIdToPB, Set<S
                 if (LOG.isDebugEnabled()) {
                     LOG.debug("begin to drop clusterId: {}", delId);
                 }
-                String delClusterName = 
cloudSystemInfoService.getClusterNameByClusterId(delId);
-                if (delClusterName.isEmpty()) {
-                    return;
-                }
-                ((CloudEnv) 
Env.getCurrentEnv()).getCacheHotspotMgr().cancelTableFilterJobsForClusterChange(
-                        delClusterName, "system cancel: compute group " + 
delClusterName + " dropped");
                 List<Backend> toDel =
                         new 
ArrayList<>(finalClusterIdToBackend.getOrDefault(delId, new ArrayList<>()));
+                // The name index may already belong to a same-name 
replacement. Use the
+                // obsolete group's own BE tags, and never skip ID cleanup for 
a missing name.
+                String delClusterName = 
toDel.stream().map(Backend::getCloudClusterName).findFirst()
+                        .orElseGet(() -> 
cloudSystemInfoService.getClusterNameByClusterId(delId));
+                // Name-scoped jobs may already belong to the replacement 
group.
+                if 
(delId.equals(cloudSystemInfoService.getCloudClusterIdByName(delClusterName))) {

Review Comment:
   [P1] Make warm-up cleanup independent of the transient name owner
   
   This guard avoids cancelling a replacement's jobs, but it also skips the 
only cancellation trigger when the mapping is temporarily missing. That state 
is reachable after stale virtual cleanup; if Meta Service drops physical P:X 
before the next repair, P is removed by ID while its persisted table-filter 
jobs remain runnable across cycles and can later attach to a new X. The 
parallel rename path has the opposite race: adding replacement B:X publishes `X 
-> B`, a user can create B's job, then renaming A still unconditionally cancels 
every X-scoped job. Please carry/check ID-qualified job ownership or serialize 
publication and cleanup, and test both interleavings.



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