[ https://issues.apache.org/jira/browse/EAGLE-41?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15124954#comment-15124954 ]
Hao Chen commented on EAGLE-41: ------------------------------- The root cause is because siddhi don't provide method to customize the exception handler while the default is FatalExceptionHandler (https://github.com/LMAX-Exchange/disruptor/blob/master/src/main/java/com/lmax/disruptor/BatchEventProcessor.java#L34) So siddhi engine should provide an interface to customize exception handler. > Eagle policy engine supports customizable ExceptionHandler instead of using > FetalExceptionHandler > ------------------------------------------------------------------------------------------------- > > Key: EAGLE-41 > URL: https://issues.apache.org/jira/browse/EAGLE-41 > Project: Eagle > Issue Type: Bug > Affects Versions: 0.3.0 > Reporter: Hao Chen > Assignee: Hao Chen > Fix For: 0.3.0 > > > Currently Eagle Siddhi CEP engine bolt will always crash once caught with any > bad message: > {code:title=Error > logs|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true} > 2015-11-17 01:42:31 b.s.d.executor [INFO] Prepared bolt > metricStreamExecutor_0:(8) > 2015-11-17 01:42:55 STDIO [ERROR] Nov 17, 2015 1:42:55 AM > com.lmax.disruptor.FatalExceptionHandler handleEventException > SEVERE: Exception processing: 1 IndexedEvent{streamIndex=0, > event=Event{timestamp=1447749775529, > data=[eagle.alert.siddhi.EagleAlertContext@2ce1e618, NA, > devdbx-003-12315.phx-os1.stratus.dev.ebay.com, freeSpace, shared, > 1547664650590, 10], isExpired=false}} > java.lang.ClassCastException: java.lang.String cannot be cast to > java.lang.Double > at > org.wso2.siddhi.core.executor.condition.compare.less_than.LessThanCompareConditionExpressionExecutorDoubleInt.execute(LessThanCompareConditionExpressionExecutorDoubleInt.java:31) > at > org.wso2.siddhi.core.executor.condition.compare.CompareConditionExpressionExecutor.execute(CompareConditionExpressionExecutor.java:38) > at > org.wso2.siddhi.core.executor.condition.compare.CompareConditionExpressionExecutor.execute(CompareConditionExpressionExecutor.java:23) > at > org.wso2.siddhi.core.executor.condition.AndConditionExpressionExecutor.execute(AndConditionExpressionExecutor.java:53) > at > org.wso2.siddhi.core.executor.condition.AndConditionExpressionExecutor.execute(AndConditionExpressionExecutor.java:24) > at > org.wso2.siddhi.core.query.processor.filter.FilterProcessor.process(FilterProcessor.java:49) > at > org.wso2.siddhi.core.query.input.ProcessStreamReceiver.processAndClear(ProcessStreamReceiver.java:93) > at > org.wso2.siddhi.core.query.input.ProcessStreamReceiver.receive(ProcessStreamReceiver.java:65) > at > org.wso2.siddhi.core.stream.StreamJunction.sendEvent(StreamJunction.java:114) > at > org.wso2.siddhi.core.stream.StreamJunction$Publisher.send(StreamJunction.java:280) > at > org.wso2.siddhi.core.stream.input.InputDistributor.send(InputDistributor.java:32) > at > org.wso2.siddhi.core.stream.input.SingleThreadEntryValve.send(SingleThreadEntryValve.java:46) > at > org.wso2.siddhi.core.stream.input.SingleStreamEntryValve$SingleEntryValveHandler.sendEvents(SingleStreamEntryValve.java:152) > at > org.wso2.siddhi.core.stream.input.SingleStreamEntryValve$SingleEntryValveHandler.onEvent(SingleStreamEntryValve.java:140) > at > org.wso2.siddhi.core.stream.input.SingleStreamEntryValve$SingleEntryValveHandler.onEvent(SingleStreamEntryValve.java:110) > at > com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:113) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:745) > 2015-11-17 01:42:55 o.a.s.z.s.NIOServerCnxnFactory [ERROR] Thread > Thread[Siddhi-cc2b5e49-00d8-43ea-bac6-c25d9b7e9332-executor-thread-0,5,main] > died > java.lang.RuntimeException: java.lang.ClassCastException: java.lang.String > cannot be cast to java.lang.Double > at > com.lmax.disruptor.FatalExceptionHandler.handleEventException(FatalExceptionHandler.java:45) > ~[disruptor-2.10.1.jar:na] > at > com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:128) > ~[disruptor-2.10.1.jar:na] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > ~[na:1.7.0_60] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > ~[na:1.7.0_60] > at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_60] > Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to > java.lang.Double > at > org.wso2.siddhi.core.executor.condition.compare.less_than.LessThanCompareConditionExpressionExecutorDoubleInt.execute(LessThanCompareConditionExpressionExecutorDoubleInt.java:31) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.executor.condition.compare.CompareConditionExpressionExecutor.execute(CompareConditionExpressionExecutor.java:38) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.executor.condition.compare.CompareConditionExpressionExecutor.execute(CompareConditionExpressionExecutor.java:23) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.executor.condition.AndConditionExpressionExecutor.execute(AndConditionExpressionExecutor.java:53) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.executor.condition.AndConditionExpressionExecutor.execute(AndConditionExpressionExecutor.java:24) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.query.processor.filter.FilterProcessor.process(FilterProcessor.java:49) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.query.input.ProcessStreamReceiver.processAndClear(ProcessStreamReceiver.java:93) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.query.input.ProcessStreamReceiver.receive(ProcessStreamReceiver.java:65) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.stream.StreamJunction.sendEvent(StreamJunction.java:114) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.stream.StreamJunction$Publisher.send(StreamJunction.java:280) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.stream.input.InputDistributor.send(InputDistributor.java:32) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.stream.input.SingleThreadEntryValve.send(SingleThreadEntryValve.java:46) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.stream.input.SingleStreamEntryValve$SingleEntryValveHandler.sendEvents(SingleStreamEntryValve.java:152) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.stream.input.SingleStreamEntryValve$SingleEntryValveHandler.onEvent(SingleStreamEntryValve.java:140) > ~[stormjar.jar:na] > at > org.wso2.siddhi.core.stream.input.SingleStreamEntryValve$SingleEntryValveHandler.onEvent(SingleStreamEntryValve.java:110) > ~[stormjar.jar:na] > at > com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:113) > ~[disruptor-2.10.1.jar:na] > ... 3 common frames omitted > {code} > To fix the problem, we should support to customize ExceptionHandler for > Siddhi CEP engine before starting the Disruptor threads. -- This message was sent by Atlassian JIRA (v6.3.4#6332)