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

Rick Kellogg updated STORM-96:
------------------------------
    Component/s: storm-core

> _msgIdToBatchId in RichSpoutBatchTriggerer.java did not give the right value
> ----------------------------------------------------------------------------
>
>                 Key: STORM-96
>                 URL: https://issues.apache.org/jira/browse/STORM-96
>             Project: Apache Storm
>          Issue Type: Bug
>          Components: storm-core
>            Reporter: James Xu
>
> https://github.com/nathanmarz/storm/issues/734
> _msgIdToBatchId did not give the right value, and the fail/ack in the 
> underline Spout will be never called, and the _finishConditions will never 
> released.
> The fix will be like follows in RichSpoutBatchTriggerer.java
>     public List<Integer> emit(String ignore, List<Object> values, Object 
> msgId) {
>         long batchIdVal = _rand.nextLong();
>         Object batchId = new RichSpoutBatchId(batchIdVal);
>         FinishCondition finish = new FinishCondition();
>         finish.msgId = msgId;
>         List<Integer> tasks = _collector.emit(_stream, new ConsList(batchId, 
> values));
>         Set<Integer> outTasksSet = new HashSet<Integer>(tasks);
>         for(Integer t: _outputTasks) {
>             int count = 0;
>             if(outTasksSet.contains(t)) {
>                 count = 1;
>             }
>             long r = _rand.nextLong();
>             _collector.emitDirect(t, _coordStream, new Values(batchId, 
> count), r);
>             finish.vals.add(r);
>             //Ming Li: Adding the follow line to init the _msgIdToBatchId 
> with correct value
>             _msgIdToBatchId.put(r, batchIdVal);
>         }
>         _finishConditions.put(batchIdVal, finish);
>         return tasks;
>     }



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

Reply via email to