@Override public void onResponse(Object response) { PartitionResponse result = operationService.nodeEngine.toObject(response); Object[] results = result.getResults(); int[] responsePartitions = result.getPartitions(); assert results.length == responsePartitions.length : "results.length=" + results.length + ", responsePartitions.length=" + responsePartitions.length; assert results.length <= requestedPartitions.size() : "results.length=" + results.length + ", but was sent to just " + requestedPartitions.size() + " partitions"; if (results.length != requestedPartitions.size()) { logger.fine("Responses received for " + responsePartitions.length + " partitions, but " + requestedPartitions.size() + " partitions were requested"); } int failedPartitionsCnt = 0; for (int i = 0; i < responsePartitions.length; i++) { assert requestedPartitions.contains(responsePartitions[i]) : "Response received for partition " + responsePartitions[i] + ", but that partition wasn't requested"; if (results[i] instanceof Throwable) { retryPartition(responsePartitions[i]); failedPartitionsCnt++; } else { setPartitionResult(responsePartitions[i], results[i]); } } decrementLatchAndHandle(requestedPartitions.size() - failedPartitionsCnt); }
@Override public void onResponse(Object response) { PartitionResponse result = operationService.nodeEngine.toObject(response); Object[] results = result.getResults(); int[] partitions = result.getPartitions(); assert results.length <= allPartitions.size() : "results.length=" + results.length + ", but was sent to just " + allPartitions.size() + " partitions"; int failedPartitionsCnt = 0; for (int i = 0; i < partitions.length; i++) { if (results[i] instanceof Throwable) { retryPartition(partitions[i]); failedPartitionsCnt++; } else { setPartitionResult(partitions[i], results[i]); } } decrementLatchAndHandle(allPartitions.size() - failedPartitionsCnt); }