private void clearTransactions(Operation patch, String transactionId, Collection<Operation> clearTransactionRequests) { OperationJoin.create(clearTransactionRequests).setCompletion((ops, exs) -> { if (exs != null) { patch.fail(new IllegalStateException(String.format( "Transaction %s failed to clear from some services", transactionId))); return; } patch.complete(); }).sendWith(this); }
private void handleDeleteServices(ServiceDocumentDeleteTaskState task, List<String> documentLinks) { if (documentLinks.size() == 0) { complete(); return; } List<Operation> deleteOperations = new ArrayList<>(); for (String service : documentLinks) { URI serviceUri = UriUtils.buildUri(this.getHost(), service); Operation deleteOp = Operation.createDelete(serviceUri); deleteOperations.add(deleteOp); } OperationJoin operationJoin = OperationJoin.create(); operationJoin .setOperations(deleteOperations) .setCompletion( (ops, exs) -> { if (exs != null && !exs.isEmpty()) { failTask(String.format("%d deletes failed", exs.size()), exs .values().iterator().next()); return; } else { handleQueryServices(task); } }).sendWith(this); }
/** * Create {@link OperationJoin} with an array of {@link Operation}s to be joined together in * parallel execution. */ public static OperationJoin create(Operation... ops) { OperationJoin joinOp = new OperationJoin(); joinOp.setOperations(ops); return joinOp; }
Operation op2 = createServiceOperation(this.services.get(1)); Operation op3 = createServiceOperation(this.services.get(2)); OperationJoin join1 = OperationJoin.create(); OperationJoin join2 = OperationJoin.create(); Operation op5 = createServicePatch(ops.get(op2.getId())); Operation op6 = createServicePatch(ops.get(op3.getId())); join1.setOperations(op4, op5, op6); } else { assertEquals(ops.values().size(), 3); join2.setOperations(Stream.of(createServicePatch(op1), createServicePatch(op2), createServicePatch(op3)));
/** * Create {@link OperationSequence} with a list of {@link Operation}s to be joined together in * parallel execution. */ public static OperationSequence create(Operation... ops) { return create(OperationJoin.create(ops)); }
/** * Send the join operations using the {@link ServiceRequestSender}. A sender can be * a ServiceHost, ServiceClient or a Service. * Caller can also provide batch size to control the rate at which operations are sent. */ public void sendWith(ServiceRequestSender sender, int batchSize) { if (batchSize <= 0) { throw new IllegalArgumentException(ERROR_MSG_INVALID_BATCH_SIZE); } this.batchSize = batchSize; this.sendWith(sender); }
public OperationSequence setCompletion(boolean cumulative, JoinedCompletionHandler joinedCompletion) { this.cumulative = cumulative; this.join.setCompletion(joinedCompletion); return this; }
Operation op2 = createServiceOperation(this.services.get(1)); Operation op3 = createServiceOperation(this.services.get(2)); OperationJoin join1 = OperationJoin.create(); OperationJoin join2 = OperationJoin.create(); Operation op5 = createServicePatch(ops.get(op2.getId())); Operation op6 = createServicePatch(ops.get(op3.getId())); join1.setOperations(op4, op5, op6); } else { assertEquals(ops.values().size(), 3); join2.setOperations(Stream.of(createServicePatch(op1), createServicePatch(op2), createServicePatch(op3)));
public OperationSequence next(Operation... ops) { return next(OperationJoin.create(ops)); }
private void send(ServiceRequestSender sender) { validateSendRequest(sender); this.sender = sender; setProxyCompletion(); this.join.sendWith(sender); }
private void setProxyCompletion() { this.join .setCompletion(new CompletionHandlerSequenceProxy(this, this.join.joinedCompletion)); }
/** * Create {@link OperationJoin} with a collection of {@link Operation}s to be joined together in * parallel execution. */ public static OperationJoin create(Collection<Operation> ops) { OperationJoin joinOp = new OperationJoin(); joinOp.setOperations(ops); return joinOp; }
private void deleteServicesAndClearTransactions(Operation patch, String transactionId, Collection<Operation> deleteRequests, Collection<Operation> clearTransactionRequests) { OperationJoin.create(deleteRequests).setCompletion((ops, exs) -> { if (exs != null) { patch.fail(new IllegalStateException(String.format( "Transaction %s failed to delete some services", transactionId))); return; } if (clearTransactionRequests != null && !clearTransactionRequests.isEmpty()) { clearTransactions(patch, transactionId, clearTransactionRequests); } else { patch.complete(); } }).sendWith(this); }
OperationJoin operationJoin = OperationJoin.create(); operationJoin .setOperations(deleteOperations) .setCompletion((ops, exs) -> { if (exs != null && !exs.isEmpty()) { sendSelfFailurePatch(task, String.format("%d deletes failed", exs.size())); sendSelfPatch(task, TaskStage.FINISHED, null); }).sendWith(this);
Operation op2 = createServiceOperation(this.services.get(1)); Operation op3 = createServiceOperation(this.services.get(2)); OperationJoin join = OperationJoin.create(); Operation op5 = createServicePatch(ops.get(op2.getId())); Operation op6 = createServicePatch(ops.get(op3.getId())); join.setOperations(op4, op5, op6); join.setOperations(createServiceOperation(this.services.get(0))); host.failIteration(new IllegalStateException("Expected exception")); } catch (IllegalStateException e) {
/** * Create {@link OperationJoin} with a stream of {@link Operation}s to be joined together in * parallel execution. */ public static OperationJoin create(Stream<Operation> ops) { OperationJoin joinOp = new OperationJoin(); joinOp.setOperations(ops); return joinOp; }
private void removeCompositeComponents(CompositeComponentRemovalTaskState state) { List<Operation> operations = state.resourceLinks.stream() .map((selfLink) -> Operation.createDelete(this, selfLink)) .collect(Collectors.toList()); OperationJoin.create(operations) .setCompletion((ops, exs) -> { if (exs != null) { // ignore CancellationException when removing composite component exs = exs.entrySet().stream() .filter((e) -> !(e.getValue() instanceof CancellationException)) .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())); } if (exs != null && !exs.isEmpty()) { failTask("Failed removing composite states: " + Utils.toString(exs), null); return; } proceedTo(SubStage.COMPLETED); }) .sendWith(this); }