@Override public <T> ICompletableFuture<Map<Integer, T>> invokeOnPartitionsAsync( String serviceName, OperationFactory operationFactory, Collection<Integer> partitions) { Map<Address, List<Integer>> memberPartitions = getMemberPartitions(partitions); InvokeOnPartitions invokeOnPartitions = new InvokeOnPartitions(this, serviceName, operationFactory, memberPartitions); return invokeOnPartitions.invokeAsync(); }
@Override public <T> Map<Integer, T> invokeOnPartitions(String serviceName, OperationFactory operationFactory, Collection<Integer> partitions) throws Exception { Map<Address, List<Integer>> memberPartitions = getMemberPartitions(partitions); InvokeOnPartitions invokeOnPartitions = new InvokeOnPartitions(this, serviceName, operationFactory, memberPartitions); return invokeOnPartitions.invoke(); }
@Override public <T> ICompletableFuture<Map<Integer, T>> invokeOnPartitionsAsync( String serviceName, OperationFactory operationFactory, Collection<Integer> partitions, ExecutionCallback<Map<Integer, T>> callback) { Map<Address, List<Integer>> memberPartitions = getMemberPartitions(partitions); InvokeOnPartitionsAsync invokeOnPartitions = new InvokeOnPartitionsAsync(this, serviceName, operationFactory, memberPartitions); return invokeOnPartitions.invokeAsync(callback); }
@Override @SuppressWarnings("unchecked") public <V> void asyncInvokeOnPartition(String serviceName, Operation op, int partitionId, ExecutionCallback<V> callback) { op.setServiceName(serviceName).setPartitionId(partitionId).setReplicaIndex(DEFAULT_REPLICA_INDEX); InvocationFuture future = new PartitionInvocation(invocationContext, op, invocationMaxRetryCount, invocationRetryPauseMillis, DEFAULT_CALL_TIMEOUT, DEFAULT_DESERIALIZE_RESULT, failOnIndeterminateOperationState).invokeAsync(); if (callback != null) { future.andThen(callback); } }
private void resetAndReInvoke() { if (!context.invocationRegistry.deregister(this)) { // another thread already did something else with this invocation return; } invokeCount = 0; pendingResponse = VOID; pendingResponseReceivedMillis = -1; backupsAcksExpected = 0; backupsAcksReceived = 0; lastHeartbeatMillis = 0; doInvoke(false); }
@Override @SuppressWarnings("unchecked") public <E> InternalCompletableFuture<E> invokeOnPartition(Operation op) { return new PartitionInvocation( invocationContext, op, invocationMaxRetryCount, invocationRetryPauseMillis, DEFAULT_CALL_TIMEOUT, DEFAULT_DESERIALIZE_RESULT, failOnIndeterminateOperationState).invoke(); }
Packet toBackupAckPacket(long callId, boolean urgent) { byte[] bytes = new byte[BACKUP_RESPONSE_SIZE_IN_BYTES]; writeResponsePrologueBytes(bytes, BACKUP_ACK_RESPONSE, callId, urgent); return newResponsePacket(bytes, urgent); }
public void start() { MonitorInvocationsTask monitorInvocationsTask = new MonitorInvocationsTask(invocationScanPeriodMillis); scheduler.scheduleAtFixedRate( monitorInvocationsTask, 0, monitorInvocationsTask.periodMillis, MILLISECONDS); BroadcastOperationControlTask broadcastOperationControlTask = new BroadcastOperationControlTask(heartbeatBroadcastPeriodMillis); scheduler.scheduleAtFixedRate( broadcastOperationControlTask, 0, broadcastOperationControlTask.periodMillis, MILLISECONDS); }
private void updateHeartbeat(long callId, long nowMillis) { Invocation invocation = invocationRegistry.get(callId); if (invocation == null) { // the invocation doesn't exist anymore, so we are done. return; } invocation.lastHeartbeatMillis = nowMillis; } }
private void shutdown() { shutdown = true; interrupt(); } }
@Override public Thread newThread(Runnable r) { return new InvocationMonitorThread(r, hzName); } });
@Override public OperationRunner createGenericRunner() { return new OperationRunnerImpl(operationService, GENERIC_PARTITION_ID, genericId++, null); } }
public void start() { for (ResponseThread responseThread : responseThreads) { responseThread.start(); } }
private int sendSingleBackup(BackupAwareOperation backupAwareOp, InternalPartition partition, long[] replicaVersions, int syncBackups) { // Since there is only one replica, replica index is `1` return sendSingleBackup(backupAwareOp, partition, replicaVersions, syncBackups, 1); }
@Override public <T> Map<Integer, T> invokeOnPartitions(String serviceName, OperationFactory operationFactory, Collection<Integer> partitions) throws Exception { Map<Address, List<Integer>> memberPartitions = getMemberPartitions(partitions); InvokeOnPartitions invokeOnPartitions = new InvokeOnPartitions(this, serviceName, operationFactory, memberPartitions); return invokeOnPartitions.invoke(); }
private void resetAndReInvoke() { if (!context.invocationRegistry.deregister(this)) { // another thread already did something else with this invocation return; } invokeCount = 0; pendingResponse = VOID; pendingResponseReceivedMillis = -1; backupsAcksExpected = 0; backupsAcksReceived = 0; lastHeartbeatMillis = 0; doInvoke(false); }
@Override @SuppressWarnings("unchecked") public <E> InternalCompletableFuture<E> invokeOnPartition(Operation op) { return new PartitionInvocation( invocationContext, op, invocationMaxRetryCount, invocationRetryPauseMillis, DEFAULT_CALL_TIMEOUT, DEFAULT_DESERIALIZE_RESULT, failOnIndeterminateOperationState).invoke(); }
private void updateHeartbeat(long callId, long nowMillis) { Invocation invocation = invocationRegistry.get(callId); if (invocation == null) { // the invocation doesn't exist anymore, so we are done. return; } invocation.lastHeartbeatMillis = nowMillis; } }
private void shutdown() { shutdown = true; interrupt(); } }
@Override public Thread newThread(Runnable r) { return new InvocationMonitorThread(r, hzName); } });