Details
Description
When trying to use named window with win:time_batch, Esper will get an unhandled exception after couple minutes.
The EPL used to create named window:
CREATE WINDOW everestDataWindow.win:time_batch(60 sec) as select * from Metric
The EPL to insert data:
INSERT INTO everestDataWindow SELECT * FROM Metric(app='worker')
The on select EPL used to select in named window when Latency event shows up:
on Latency(app='worker') as latency
SELECT *
FROM everestDataWindow as win
WHERE latency.hostname = win.hostname
AND latency.colo = win.colo
AND ( win.name like 'worker.p%.50th' OR
win.name like 'worker.services.p%.99th' OR )
And here's the stack trace:
2010-02-23 17:08:25,678 [com.espertech.esper.Timer-default-0] ERROR com.espertech.esper.timer.EPLTimerTask - Timer thread caught unhandled exception: null
java.util.ConcurrentModificationException
at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:373)
at java.util.LinkedHashMap$KeyIterator.next(LinkedHashMap.java:384)
at java.util.AbstractCollection.toArray(AbstractCollection.java:171)
at com.espertech.esper.view.window.TimeBatchViewRStream.sendBatch(TimeBatchViewRStream.java:207)
at com.espertech.esper.view.window.TimeBatchViewRStream$1.scheduledTrigger(TimeBatchViewRStream.java:290)
at com.espertech.esper.core.EPRuntimeImpl.processStatementScheduleMultiple(EPRuntimeImpl.java:874)
at com.espertech.esper.core.EPRuntimeImpl.processScheduleHandles(EPRuntimeImpl.java:610)
at com.espertech.esper.core.EPRuntimeImpl.processSchedule(EPRuntimeImpl.java:491)
at com.espertech.esper.core.EPRuntimeImpl.processTimeEvent(EPRuntimeImpl.java:462)
at com.espertech.esper.core.EPRuntimeImpl.processEvent(EPRuntimeImpl.java:365)
at com.espertech.esper.core.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:210)
at com.espertech.esper.core.EPRuntimeImpl.timerCallback(EPRuntimeImpl.java:184)
at com.espertech.esper.timer.EPLTimerTask.run(EPLTimerTask.java:61)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:637)
Hi Mark,
what version of Esper is this please?
We have not been able to reproduce, our test case is attached.
Best regards
Tom