Github user revans2 commented on a diff in the pull request: https://github.com/apache/storm/pull/2762#discussion_r202341617 --- Diff: storm-client/src/jvm/org/apache/storm/messaging/netty/StormClientHandler.java --- @@ -47,12 +47,20 @@ public void channelRead(ChannelHandlerContext ctx, Object message) throws Except BackPressureStatus status = (BackPressureStatus) message; if (status.bpTasks != null) { for (Integer bpTask : status.bpTasks) { - remoteBpStatus[bpTask].set(true); + try { + remoteBpStatus[bpTask].set(true); + } catch (ArrayIndexOutOfBoundsException e) { --- End diff -- So there are two issues happening in the jira. Previously when under heavy load a backpressure messsage would be sent. Under the old code this might contain a -1 which would cause an ArrayIndexOutOFBoundsException to happen. When it did some backpressure status updates in the message might be lost (specifically the ones that turn off backpressure) and the topology would stop processing. I fixed the cause of the -1 indexes, but I thought it would be best to also guard against future problems and if there is one we can process the rest of the status updates.
---