Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
TupleUtils.chooseTaskIndex:
public static <T> int chooseTaskIndex(List<T> keys, int numTasks) { return Math.abs(listHashCode(keys)) % numTasks; }
listHashCode(keys) might return Integer.MIN_VALUE (-2147483648). Math.abs(-2147483648) equals to -2147483648.
In this case, chooseTaskIndex might return negative numbers and it will cause ArrayIndexOutOfBoundsException in FieldsGrouper.chooseTasks
@Override public List<Integer> chooseTasks(int taskId, List<Object> values) { int targetTaskIndex = TupleUtils.chooseTaskIndex(outFields.select(groupFields, values), numTasks); return targetTasks.get(targetTaskIndex); }
Attachments
Issue Links
- links to