je-ik commented on a change in pull request #12155:
URL: https://github.com/apache/beam/pull/12155#discussion_r453739657



##########
File path: 
runners/direct-java/src/main/java/org/apache/beam/runners/direct/QuiescenceDriver.java
##########
@@ -70,6 +71,8 @@ public static ExecutionDriver create(
   private final Map<AppliedPTransform<?, ?, ?>, 
ConcurrentLinkedQueue<CommittedBundle<?>>>
       pendingRootBundles;
   private final Queue<WorkUpdate> pendingWork = new ConcurrentLinkedQueue<>();
+  private final Map<AppliedPTransform<?, ?, ?>, 
Collection<CommittedBundle<?>>> inflightBundles =
+      new ConcurrentHashMap<>();

Review comment:
       Moved the comment to code. One more note - the issue arrises, because of 
how output watermark of PTransform is directly connected to input watermark of 
downstream PTransform. Maybe a more "technically correct" solution would be to 
attach output watermark updates to the bundle processing, so that bundle 
life-cycle would become:
    - start bundle
    - finish bundle (and enqueue and resulting bundles to pendingUpdates in 
downstream PTransform)
    - update output watermark
   But that would most probably require a more complex refactor.

##########
File path: 
runners/direct-java/src/main/java/org/apache/beam/runners/direct/QuiescenceDriver.java
##########
@@ -70,6 +71,8 @@ public static ExecutionDriver create(
   private final Map<AppliedPTransform<?, ?, ?>, 
ConcurrentLinkedQueue<CommittedBundle<?>>>
       pendingRootBundles;
   private final Queue<WorkUpdate> pendingWork = new ConcurrentLinkedQueue<>();
+  private final Map<AppliedPTransform<?, ?, ?>, 
Collection<CommittedBundle<?>>> inflightBundles =
+      new ConcurrentHashMap<>();

Review comment:
       Moved the comment to code. One more note - the issue arrises, because of 
how output watermark of PTransform is directly connected to input watermark of 
downstream PTransform. Maybe a more "technically correct" solution would be to 
attach output watermark updates to the bundle processing, so that bundle 
life-cycle would become:
    - start bundle
    - finish bundle (and enqueue and resulting bundles to pendingUpdates in 
downstream PTransform)
    - update output watermark
   
   But that would most probably require a more complex refactor.




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

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


Reply via email to