shunping commented on issue #35771:
URL: https://github.com/apache/beam/issues/35771#issuecomment-3146172729

   After discussing with @lostluck, the key of this problem is bundle splitting 
in prism. If we set `OneKeyPerBundle` to true, the pipeline can run fine.
   
   Originally, I thought changing the code in `SplitBundle` to address the 
change of stage state when split happens can solve the problem.
   
   However, I then uncover some deeper problem in Python SDK.
   
   1) When Prism sends out a split request to a SDK worker, it sends it out to 
the input transform of that stage, e.g. `stage-006-source` in our above 
example. There are three timers firing at the end of the global windows, so it 
assumes it can split.
   
   2) When SDK worker receives this, it accepts the splitting.
   
   3) However, when the worker is processing timers, it is actually not going 
through "stage-006-source", but the DoFn's transform (DoOperation) where the 
timers are set. The latter doesn't know anything about splitting. Therefore, it 
just passes every single timers in the data channel.


-- 
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: github-unsubscr...@beam.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to