@Override public void onExecutionFailure(Throwable cause) { // we also send a response so that the caller doesn't wait indefinitely. sendResponse(new ErrorResponse(cause, getCallId(), isUrgent())); getLogger().severe(cause); }
private String extractCallerUuid() { // Clients callerUUID can be set already. See OperationFactoryWrapper usage. if (operationFactory instanceof OperationFactoryWrapper) { return ((OperationFactoryWrapper) operationFactory).getUuid(); } // Members UUID return getCallerUuid(); } }
private void executeOperations() { PartitionTaskFactory f = new PartitionTaskFactory() { private final NodeEngine nodeEngine = getNodeEngine(); private final OperationResponseHandler responseHandler = new OperationResponseHandlerImpl(partitions); private final Object service = getServiceName() == null ? null : getService(); @Override public Operation create(int partitionId) { Operation op = operationFactory.createOperation() .setNodeEngine(nodeEngine) .setPartitionId(partitionId) .setReplicaIndex(getReplicaIndex()) .setOperationResponseHandler(responseHandler) .setServiceName(getServiceName()) .setService(service) .setCallerUuid(extractCallerUuid()); OperationAccessor.setCallerAddress(op, getCallerAddress()); return op; } }; getOperationService().executeOnPartitions(f, toPartitionBitSet()); }
@Override public Operation create(int partitionId) { Operation op = operationFactory.createOperation() .setNodeEngine(nodeEngine) .setPartitionId(partitionId) .setReplicaIndex(getReplicaIndex()) .setOperationResponseHandler(responseHandler) .setServiceName(getServiceName()) .setService(service) .setCallerUuid(extractCallerUuid()); OperationAccessor.setCallerAddress(op, getCallerAddress()); return op; } };
private void invokeOnAllPartitions() { for (Map.Entry<Address, List<Integer>> mp : memberPartitions.entrySet()) { Address address = mp.getKey(); List<Integer> partitions = mp.getValue(); PartitionIteratingOperation op = new PartitionIteratingOperation(operationFactory, toIntArray(partitions)); Future future = operationService.createInvocationBuilder(serviceName, op, address) .setTryCount(TRY_COUNT) .setTryPauseMillis(TRY_PAUSE_MILLIS) .invoke(); futures.put(address, future); } }
private InternalOperationService getOperationService() { return (InternalOperationService) getNodeEngine().getOperationService(); }
public static String toOperationDesc(Operation op) { Class<? extends Operation> operationClass = op.getClass(); if (PartitionIteratingOperation.class.isAssignableFrom(operationClass)) { PartitionIteratingOperation partitionIteratingOperation = (PartitionIteratingOperation) op; OperationFactory operationFactory = partitionIteratingOperation.getOperationFactory(); String desc = DESCRIPTORS.get(operationFactory.getClass().getName()); if (desc == null) { desc = PartitionIteratingOperation.class.getSimpleName() + "(" + operationFactory.getClass().getName() + ")"; DESCRIPTORS.put(operationFactory.getClass().getName(), desc); } return desc; } else if (Backup.class.isAssignableFrom(operationClass)) { Backup backup = (Backup) op; Operation backupOperation = backup.getBackupOp(); String desc = DESCRIPTORS.get(backupOperation.getClass().getName()); if (desc == null) { desc = Backup.class.getSimpleName() + "(" + backup.getBackupOp().getClass().getName() + ")"; DESCRIPTORS.put(backupOperation.getClass().getName(), desc); } return desc; } else { return operationClass.getName(); } } }
@Override public Operation create(int partitionId) { Operation op = operationFactory.createOperation() .setNodeEngine(nodeEngine) .setPartitionId(partitionId) .setReplicaIndex(getReplicaIndex()) .setOperationResponseHandler(responseHandler) .setServiceName(getServiceName()) .setService(service) .setCallerUuid(extractCallerUuid()); OperationAccessor.setCallerAddress(op, getCallerAddress()); return op; } };
private void invokeOnAllPartitions() { if (memberPartitions.isEmpty()) { future.setResult(Collections.EMPTY_MAP); return; } for (final Map.Entry<Address, List<Integer>> mp : memberPartitions.entrySet()) { final Address address = mp.getKey(); List<Integer> partitions = mp.getValue(); PartitionIteratingOperation op = new PartitionIteratingOperation(operationFactory, toIntArray(partitions)); operationService.createInvocationBuilder(serviceName, op, address) .setTryCount(TRY_COUNT) .setTryPauseMillis(TRY_PAUSE_MILLIS) .invoke() .andThen(new FirstAttemptExecutionCallback(partitions)); } }
private InternalOperationService getOperationService() { return (InternalOperationService) getNodeEngine().getOperationService(); }
public static String toOperationDesc(Operation op) { Class<? extends Operation> operationClass = op.getClass(); if (PartitionIteratingOperation.class.isAssignableFrom(operationClass)) { PartitionIteratingOperation partitionIteratingOperation = (PartitionIteratingOperation) op; OperationFactory operationFactory = partitionIteratingOperation.getOperationFactory(); String desc = DESCRIPTORS.get(operationFactory.getClass().getName()); if (desc == null) { desc = PartitionIteratingOperation.class.getSimpleName() + "(" + operationFactory.getClass().getName() + ")"; DESCRIPTORS.put(operationFactory.getClass().getName(), desc); } return desc; } else if (Backup.class.isAssignableFrom(operationClass)) { Backup backup = (Backup) op; Operation backupOperation = backup.getBackupOp(); String desc = DESCRIPTORS.get(backupOperation.getClass().getName()); if (desc == null) { desc = Backup.class.getSimpleName() + "(" + backup.getBackupOp().getClass().getName() + ")"; DESCRIPTORS.put(backupOperation.getClass().getName(), desc); } return desc; } else { return operationClass.getName(); } } }
@Override public Operation create(int partitionId) { Operation op = factory.createPartitionOperation(partitionId) .setNodeEngine(nodeEngine) .setPartitionId(partitionId) .setReplicaIndex(getReplicaIndex()) .setOperationResponseHandler(responseHandler) .setServiceName(getServiceName()) .setService(service) .setCallerUuid(extractCallerUuid()); OperationAccessor.setCallerAddress(op, getCallerAddress()); return op; } };
private void executeOperations(PartitionAwareOperationFactory givenFactory) { final NodeEngine nodeEngine = getNodeEngine(); final PartitionAwareOperationFactory factory = givenFactory.createFactoryOnRunner(nodeEngine, partitions); final OperationResponseHandler responseHandler = new OperationResponseHandlerImpl(partitions); final Object service = getServiceName() == null ? null : getService(); PartitionTaskFactory f = new PartitionTaskFactory() { @Override public Operation create(int partitionId) { Operation op = factory.createPartitionOperation(partitionId) .setNodeEngine(nodeEngine) .setPartitionId(partitionId) .setReplicaIndex(getReplicaIndex()) .setOperationResponseHandler(responseHandler) .setServiceName(getServiceName()) .setService(service) .setCallerUuid(extractCallerUuid()); OperationAccessor.setCallerAddress(op, getCallerAddress()); return op; } }; getOperationService().executeOnPartitions(f, toPartitionBitSet()); }
@Override public void onExecutionFailure(Throwable cause) { // we also send a response so that the caller doesn't wait indefinitely. sendResponse(new ErrorResponse(cause, getCallId(), isUrgent())); getLogger().severe(cause); }
private void invokeOnAllPartitions() { if (memberPartitions.isEmpty()) { future.setResult(Collections.EMPTY_MAP); if (callback != null) { callback.onResponse(Collections.EMPTY_MAP); } return; } for (final Map.Entry<Address, List<Integer>> mp : memberPartitions.entrySet()) { final Address address = mp.getKey(); List<Integer> partitions = mp.getValue(); PartitionIteratingOperation op = new PartitionIteratingOperation(operationFactory, toIntArray(partitions)); operationService.createInvocationBuilder(serviceName, op, address) .setTryCount(TRY_COUNT) .setTryPauseMillis(TRY_PAUSE_MILLIS) .invoke() .andThen(new FirstAttemptExecutionCallback(mp.getValue())); } }
private BitSet toPartitionBitSet() { BitSet bitSet = new BitSet(getNodeEngine().getPartitionService().getPartitionCount()); for (int partition : partitions) { bitSet.set(partition); } return bitSet; }
private String extractCallerUuid() { // Clients callerUUID can be set already. See OperationFactoryWrapper usage. if (operationFactory instanceof OperationFactoryWrapper) { return ((OperationFactoryWrapper) operationFactory).getUuid(); } // Members UUID return getCallerUuid(); } }
@Override public Operation create(int partitionId) { Operation op = factory.createPartitionOperation(partitionId) .setNodeEngine(nodeEngine) .setPartitionId(partitionId) .setReplicaIndex(getReplicaIndex()) .setOperationResponseHandler(responseHandler) .setServiceName(getServiceName()) .setService(service) .setCallerUuid(extractCallerUuid()); OperationAccessor.setCallerAddress(op, getCallerAddress()); return op; } };
private void executeOperations(PartitionAwareOperationFactory givenFactory) { final NodeEngine nodeEngine = getNodeEngine(); final PartitionAwareOperationFactory factory = givenFactory.createFactoryOnRunner(nodeEngine, partitions); final OperationResponseHandler responseHandler = new OperationResponseHandlerImpl(partitions); final Object service = getServiceName() == null ? null : getService(); PartitionTaskFactory f = new PartitionTaskFactory() { @Override public Operation create(int partitionId) { Operation op = factory.createPartitionOperation(partitionId) .setNodeEngine(nodeEngine) .setPartitionId(partitionId) .setReplicaIndex(getReplicaIndex()) .setOperationResponseHandler(responseHandler) .setServiceName(getServiceName()) .setService(service) .setCallerUuid(extractCallerUuid()); OperationAccessor.setCallerAddress(op, getCallerAddress()); return op; } }; getOperationService().executeOnPartitions(f, toPartitionBitSet()); }
return new BackupAckResponse(); case PARTITION_ITERATOR: return new PartitionIteratingOperation(); case PARTITION_RESPONSE: return new PartitionResponse();