You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@storm.apache.org by "Arun Mahadevan (JIRA)" <ji...@apache.org> on 2018/04/19 17:36:00 UTC

[jira] [Updated] (STORM-3035) JMS Spout ack method causes failure in some cases

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

Arun Mahadevan updated STORM-3035:
----------------------------------
    Description: 
JMS Spout ack method assumes that the set "toCommit" is always non-empty but if a fail is invoked (that clears the "toCommit") followed by an ack, it can cause failure.

 
{noformat}
2018-03-09 08:43:03,220 GMT-0500 MCO-432882-L2 [Thread-36-inboundSpout-executor[5 5]] 7.0.0 ERROR 
logging$eval1$fn__7.invoke Async loop died! java.lang.RuntimeException: java.util.NoSuchElementException at 
org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:485) ~[storm-core-1.1.0.2.6.3.0-
235.jar:1.1.0.2.6.3.0-235] at 
org.apache.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:451) ~[storm-core-
1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at 
org.apache.storm.utils.DisruptorQueue.consumeBatch(DisruptorQueue.java:441) ~[storm-core-1.1.0.2.6.3.0-
235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.disruptor$consume_batch.invoke(disruptor.clj:69) ~[storm-core-
1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at 
org.apache.storm.daemon.executor$fn__6856$fn__6871$fn__6902.invoke(executor.clj:627) ~[storm-core-1.1.0.2.6.3.0-
235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.util$async_loop$fn__555.invoke(util.clj:484) [storm-core-
1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?] at 
java.lang.Thread.run(Thread.java:745) [?:1.8.0_111] Caused by: java.util.NoSuchElementException at 
java.util.TreeMap.key(TreeMap.java:1327) ~[?:1.8.0_111] at java.util.TreeMap.firstKey(TreeMap.java:290) ~
[?:1.8.0_111] at java.util.TreeSet.first(TreeSet.java:394) ~[?:1.8.0_111] at 
org.apache.storm.jms.spout.JmsSpout.ack(JmsSpout.java:251) ~[classes/:?] at 
org.apache.storm.daemon.executor$ack_spout_msg.invoke(executor.clj:446) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.daemon.executor$fn__6856$tuple_action_fn__6862.invoke(executor.clj:535) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.daemon.executor$mk_task_receiver$fn__6845.invoke(executor.clj:462) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.disruptor$clojure_handler$reify__6558.onEvent(disruptor.clj:40) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:472) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] ... 7 more

{noformat}

  was:
JMS Spout ack method assumes that the set "toCommit" is always non-empty but if a fail is invoked (that clears the "toCommit") followed by an ack, it can cause failure.

 
{noformat}
2018-03-09 08:43:03,220 GMT-0500 MCO-432882-L2 [Thread-36-inboundSpout-executor[5 5]] 7.0.0 ERROR logging$eval1$fn__7.invoke Async loop died! java.lang.RuntimeException: java.util.NoSuchElementException at org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:485) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:451) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.utils.DisruptorQueue.consumeBatch(DisruptorQueue.java:441) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.disruptor$consume_batch.invoke(disruptor.clj:69) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.daemon.executor$fn__6856$fn__6871$fn__6902.invoke(executor.clj:627) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.util$async_loop$fn__555.invoke(util.clj:484) [storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111] Caused by: java.util.NoSuchElementException at java.util.TreeMap.key(TreeMap.java:1327) ~[?:1.8.0_111] at java.util.TreeMap.firstKey(TreeMap.java:290) ~[?:1.8.0_111] at java.util.TreeSet.first(TreeSet.java:394) ~[?:1.8.0_111] at org.apache.storm.jms.spout.JmsSpout.ack(JmsSpout.java:251) ~[classes/:?] at org.apache.storm.daemon.executor$ack_spout_msg.invoke(executor.clj:446) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.daemon.executor$fn__6856$tuple_action_fn__6862.invoke(executor.clj:535) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.daemon.executor$mk_task_receiver$fn__6845.invoke(executor.clj:462) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.disruptor$clojure_handler$reify__6558.onEvent(disruptor.clj:40) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:472) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] ... 7 more{noformat}


> JMS Spout ack method causes failure in some cases
> -------------------------------------------------
>
>                 Key: STORM-3035
>                 URL: https://issues.apache.org/jira/browse/STORM-3035
>             Project: Apache Storm
>          Issue Type: Bug
>            Reporter: Arun Mahadevan
>            Assignee: Arun Mahadevan
>            Priority: Major
>             Fix For: 2.0.0, 1.2.2
>
>
> JMS Spout ack method assumes that the set "toCommit" is always non-empty but if a fail is invoked (that clears the "toCommit") followed by an ack, it can cause failure.
>  
> {noformat}
> 2018-03-09 08:43:03,220 GMT-0500 MCO-432882-L2 [Thread-36-inboundSpout-executor[5 5]] 7.0.0 ERROR 
> logging$eval1$fn__7.invoke Async loop died! java.lang.RuntimeException: java.util.NoSuchElementException at 
> org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:485) ~[storm-core-1.1.0.2.6.3.0-
> 235.jar:1.1.0.2.6.3.0-235] at 
> org.apache.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:451) ~[storm-core-
> 1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at 
> org.apache.storm.utils.DisruptorQueue.consumeBatch(DisruptorQueue.java:441) ~[storm-core-1.1.0.2.6.3.0-
> 235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.disruptor$consume_batch.invoke(disruptor.clj:69) ~[storm-core-
> 1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at 
> org.apache.storm.daemon.executor$fn__6856$fn__6871$fn__6902.invoke(executor.clj:627) ~[storm-core-1.1.0.2.6.3.0-
> 235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.util$async_loop$fn__555.invoke(util.clj:484) [storm-core-
> 1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?] at 
> java.lang.Thread.run(Thread.java:745) [?:1.8.0_111] Caused by: java.util.NoSuchElementException at 
> java.util.TreeMap.key(TreeMap.java:1327) ~[?:1.8.0_111] at java.util.TreeMap.firstKey(TreeMap.java:290) ~
> [?:1.8.0_111] at java.util.TreeSet.first(TreeSet.java:394) ~[?:1.8.0_111] at 
> org.apache.storm.jms.spout.JmsSpout.ack(JmsSpout.java:251) ~[classes/:?] at 
> org.apache.storm.daemon.executor$ack_spout_msg.invoke(executor.clj:446) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.daemon.executor$fn__6856$tuple_action_fn__6862.invoke(executor.clj:535) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.daemon.executor$mk_task_receiver$fn__6845.invoke(executor.clj:462) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.disruptor$clojure_handler$reify__6558.onEvent(disruptor.clj:40) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] at org.apache.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:472) ~[storm-core-1.1.0.2.6.3.0-235.jar:1.1.0.2.6.3.0-235] ... 7 more
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)