hi, all
i'am using CustomStreamGrouping with very simple mod selection. it thrown
IndexOutOfBoundsException. From the trace below:
Caused by: java.lang.IndexOutOfBoundsException: null
at clojure.lang.PersistentVector.arrayFor(PersistentVector.java:106)
~[clojure-1.4.0.jar:na]
at clojure.lang.PersistentVector.nth(PersistentVector.java:110)
~[clojure-1.4.0.jar:na]
at clojure.lang.APersistentVector.get(APersistentVector.java:167)
~[clojure-1.4.0.jar:na]
at bolts.PingPongGrouping.chooseTasks(PingPongGrouping.java:37)
~[stormjar.jar:na]
We locate the problem to the CustomStreamGrouping.chooseTasks() function
which looks like:
@Override
public List<Integer> chooseTasks(int i, List<Object> values) {
ArrayList<Integer> boltIds = new ArrayList<Integer>();
if (values.size() > 0) {
int hashcode = values.get(0).hashCode();
int index = hashcode % _targetTasks.size();
*boltIds.add( _targetTasks.get(index)); // here is the
problem*
} else {
boltIds.add( _targetTasks.get(0));
}
return boltIds;
}
@Override
public void prepare(WorkerTopologyContext context, GlobalStreamId
streamId, List<Integer> targetTasks) {
this._targetTasks = targetTasks;
}
How can it be out of bounds ?
Regards
--
======================================================
Gvain
Email: [email protected]