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]

Reply via email to