private static void performLocally(Stage stage, final Runnable runnable) { StageManager.getStage(stage).maybeExecuteImmediately(new LocalMutationRunnable() { public void runMayThrow() { try { runnable.run(); } catch (Exception ex) { logger.error("Failed to apply mutation locally : {}", ex); } } @Override protected Verb verb() { return MessagingService.Verb.MUTATION; } }); }
private static void performLocally(Stage stage, final Runnable runnable) { StageManager.getStage(stage).maybeExecuteImmediately(new LocalMutationRunnable() { public void runMayThrow() { try { runnable.run(); } catch (Exception ex) { logger.error("Failed to apply mutation locally : {}", ex); } } @Override protected Verb verb() { return MessagingService.Verb.MUTATION; } }); }
private static void performLocally(Stage stage, Optional<IMutation> mutation, final Runnable runnable, final IAsyncCallbackWithFailure<?> handler) { StageManager.getStage(stage).maybeExecuteImmediately(new LocalMutationRunnable(mutation) { public void runMayThrow() { try { runnable.run(); handler.response(null); } catch (Exception ex) { if (!(ex instanceof WriteTimeoutException)) logger.error("Failed to apply mutation locally : {}", ex); handler.onFailure(FBUtilities.getBroadcastAddress(), RequestFailureReason.UNKNOWN); } } @Override protected Verb verb() { return MessagingService.Verb.MUTATION; } }); }
private static void performLocally(Stage stage, final Runnable runnable) { StageManager.getStage(stage).maybeExecuteImmediately(new LocalMutationRunnable() { public void runMayThrow() { try { runnable.run(); } catch (Exception ex) { logger.error("Failed to apply mutation locally : {}", ex); } } @Override protected Verb verb() { return MessagingService.Verb.MUTATION; } }); }
private static void performLocally(Stage stage, Optional<IMutation> mutation, final Runnable runnable, final IAsyncCallbackWithFailure<?> handler) { StageManager.getStage(stage).maybeExecuteImmediately(new LocalMutationRunnable(mutation) { public void runMayThrow() { try { runnable.run(); handler.response(null); } catch (Exception ex) { if (!(ex instanceof WriteTimeoutException)) logger.error("Failed to apply mutation locally : {}", ex); handler.onFailure(FBUtilities.getBroadcastAddress(), RequestFailureReason.UNKNOWN); } } @Override protected Verb verb() { return MessagingService.Verb.MUTATION; } }); }
private static void performLocally(Stage stage, Optional<IMutation> mutation, final Runnable runnable, final IAsyncCallbackWithFailure<?> handler) { StageManager.getStage(stage).maybeExecuteImmediately(new LocalMutationRunnable(mutation) { public void runMayThrow() { try { runnable.run(); handler.response(null); } catch (Exception ex) { if (!(ex instanceof WriteTimeoutException)) logger.error("Failed to apply mutation locally : {}", ex); handler.onFailure(FBUtilities.getBroadcastAddress(), RequestFailureReason.UNKNOWN); } } @Override protected Verb verb() { return MessagingService.Verb.MUTATION; } }); }
StageManager.getStage(MessagingService.verbStages.get(MessagingService.Verb.PAXOS_COMMIT)).maybeExecuteImmediately(new LocalMutationRunnable()
StageManager.getStage(MessagingService.verbStages.get(MessagingService.Verb.PAXOS_COMMIT)).maybeExecuteImmediately(new LocalMutationRunnable()
StageManager.getStage(MessagingService.verbStages.get(MessagingService.Verb.PAXOS_COMMIT)).maybeExecuteImmediately(new LocalMutationRunnable()
private UnfilteredPartitionIterator executeReadCommand(ReadCommand cmd) { DataResolver resolver = new DataResolver(keyspace, cmd, ConsistencyLevel.ONE, 1, queryStartNanoTime); ReadCallback handler = new ReadCallback(resolver, ConsistencyLevel.ONE, cmd, Collections.singletonList(source), queryStartNanoTime); if (StorageProxy.canDoLocalRequest(source)) StageManager.getStage(Stage.READ).maybeExecuteImmediately(new StorageProxy.LocalReadRunnable(cmd, handler)); else MessagingService.instance().sendRRWithFailure(cmd.createMessage(MessagingService.current_version), source, handler); // We don't call handler.get() because we want to preserve tombstones since we're still in the middle of merging node results. handler.awaitResults(); assert resolver.responses.size() == 1; return resolver.responses.get(0).payload.makeIterator(command); } }
private void makeRequests(ReadCommand readCommand, Iterable<InetAddress> endpoints) { boolean hasLocalEndpoint = false; for (InetAddress endpoint : endpoints) { if (StorageProxy.canDoLocalRequest(endpoint)) { hasLocalEndpoint = true; continue; } if (traceState != null) traceState.trace("reading {} from {}", readCommand.isDigestQuery() ? "digest" : "data", endpoint); logger.trace("reading {} from {}", readCommand.isDigestQuery() ? "digest" : "data", endpoint); MessageOut<ReadCommand> message = readCommand.createMessage(MessagingService.instance().getVersion(endpoint)); MessagingService.instance().sendRRWithFailure(message, endpoint, handler); } // We delay the local (potentially blocking) read till the end to avoid stalling remote requests. if (hasLocalEndpoint) { logger.trace("reading {} locally", readCommand.isDigestQuery() ? "digest" : "data"); StageManager.getStage(Stage.READ).maybeExecuteImmediately(new LocalReadRunnable(command, handler)); } }
private void makeRequests(ReadCommand readCommand, Iterable<InetAddress> endpoints) { boolean hasLocalEndpoint = false; for (InetAddress endpoint : endpoints) { if (StorageProxy.canDoLocalRequest(endpoint)) { hasLocalEndpoint = true; continue; } if (traceState != null) traceState.trace("reading {} from {}", readCommand.isDigestQuery() ? "digest" : "data", endpoint); logger.trace("reading {} from {}", readCommand.isDigestQuery() ? "digest" : "data", endpoint); MessageOut<ReadCommand> message = readCommand.createMessage(MessagingService.instance().getVersion(endpoint)); MessagingService.instance().sendRRWithFailure(message, endpoint, handler); } // We delay the local (potentially blocking) read till the end to avoid stalling remote requests. if (hasLocalEndpoint) { logger.trace("reading {} locally", readCommand.isDigestQuery() ? "digest" : "data"); StageManager.getStage(Stage.READ).maybeExecuteImmediately(new LocalReadRunnable(command, handler)); } }
private UnfilteredPartitionIterator executeReadCommand(ReadCommand cmd) { DataResolver resolver = new DataResolver(keyspace, cmd, ConsistencyLevel.ONE, 1, queryStartNanoTime); ReadCallback handler = new ReadCallback(resolver, ConsistencyLevel.ONE, cmd, Collections.singletonList(source), queryStartNanoTime); if (StorageProxy.canDoLocalRequest(source)) StageManager.getStage(Stage.READ).maybeExecuteImmediately(new StorageProxy.LocalReadRunnable(cmd, handler)); else MessagingService.instance().sendRRWithFailure(cmd.createMessage(MessagingService.current_version), source, handler); // We don't call handler.get() because we want to preserve tombstones since we're still in the middle of merging node results. handler.awaitResults(); assert resolver.responses.size() == 1; return resolver.responses.get(0).payload.makeIterator(command); } }
private void makeRequests(ReadCommand readCommand, Iterable<InetAddress> endpoints) { boolean hasLocalEndpoint = false; for (InetAddress endpoint : endpoints) { if (StorageProxy.canDoLocalRequest(endpoint)) { hasLocalEndpoint = true; continue; } if (traceState != null) traceState.trace("reading {} from {}", readCommand.isDigestQuery() ? "digest" : "data", endpoint); logger.trace("reading {} from {}", readCommand.isDigestQuery() ? "digest" : "data", endpoint); MessageOut<ReadCommand> message = readCommand.createMessage(MessagingService.instance().getVersion(endpoint)); MessagingService.instance().sendRRWithFailure(message, endpoint, handler); } // We delay the local (potentially blocking) read till the end to avoid stalling remote requests. if (hasLocalEndpoint) { logger.trace("reading {} locally", readCommand.isDigestQuery() ? "digest" : "data"); StageManager.getStage(Stage.READ).maybeExecuteImmediately(new LocalReadRunnable(command, handler)); } }
private UnfilteredPartitionIterator executeReadCommand(ReadCommand cmd) { DataResolver resolver = new DataResolver(keyspace, cmd, ConsistencyLevel.ONE, 1, queryStartNanoTime); ReadCallback handler = new ReadCallback(resolver, ConsistencyLevel.ONE, cmd, Collections.singletonList(source), queryStartNanoTime); if (StorageProxy.canDoLocalRequest(source)) StageManager.getStage(Stage.READ).maybeExecuteImmediately(new StorageProxy.LocalReadRunnable(cmd, handler)); else MessagingService.instance().sendRRWithFailure(cmd.createMessage(MessagingService.current_version), source, handler); // We don't call handler.get() because we want to preserve tombstones since we're still in the middle of merging node results. handler.awaitResults(); assert resolver.responses.size() == 1; return resolver.responses.get(0).payload.makeIterator(command); } }