private void retryFailedPartitions() throws InterruptedException, ExecutionException { List<Integer> failedPartitions = new LinkedList<Integer>(); for (Map.Entry<Integer, Object> partitionResult : partitionResults.entrySet()) { int partitionId = partitionResult.getKey(); Object result = partitionResult.getValue(); if (result instanceof Throwable) { failedPartitions.add(partitionId); } } for (Integer failedPartition : failedPartitions) { Operation operation; PartitionAwareOperationFactory partitionAwareFactory = extractPartitionAware(operationFactory); if (partitionAwareFactory != null) { operation = partitionAwareFactory.createPartitionOperation(failedPartition); } else { operation = operationFactory.createOperation(); } Future future = operationService.createInvocationBuilder(serviceName, operation, failedPartition).invoke(); partitionResults.put(failedPartition, future); } for (Integer failedPartition : failedPartitions) { Future future = (Future) partitionResults.get(failedPartition); Object result = future.get(); partitionResults.put(failedPartition, result); } } }
@Override public void start() { if (partitions.length == 0) { // partitions may be empty if the node has joined and didn't get any partitions yet // a generic operation may already execute on it. sendResponse(EMPTY_RESPONSE); return; } PartitionAwareOperationFactory partitionAwareFactory = extractPartitionAware(operationFactory); if (partitionAwareFactory == null) { executeOperations(); } else { executeOperations(partitionAwareFactory); } }
@Override public void start() { if (partitions.length == 0) { // partitions may be empty if the node has joined and didn't get any partitions yet // a generic operation may already execute on it. sendResponse(EMPTY_RESPONSE); return; } PartitionAwareOperationFactory partitionAwareFactory = extractPartitionAware(operationFactory); if (partitionAwareFactory == null) { executeOperations(); } else { executeOperations(partitionAwareFactory); } }
private void retryPartition(final int partitionId) { Operation operation; PartitionAwareOperationFactory partitionAwareFactory = extractPartitionAware(operationFactory); if (partitionAwareFactory != null) { operation = partitionAwareFactory.createPartitionOperation(partitionId); } else { operation = operationFactory.createOperation(); } operationService.createInvocationBuilder(serviceName, operation, partitionId) .invoke() .andThen(new ExecutionCallback<Object>() { @Override public void onResponse(Object response) { setPartitionResult(partitionId, response); decrementLatchAndHandle(1); } @Override public void onFailure(Throwable t) { setPartitionResult(partitionId, t); decrementLatchAndHandle(1); } }); }
private void retryPartition(final int partitionId) { Operation operation; PartitionAwareOperationFactory partitionAwareFactory = extractPartitionAware(operationFactory); if (partitionAwareFactory != null) { operation = partitionAwareFactory.createPartitionOperation(partitionId); } else { operation = operationFactory.createOperation(); } operationService.createInvocationBuilder(serviceName, operation, partitionId) .invoke() .andThen(new ExecutionCallback<Object>() { @Override public void onResponse(Object response) { setPartitionResult(partitionId, response); decrementLatchAndHandle(1); } @Override public void onFailure(Throwable t) { setPartitionResult(partitionId, t); decrementLatchAndHandle(1); } }); }