Merge branch 'cassandra-2.1' into cassandra-2.2
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/14d7a63b Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/14d7a63b Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/14d7a63b Branch: refs/heads/cassandra-2.2 Commit: 14d7a63b8a29b15831d035182d12cfacc7518687 Parents: 2a4ab87 8a56868 Author: Robert Stupp <sn...@snazy.de> Authored: Sun Jun 28 10:36:54 2015 +0200 Committer: Robert Stupp <sn...@snazy.de> Committed: Sun Jun 28 10:36:54 2015 +0200 ---------------------------------------------------------------------- CHANGES.txt | 3 +++ .../apache/cassandra/net/MessagingService.java | 2 +- .../cassandra/net/OutboundTcpConnection.java | 2 +- .../cassandra/service/AbstractReadExecutor.java | 12 ++++++++++++ .../apache/cassandra/service/ReadCallback.java | 20 ++++++++++++++++++-- .../cassandra/service/RowDataResolver.java | 2 ++ 6 files changed, 37 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/14d7a63b/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index 811e955,3e4fd36..8f4f752 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,30 -1,14 +1,33 @@@ -2.1.8 +2.2 + * Allow JMX over SSL directly from nodetool (CASSANDRA-9090) + * Update cqlsh for UDFs (CASSANDRA-7556) + * Change Windows kernel default timer resolution (CASSANDRA-9634) + * Deprected sstable2json and json2sstable (CASSANDRA-9618) + * Allow native functions in user-defined aggregates (CASSANDRA-9542) + * Don't repair system_distributed by default (CASSANDRA-9621) + * Fix mixing min, max, and count aggregates for blob type (CASSANRA-9622) + * Rename class for DATE type in Java driver (CASSANDRA-9563) + * Duplicate compilation of UDFs on coordinator (CASSANDRA-9475) + * Fix connection leak in CqlRecordWriter (CASSANDRA-9576) + * Mlockall before opening system sstables & remove boot_without_jna option (CASSANDRA-9573) + * Add functions to convert timeuuid to date or time, deprecate dateOf and unixTimestampOf (CASSANDRA-9229) + * Make sure we cancel non-compacting sstables from LifecycleTransaction (CASSANDRA-9566) + * Fix deprecated repair JMX API (CASSANDRA-9570) + * Add logback metrics (CASSANDRA-9378) + * Update and refactor ant test/test-compression to run the tests in parallel (CASSANDRA-9583) +Merged from 2.1: * Fix IndexOutOfBoundsException when inserting tuple with too many elements using the string literal notation (CASSANDRA-9559) - * Allow JMX over SSL directly from nodetool (CASSANDRA-9090) - * Fix incorrect result for IN queries where column not found (CASSANDRA-9540) * Enable describe on indices (CASSANDRA-7814) + * Fix incorrect result for IN queries where column not found (CASSANDRA-9540) * ColumnFamilyStore.selectAndReference may block during compaction (CASSANDRA-9637) + * Fix bug in cardinality check when compacting (CASSANDRA-9580) + * Fix memory leak in Ref due to ConcurrentLinkedQueue.remove() behaviour (CASSANDRA-9549) + * Make rebuild only run one at a time (CASSANDRA-9119) Merged from 2.0 + * Improve trace messages for RR (CASSANDRA-9479) + * Fix suboptimal secondary index selection when restricted + clustering column is also indexed (CASSANDRA-9631) * (cqlsh) Add min_threshold to DTCS option autocomplete (CASSANDRA-9385) * Fix error message when attempting to create an index on a column in a COMPACT STORAGE table with clustering columns (CASSANDRA-9527) http://git-wip-us.apache.org/repos/asf/cassandra/blob/14d7a63b/src/java/org/apache/cassandra/net/MessagingService.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/net/MessagingService.java index 293a27c,1820c5c..83bc337 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@@ -745,12 -728,15 +745,12 @@@ public final class MessagingService imp { TraceState state = Tracing.instance.initializeFromMessage(message); if (state != null) - state.trace("Message received from {}", message.from); + state.trace("{} message received from {}", message.verb, message.from); - Verb verb = message.verb; - message = SinkManager.processInboundMessage(message, id); - if (message == null) - { - incrementRejectedMessages(verb); - return; - } + // message sinks are a testing hook + for (IMessageSink ms : messageSinks) + if (!ms.allowIncomingMessage(message, id)) + return; Runnable runnable = new MessageDeliveryTask(message, id, timestamp); TracingAwareExecutorService stage = StageManager.getStage(message.getMessageType()); http://git-wip-us.apache.org/repos/asf/cassandra/blob/14d7a63b/src/java/org/apache/cassandra/net/OutboundTcpConnection.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/14d7a63b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/service/AbstractReadExecutor.java index ec96d81,2d02e34..3aab12f --- a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java +++ b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java @@@ -67,7 -69,8 +70,8 @@@ public abstract class AbstractReadExecu { this.command = command; this.targetReplicas = targetReplicas; - resolver = new RowDigestResolver(command.ksName, command.key); + resolver = new RowDigestResolver(command.ksName, command.key, targetReplicas.size()); + traceState = Tracing.instance.get(); handler = new ReadCallback<>(resolver, consistencyLevel, command, targetReplicas); } @@@ -153,8 -159,16 +160,11 @@@ // Throw UAE early if we don't have enough replicas. consistencyLevel.assureSufficientLiveNodes(keyspace, targetReplicas); - // Fat client. Speculating read executors need access to cfs metrics and sampled latency, and fat clients - // can't provide that. So, for now, fat clients will always use NeverSpeculatingReadExecutor. - if (StorageService.instance.isClientMode()) - return new NeverSpeculatingReadExecutor(command, consistencyLevel, targetReplicas); - if (repairDecision != ReadRepairDecision.NONE) + { + Tracing.trace("Read-repair {}", repairDecision); ReadRepairMetrics.attempted.mark(); + } ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(command.cfName); RetryType retryType = cfs.metadata.getSpeculativeRetry().type; @@@ -272,8 -286,10 +282,10 @@@ retryCommand = command.copy().setIsDigestQuery(true); InetAddress extraReplica = Iterables.getLast(targetReplicas); + if (traceState != null) + traceState.trace("speculating read retry on {}", extraReplica); logger.trace("speculating read retry on {}", extraReplica); - MessagingService.instance().sendRR(retryCommand.createMessage(), extraReplica, handler); + MessagingService.instance().sendRRWithFailure(retryCommand.createMessage(), extraReplica, handler); speculated = true; cfs.metric.speculativeRetries.inc(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/14d7a63b/src/java/org/apache/cassandra/service/ReadCallback.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/14d7a63b/src/java/org/apache/cassandra/service/RowDataResolver.java ----------------------------------------------------------------------