merge from 1.2
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/26018be2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/26018be2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/26018be2 Branch: refs/heads/trunk Commit: 26018be223663989f0de87ff7a902a36be4df678 Parents: 5b0d43f e5c34d7 Author: Jonathan Ellis <[email protected]> Authored: Tue Jun 18 08:52:55 2013 -0500 Committer: Jonathan Ellis <[email protected]> Committed: Tue Jun 18 08:52:55 2013 -0500 ---------------------------------------------------------------------- .../org/apache/cassandra/service/StorageProxy.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/26018be2/src/java/org/apache/cassandra/service/StorageProxy.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/service/StorageProxy.java index 9d095cc,c12cace..1383be7 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@@ -1137,10 -858,10 +1137,10 @@@ public class StorageProxy implements St do { List<ReadCommand> commands = commandsToRetry.isEmpty() ? initialCommands : commandsToRetry; - ReadCallback<ReadResponse, Row>[] readCallbacks = new ReadCallback[commands.size()]; + AbstractReadExecutor[] readExecutors = new AbstractReadExecutor[commands.size()]; if (!commandsToRetry.isEmpty()) - logger.debug("Retrying {} commands", commandsToRetry.size()); + Tracing.trace("Retrying {} commands", commandsToRetry.size()); // send out read requests for (int i = 0; i < commands.size(); i++) @@@ -1174,25 -947,28 +1174,28 @@@ } catch (DigestMismatchException ex) { - logger.trace("Digest mismatch: {}", ex); - - Tracing.trace("Digest mismatch: {}", ex.toString()); - ++ Tracing.trace("Digest mismatch: {}", ex); ++ ReadRepairMetrics.repairedBlocking.mark(); - + // Do a full data read to resolve the correct response (and repair node that need be) - RowDataResolver resolver = new RowDataResolver(command.table, command.key, command.filter()); - ReadCallback<ReadResponse, Row> repairHandler = handler.withNewResolver(resolver); + RowDataResolver resolver = new RowDataResolver(exec.command.table, exec.command.key, exec.command.filter()); + ReadCallback<ReadResponse, Row> repairHandler = exec.handler.withNewResolver(resolver); if (repairCommands == null) { repairCommands = new ArrayList<ReadCommand>(); repairResponseHandlers = new ArrayList<ReadCallback<ReadResponse, Row>>(); } - repairCommands.add(command); + repairCommands.add(exec.command); repairResponseHandlers.add(repairHandler); - MessageOut<ReadCommand> message = command.createMessage(); - for (InetAddress endpoint : handler.endpoints) + MessageOut<ReadCommand> message = exec.command.createMessage(); + for (InetAddress endpoint : exec.handler.endpoints) + { + Tracing.trace("Enqueuing full data read to {}", endpoint); MessagingService.instance().sendRR(message, endpoint, repairHandler); + } } }
