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

ASF GitHub Bot commented on STORM-1642:
---------------------------------------

Github user liurenjie1024 commented on the pull request:

    https://github.com/apache/storm/pull/1316#issuecomment-206713335
  
    As I have mentioned in bug report, the reason why NPE happens is that storm 
is vulnerable to fraud message from  processes outside the cluster. To 
reproduce the NPE, you just need to send a message [taskid 0] to [host]:[port] 
from anywhere, where taskid is id of one of the tasks running on [host]:[port]. 
In this case, storm will return a TaskMessage with payload set to null to the 
deserializer. 
    Storm does not check whether the task message is from processes within the 
cluster, so deserialization may fail. I  think storm should skip the fruad task 
message rather than shutdowning the worker when deserialization failed.


> NullPointerException when deserialize
> -------------------------------------
>
>                 Key: STORM-1642
>                 URL: https://issues.apache.org/jira/browse/STORM-1642
>             Project: Apache Storm
>          Issue Type: Bug
>          Components: storm-core
>    Affects Versions: 0.10.0
>         Environment: jdk 8
>            Reporter: Renjie Liu
>
> Hi:
> I've encountered the following NPE when storm tries to deserialize. I did not 
> use OutputCollector concurrently in my code.  The only object we are passing 
> between bolts are a thrift object, and we have written a serializer for it. 
> I've attached the code of serializer and please help to check whether there 
> are any potential bugs there.
> 2016-03-04 17:17:43.583 b.s.util [ERROR] Async loop died!
> java.lang.RuntimeException: java.lang.NullPointerException
>         at 
> backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:135)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:106)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:80)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.daemon.executor$fn__5694$fn__5707$fn__5758.invoke(executor.clj:819)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at backtype.storm.util$async_loop$fn__545.invoke(util.clj:479) 
> [storm-core-0.10.0.jar:0.10.0]
>         at clojure.lang.AFn.run(AFn.java:22) [clojure-1.6.0.jar:?]
>         at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
> Caused by: java.lang.NullPointerException
>         at com.esotericsoftware.kryo.io.Input.setBuffer(Input.java:57) 
> ~[kryo-2.21.jar:?]
>         at 
> backtype.storm.serialization.KryoTupleDeserializer.deserialize(KryoTupleDeserializer.java:47)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.daemon.executor$mk_task_receiver$fn__5615.invoke(executor.clj:433)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.disruptor$clojure_handler$reify__5189.onEvent(disruptor.clj:58)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:132)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         ... 6 more
> 2016-03-04 17:17:43.584 b.s.d.executor [ERROR]
> java.lang.RuntimeException: java.lang.NullPointerException
>         at 
> backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:135)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:106)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:80)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.daemon.executor$fn__5694$fn__5707$fn__5758.invoke(executor.clj:819)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at backtype.storm.util$async_loop$fn__545.invoke(util.clj:479) 
> [storm-core-0.10.0.jar:0.10.0]
>         at clojure.lang.AFn.run(AFn.java:22) [clojure-1.6.0.jar:?]
>         at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
> Caused by: java.lang.NullPointerException
>         at com.esotericsoftware.kryo.io.Input.setBuffer(Input.java:57) 
> ~[kryo-2.21.jar:?]
>         at 
> backtype.storm.serialization.KryoTupleDeserializer.deserialize(KryoTupleDeserializer.java:47)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.daemon.executor$mk_task_receiver$fn__5615.invoke(executor.clj:433)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.disruptor$clojure_handler$reify__5189.onEvent(disruptor.clj:58)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:132)
>  ~[storm-core-0.10.0.jar:0.10.0]
>         ... 6 more
> 2016-03-04 17:17:43.648 b.s.util [ERROR] Halting process: ("Worker died")
> java.lang.RuntimeException: ("Worker died")
>         at backtype.storm.util$exit_process_BANG_.doInvoke(util.clj:336) 
> [storm-core-0.10.0.jar:0.10.0]
>         at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.6.0.jar:?]
>         at 
> backtype.storm.daemon.worker$fn__7188$fn__7189.invoke(worker.clj:536) 
> [storm-core-0.10.0.jar:0.10.0]
>         at 
> backtype.storm.daemon.executor$mk_executor_data$fn__5523$fn__5524.invoke(executor.clj:261)
>  [storm-core-0.10.0.jar:0.10.0]
>         at backtype.storm.util$async_loop$fn__545.invoke(util.clj:489) 
> [storm-core-0.10.0.jar:0.10.0]
>         at clojure.lang.AFn.run(AFn.java:22) [clojure-1.6.0.jar:?]
>         at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]



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

Reply via email to