在使用Esper时,我得到了这个错误。
可能的原因是什么?
2017-02-05 15:51:59,781 [...] ERROR com.espertech.esper.core.service.ExceptionHandlingService - Exception encountered processing statement '...' statement text 'INSERT INTO Window
SELECT *
FROM TableWithJoins
WHERE test=3
ORDER BY (Math.abs(Total)) DESC
LIMIT 10' : null
java.util.ConcurrentModificationException
at java.util.ArrayDeque$DeqIterator.next(ArrayDeque.java:643)
at com.espertech.esper.event.EventBeanUtility.flatten(EventBeanUtility.java:186)
at com.espertech.esper.collection.FlushedEventBuffer.getAndFlush(FlushedEventBuffer.java:41)
at com.espertech.esper.view.internal.SingleStreamDispatchView.execute(SingleStreamDispatchView.java:56)
at com.espertech.esper.core.context.util.EPStatementAgentInstanceHandle.internalDispatch(EPStatementAgentInstanceHandle.java:127)
at com.espertech.esper.epl.named.NamedWindowServiceImpl.processHandle(NamedWindowServiceImpl.java:468)
at com.espertech.esper.epl.named.NamedWindowServiceImpl.processDispatches(NamedWindowServiceImpl.java:247)
at com.espertech.esper.epl.named.NamedWindowServiceImpl.dispatch(NamedWindowServiceImpl.java:214)
at com.espertech.esper.core.service.EPRuntimeImpl.processThreadWorkQueueFront(EPRuntimeImpl.java:858)
at com.espertech.esper.core.service.EPRuntimeImpl.processThreadWorkQueue(EPRuntimeImpl.java:810)
at com.espertech.esper.core.service.EPRuntimeImpl.processWrappedEvent(EPRuntimeImpl.java:500)
at com.espertech.esper.event.EventSenderBean.sendEvent(EventSenderBean.java:84)我正在使用Esper v5.2。
发布于 2017-07-06 17:35:03
此问题可能是由前一条insert语句中的联接引起的。
要修复此问题,请将undirectional添加到其中一个join语句中。
这样做的原因是,如果Esper中存在join语句,则来自任何join子句的任何传入事件都可以触发update。通过添加“单向”,这意味着只有一个线程将事件推送到下游,而不是两个,这解决了所有线程问题。
此问题可能已在更高版本的Esper中修复。
https://stackoverflow.com/questions/44945130
复制相似问题