Github user dawidwys commented on a diff in the pull request: https://github.com/apache/flink/pull/6168#discussion_r197461704 --- Diff: flink-libraries/flink-cep/src/main/java/org/apache/flink/cep/nfa/NFA.java --- @@ -609,7 +611,7 @@ public void close() throws Exception { startTimestamp); //check if newly created state is optional (have a PROCEED path to Final state) - final State<T> finalState = findFinalStateAfterProceed(sharedBuffer, nextState, event.getEvent(), computationState); + final State<T> finalState = findFinalStateAfterProceed(new ConditionContext<>(this, sharedBuffer, computationState), nextState, event.getEvent()); --- End diff -- Yes that is true the shared buffer might change but only "after" the CS. I mean those changes can't affect partial match for current Computation State. Therefore I would suggest to remove the flag completely and just keep the lazy evaluation of `matchedEvents` in `ConditionContext` by comparing it to null: if (matchedEvents == null) { this.matchedEvents = nfa.extractCurrentMatches(sharedBuffer, computationState); }
---