[ 
https://issues.apache.org/jira/browse/EAGLE-49?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hao Chen updated EAGLE-49:
--------------------------
    Description: 
Currently the solution is throwing exception once the coming messages' 
structure don't match with pre-defined schema which is not very good:
https://github.com/apache/incubator-eagle/blob/master/eagle-core/eagle-alert/eagle-alert-process/src/main/java/org/apache/eagle/alert/siddhi/SiddhiPolicyEvaluator.java#L189-L195

But if no predefined message validation, the bolt will crash for following erro:
{code}
2015-11-22 23:55:33,564 ERROR 
[Siddhi-79130d87-373f-4b0b-bdca-a61a5f37f2de-executor-thread-0] 
server.NIOServerCnxnFactory[44]: Thread 
Thread[Siddhi-79130d87-373f-4b0b-bdca-a61a5f37f2de-executor-thread-0,5,main] 
died
java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException
        at 
com.lmax.disruptor.FatalExceptionHandler.handleEventException(FatalExceptionHandler.java:45)
        at 
com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:128)
        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)
Caused by: java.lang.ArrayIndexOutOfBoundsException
        at java.lang.System.arraycopy(Native Method)
        at 
org.wso2.siddhi.core.event.stream.converter.ZeroStreamEventConverter.convertToInnerStreamEvent(ZeroStreamEventConverter.java:28)
        at 
org.wso2.siddhi.core.event.stream.converter.ZeroStreamEventConverter.convertEvent(ZeroStreamEventConverter.java:34)
        at 
org.wso2.siddhi.core.event.stream.converter.ConversionStreamEventChunk.convertAndAssign(ConversionStreamEventChunk.java:46)
        at 
org.wso2.siddhi.core.query.input.ProcessStreamReceiver.receive(ProcessStreamReceiver.java:64)
        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)
{code}

We should provide a smarter way to fix the bad message if possible like 
[1] Fill in default value for missing fields.
[2] Remove unaccepted fileds and log as ignored warning.

  was:
Currently the solution is throwing exception once the coming messages' 
structure don't match with pre-defined schema which is not very good:
https://github.com/apache/incubator-eagle/blob/master/eagle-core/eagle-alert/eagle-alert-process/src/main/java/org/apache/eagle/alert/siddhi/SiddhiPolicyEvaluator.java#L189-L195

We should provide a smarter way to fix the bad message if possible like 
[1] Fill in default value for missing fields.
[2] Remove unaccepted fileds and log as ignored warning.


> Handle the bad-format message in smarter way instead of throwing exception 
> always
> ---------------------------------------------------------------------------------
>
>                 Key: EAGLE-49
>                 URL: https://issues.apache.org/jira/browse/EAGLE-49
>             Project: Eagle
>          Issue Type: Improvement
>            Reporter: Hao Chen
>            Assignee: Hao Chen
>
> Currently the solution is throwing exception once the coming messages' 
> structure don't match with pre-defined schema which is not very good:
> https://github.com/apache/incubator-eagle/blob/master/eagle-core/eagle-alert/eagle-alert-process/src/main/java/org/apache/eagle/alert/siddhi/SiddhiPolicyEvaluator.java#L189-L195
> But if no predefined message validation, the bolt will crash for following 
> erro:
> {code}
> 2015-11-22 23:55:33,564 ERROR 
> [Siddhi-79130d87-373f-4b0b-bdca-a61a5f37f2de-executor-thread-0] 
> server.NIOServerCnxnFactory[44]: Thread 
> Thread[Siddhi-79130d87-373f-4b0b-bdca-a61a5f37f2de-executor-thread-0,5,main] 
> died
> java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException
>       at 
> com.lmax.disruptor.FatalExceptionHandler.handleEventException(FatalExceptionHandler.java:45)
>       at 
> com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:128)
>       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)
> Caused by: java.lang.ArrayIndexOutOfBoundsException
>       at java.lang.System.arraycopy(Native Method)
>       at 
> org.wso2.siddhi.core.event.stream.converter.ZeroStreamEventConverter.convertToInnerStreamEvent(ZeroStreamEventConverter.java:28)
>       at 
> org.wso2.siddhi.core.event.stream.converter.ZeroStreamEventConverter.convertEvent(ZeroStreamEventConverter.java:34)
>       at 
> org.wso2.siddhi.core.event.stream.converter.ConversionStreamEventChunk.convertAndAssign(ConversionStreamEventChunk.java:46)
>       at 
> org.wso2.siddhi.core.query.input.ProcessStreamReceiver.receive(ProcessStreamReceiver.java:64)
>       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)
> {code}
> We should provide a smarter way to fix the bad message if possible like 
> [1] Fill in default value for missing fields.
> [2] Remove unaccepted fileds and log as ignored warning.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to