[
https://issues.apache.org/jira/browse/FLINK-15964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17323100#comment-17323100
]
Flink Jira Bot commented on FLINK-15964:
----------------------------------------
This issue is assigned but has not received an update in 7 days so it has been
labeled "stale-assigned". If you are still working on the issue, please give an
update and remove the label. If you are no longer working on the issue, please
unassign so someone else may work on it. In 7 days the issue will be
automatically unassigned.
> Getting previous stage in notFollowedBy may throw exception
> -----------------------------------------------------------
>
> Key: FLINK-15964
> URL: https://issues.apache.org/jira/browse/FLINK-15964
> Project: Flink
> Issue Type: Bug
> Components: Library / CEP
> Affects Versions: 1.9.0
> Reporter: shuai.xu
> Assignee: shuai.xu
> Priority: Major
> Labels: pull-request-available, stale-assigned
> Time Spent: 10m
> Remaining Estimate: 0h
>
> In a notFollowedBy() condition, it may throw exception if trying to get value
> from previous stage for comparison.
> For example:
> Pattern<Event, ?> pattern = Pattern.<Event>begin("start",
> AfterMatchSkipStrategy.skipPastLastEvent())
> .notFollowedBy("not").where(new IterativeCondition<Event>() {
> private static final long serialVersionUID = -4702359359303151881L;
> @Override
> public boolean filter(Event value, Context<Event> ctx) throws Exception {
> return
> value.getName().equals(ctx.getEventsForPattern("start").iterator().next().getName());
> }
> })
> .followedBy("middle").where(new IterativeCondition<Event>() {
> @Override
> public boolean filter(Event value, Context<Event> ctx) throws Exception {
> return value.getName().equals("b");
> }
> });
> with inputs:
> Event a = new Event(40, "a", 1.0);
> Event b1 = new Event(41, "a", 2.0);
> Event b2 = new Event(43, "b", 3.0);
> It will throw
> org.apache.flink.util.FlinkRuntimeException: Failure happened in filter
> function.org.apache.flink.util.FlinkRuntimeException: Failure happened in
> filter function.
> at org.apache.flink.cep.nfa.NFA.findFinalStateAfterProceed(NFA.java:698) at
> org.apache.flink.cep.nfa.NFA.computeNextStates(NFA.java:628) at
> org.apache.flink.cep.nfa.NFA.doProcess(NFA.java:292) at
> org.apache.flink.cep.nfa.NFA.process(NFA.java:228) at
> org.apache.flink.cep.utils.NFATestHarness.consumeRecord(NFATestHarness.java:107)
> at
> org.apache.flink.cep.utils.NFATestHarness.feedRecord(NFATestHarness.java:84)
> at
> org.apache.flink.cep.utils.NFATestHarness.feedRecords(NFATestHarness.java:77)
> at
> org.apache.flink.cep.nfa.NFAITCase.testEndWithNotFollow(NFAITCase.java:2914)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498) at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
> at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
> at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55) at
> org.junit.rules.RunRules.evaluate(RunRules.java:20) at
> org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at
> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at
> org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at
> org.junit.runners.ParentRunner.run(ParentRunner.java:363) at
> org.junit.runner.JUnitCore.run(JUnitCore.java:137) at
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
> at
> com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
> at
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
> at
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)Caused
> by: java.util.NoSuchElementException at
> java.util.Collections$EmptyIterator.next(Collections.java:4189) at
> org.apache.flink.cep.nfa.NFAITCase$154.filter(NFAITCase.java:2884) at
> org.apache.flink.cep.nfa.NFAITCase$154.filter(NFAITCase.java:2879) at
> org.apache.flink.cep.nfa.NFA.checkFilterCondition(NFA.java:752) at
> org.apache.flink.cep.nfa.NFA.findFinalStateAfterProceed(NFA.java:688) ... 33
> more
--
This message was sent by Atlassian Jira
(v8.3.4#803005)