sangkyoonnam opened a new issue, #1309:
URL: https://github.com/apache/flink-agents/issues/1309

   ### Search before asking
   
   - [x] I searched in the 
[issues](https://github.com/apache/flink-agents/issues) and found nothing 
similar.
   
   ### Description
   
   When an Action trigger condition leaves an input without any matching 
Action, the next input already queued for the same key can stay unprocessed on 
continuation execution (JDK 21+) and on serial execution. Without a later input 
to restart processing for that key, `endInput()` can return while the queued 
input remains unprocessed.
   
   `processActionTaskForKey` handles an input with no Action tasks in its 
`actionTask == null` branch: it removes the processing key and returns. When an 
input finishes its Actions, `processActionTask` also starts the next pending 
input for that key; this branch doesn't. The parallel engine gives such inputs 
an internal no-op task, which retires through the normal finish path, so it 
isn't affected.
   
   The reproducer below uses CEL field filtering, added in #821; release-0.3 
dispatches Actions by event type only, so this condition-based sequence doesn't 
apply there.
   
   The runtime fix adds four executable lines to start the next pending input, 
with a regression test for both affected engines. I'll file 
`max-in-flight-input-records` on JDK 21 separately, because that one changes 
how these engines admit inputs. This bug reproduces with the default 
configuration on JDK 21, and on JDK 17 when serial execution is selected 
(`parallel-execution.enabled: false` or a plan with Python Actions).
   
   cc @wenjin272
   
   ### How to reproduce
   
   In `ActionExecutionOperatorTest`, with `parallel-execution.enabled: false` 
(serial execution on JDK 17; on JDK 21 the flag is ignored and continuation 
execution runs):
   
   1. Register one Action with the trigger condition `type == 
EventType.InputEvent && input != 2` that emits one `OutputEvent` for each 
matching input.
   2. Use a key selector that returns the same key for every input, then 
process inputs 1, 2 and 3 without draining the mailbox between inputs.
   3. Call `endInput()` and `waitInFlightEventsFinished()`.
   
   Expected outputs for inputs 1 and 3; actual output only for input 1.
   
   ### Version and environment
   
   flink-agents main at `60bf8cd0`, on Corretto 17.0.14 (serial execution) and 
Corretto 21.0.11 (continuation execution), macOS 15.3.1 on Apple M4. I've 
reproduced this sequence only in the operator test harness.
   
   ### Are you willing to submit a PR?
   
   - [x] I'm willing to submit a PR!


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