fxbing commented on code in PR #4608:
URL: https://github.com/apache/flink-cdc/pull/4608#discussion_r4537971136


##########
flink-cdc-connect/flink-cdc-pipeline-connectors/flink-cdc-pipeline-connector-fluss/src/main/java/org/apache/flink/cdc/connectors/fluss/source/reader/FlussSourceReader.java:
##########
@@ -243,7 +263,7 @@ protected void onSplitFinished(Map<String, FlussSplitState> 
finishedSplitIds) {
     private void activateSplits(List<FlussSplitBase> splits) {
         List<FlussSplitBase> activeSplits = new ArrayList<>();
         for (FlussSplitBase split : splits) {
-            if (isActive(split.getTablePath())) {
+            if (isSplitActive(split)) {

Review Comment:
   @litiliu Thanks, this handles the case where the partition was dropped. My 
concern is what happens just after a new partition is created. Suppose the 
enumerator discovers today’s `orders` partition through TabletServer A and 
assigns bucket 0. The reader’s `subscribe()` and subsequent 
`listPartitionInfos()` can both reach TabletServer B. If B hasn’t cached the 
new partition yet and its ZooKeeper replica is still catching up, the ID lookup 
can throw `PartitionNotExistException`, and the list call can succeed without 
including the partition.
   
   The reader would then finish the split. Even after B catches up, the 
enumerator still considers the partition assigned, so it won’t reassign bucket 
0. I injected those two responses and verified that the split was still missing 
after checkpoint restore. Does Fluss guarantee that once A has returned a newly 
created partition, B must also see it on these reads?



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

Reply via email to