[ 
https://issues.apache.org/jira/browse/EAGLE-41?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15125417#comment-15125417
 ] 

Hao Chen commented on EAGLE-41:
-------------------------------

Support to set customized exception handler for siddhi ExecutionPlanRuntime 

https://github.com/haoch/siddhi/commit/0391aa52a217b80c9cf0fa228a1dc3dba9e84deb#diff-c96818d1e29ef4f7d175cc1bca9778fbR220

Currently problem is siddhi seems not good at handling any unexpected 
exceptions, which is mainly because siddhi is trying to handle events batch in 
chunk, but if any single event in the chunk fails, then it will have to throw 
all the events batch in the chunk.

> 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)

Reply via email to