Updated Branches: refs/heads/cassandra-1.1 c9b249b2a -> e400d0eca refs/heads/trunk 8495560c2 -> db2c2999d
merge from 1.1 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/db2c2999 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/db2c2999 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/db2c2999 Branch: refs/heads/trunk Commit: db2c2999d10989c26da198f241cb81921759bd1c Parents: 8495560 e400d0e Author: Jonathan Ellis <jbel...@apache.org> Authored: Thu Oct 18 15:19:30 2012 -0500 Committer: Jonathan Ellis <jbel...@apache.org> Committed: Thu Oct 18 15:19:30 2012 -0500 ---------------------------------------------------------------------- CHANGES.txt | 3 +++ src/java/org/apache/cassandra/config/Config.java | 4 ++-- .../org/apache/cassandra/db/ColumnFamilyStore.java | 4 +++- .../io/compress/CompressedRandomAccessReader.java | 7 +++++++ .../apache/cassandra/thrift/CassandraServer.java | 1 - 5 files changed, 15 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/db2c2999/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index 922e808,49164b6..ee61379 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,108 -1,8 +1,111 @@@ +1.2-beta2 + * Sort commitlog segments for replay by id instead of mtime (CASSANDRA-4793) + * Make hint delivery asynchronous (CASSANDRA-4761) + * Pluggable Thrift transport factories for CLI and cqlsh (CASSANDRA-4609, 4610) + * cassandra-cli: allow Double value type to be inserted to a column (CASSANDRA-4661) + * Add ability to use custom TServerFactory implementations (CASSANDRA-4608) + * optimize batchlog flushing to skip successful batches (CASSANDRA-4667) + * include metadata for system keyspace itself in schema tables (CASSANDRA-4416) + * add check to PropertyFileSnitch to verify presence of location for + local node (CASSANDRA-4728) + * add PBSPredictor consistency modeler (CASSANDRA-4261) + * remove vestiges of Thrift unframed mode (CASSANDRA-4729) + * optimize single-row PK lookups (CASSANDRA-4710) + * adjust blockFor calculation to account for pending ranges due to node + movement (CASSANDRA-833) + * Change CQL version to 3.0.0 and stop accepting 3.0.0-beta1 (CASSANDRA-4649) + * (CQL3) Make prepared statement global instead of per connection + (CASSANDRA-4449) + * Fix scrubbing of CQL3 created tables (CASSANDRA-4685) + * (CQL3) Fix validation when using counter and regular columns in the same + table (CASSANDRA-4706) + * Fix bug starting Cassandra with simple authentication (CASSANDRA-4648) + * Add support for batchlog in CQL3 (CASSANDRA-4545, 4738) + * Add support for multiple column family outputs in CFOF (CASSANDRA-4208) + * Support repairing only the local DC nodes (CASSANDRA-4747) + * Use rpc_address for binary protocol and change default port (CASSANRA-4751) + * Fix use of collections in prepared statements (CASSANDRA-4739) + * Store more information into peers table (CASSANDRA-4351, 4814) + * Configurable bucket size for size tiered compaction (CASSANDRA-4704) + * Run leveled compaction in parallel (CASSANDRA-4310) + * Fix potential NPE during CFS reload (CASSANDRA-4786) + * Composite indexes may miss results (CASSANDRA-4796) + * Move consistency level to the protocol level (CASSANDRA-4734, 4824) + + +1.2-beta1 + * add atomic_batch_mutate (CASSANDRA-4542, -4635) + * increase default max_hint_window_in_ms to 3h (CASSANDRA-4632) + * include message initiation time to replicas so they can more + accurately drop timed-out requests (CASSANDRA-2858) + * fix clientutil.jar dependencies (CASSANDRA-4566) + * optimize WriteResponse (CASSANDRA-4548) + * new metrics (CASSANDRA-4009) + * redesign KEYS indexes to avoid read-before-write (CASSANDRA-2897) + * debug tracing (CASSANDRA-1123) + * parallelize row cache loading (CASSANDRA-4282) + * Make compaction, flush JBOD-aware (CASSANDRA-4292) + * run local range scans on the read stage (CASSANDRA-3687) + * clean up ioexceptions (CASSANDRA-2116) + * add disk_failure_policy (CASSANDRA-2118) + * Introduce new json format with row level deletion (CASSANDRA-4054) + * remove redundant "name" column from schema_keyspaces (CASSANDRA-4433) + * improve "nodetool ring" handling of multi-dc clusters (CASSANDRA-3047) + * update NTS calculateNaturalEndpoints to be O(N log N) (CASSANDRA-3881) + * add UseCondCardMark XX jvm settings on jdk 1.7 (CASSANDRA-4366) + * split up rpc timeout by operation type (CASSANDRA-2819) + * rewrite key cache save/load to use only sequential i/o (CASSANDRA-3762) + * update MS protocol with a version handshake + broadcast address id + (CASSANDRA-4311) + * multithreaded hint replay (CASSANDRA-4189) + * add inter-node message compression (CASSANDRA-3127) + * remove COPP (CASSANDRA-2479) + * Track tombstone expiration and compact when tombstone content is + higher than a configurable threshold, default 20% (CASSANDRA-3442, 4234) + * update MurmurHash to version 3 (CASSANDRA-2975) + * (CLI) track elapsed time for `delete' operation (CASSANDRA-4060) + * (CLI) jline version is bumped to 1.0 to properly support + 'delete' key function (CASSANDRA-4132) + * Save IndexSummary into new SSTable 'Summary' component (CASSANDRA-2392, 4289) + * Add support for range tombstones (CASSANDRA-3708) + * Improve MessagingService efficiency (CASSANDRA-3617) + * Avoid ID conflicts from concurrent schema changes (CASSANDRA-3794) + * Set thrift HSHA server thread limit to unlimited by default (CASSANDRA-4277) + * Avoids double serialization of CF id in RowMutation messages + (CASSANDRA-4293) + * stream compressed sstables directly with java nio (CASSANDRA-4297) + * Support multiple ranges in SliceQueryFilter (CASSANDRA-3885) + * Add column metadata to system column families (CASSANDRA-4018) + * (cql3) Always use composite types by default (CASSANDRA-4329) + * (cql3) Add support for set, map and list (CASSANDRA-3647) + * Validate date type correctly (CASSANDRA-4441) + * (cql3) Allow definitions with only a PK (CASSANDRA-4361) + * (cql3) Add support for row key composites (CASSANDRA-4179) + * improve DynamicEndpointSnitch by using reservoir sampling (CASSANDRA-4038) + * (cql3) Add support for 2ndary indexes (CASSANDRA-3680) + * (cql3) fix defining more than one PK to be invalid (CASSANDRA-4477) + * remove schema agreement checking from all external APIs (Thrift, CQL and CQL3) (CASSANDRA-4487) + * add Murmur3Partitioner and make it default for new installations (CASSANDRA-3772, 4621) + * (cql3) update pseudo-map syntax to use map syntax (CASSANDRA-4497) + * Finer grained exceptions hierarchy and provides error code with exceptions (CASSANDRA-3979) + * Adds events push to binary protocol (CASSANDRA-4480) + * Rewrite nodetool help (CASSANDRA-2293) + * Make CQL3 the default for CQL (CASSANDRA-4640) + * update stress tool to be able to use CQL3 (CASSANDRA-4406) + * Accept all thrift update on CQL3 cf but don't expose their metadata (CASSANDRA-4377) + * Replace Throttle with Guava's RateLimiter for HintedHandOff (CASSANDRA-4541) + * fix counter add/get using CQL2 and CQL3 in stress tool (CASSANDRA-4633) + * Add sstable count per level to cfstats (CASSANDRA-4537) + * (cql3) Add ALTER KEYSPACE statement (CASSANDRA-4611) + * (cql3) Allow defining default consistency levels (CASSANDRA-4448) + * (cql3) Fix queries using LIMIT missing results (CASSANDRA-4579) + * fix cross-version gossip messaging (CASSANDRA-4576) + 1.1.7 + * fix possible stackoverflow when compacting 1000s of sstables + (CASSANDRA-4765) * fix wrong leveled compaction progress calculation (CASSANDRA-4807) + * add a close() method to CRAR to prevent leaking file descriptors (CASSANDRA-4820) 1.1.6 * Wait for writes on synchronous read digest mismatch (CASSANDRA-4792) http://git-wip-us.apache.org/repos/asf/cassandra/blob/db2c2999/src/java/org/apache/cassandra/config/Config.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/config/Config.java index 827d8d3,f4e7955..732760b --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@@ -7,23 -9,20 +7,23 @@@ * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * http://www.apache.org/licenses/LICENSE-2.0 * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ +package org.apache.cassandra.config; - import org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider; + import org.apache.cassandra.cache.SerializingCacheProvider; - +/** + * A class that contains configuration properties for the cassandra node it runs within. + * + * Properties declared as volatile can be mutated via JMX. + */ public class Config { public String cluster_name = "Test Cluster"; @@@ -150,9 -133,9 +150,9 @@@ public int key_cache_keys_to_save = Integer.MAX_VALUE; public long row_cache_size_in_mb = 0; - public int row_cache_save_period = 0; + public volatile int row_cache_save_period = 0; public int row_cache_keys_to_save = Integer.MAX_VALUE; - public String row_cache_provider = ConcurrentLinkedHashCacheProvider.class.getSimpleName(); + public String row_cache_provider = SerializingCacheProvider.class.getSimpleName(); public boolean populate_io_cache_on_flush = false; private static boolean loadYaml = true; http://git-wip-us.apache.org/repos/asf/cassandra/blob/db2c2999/src/java/org/apache/cassandra/db/ColumnFamilyStore.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 8a1d54f,67a883d..361e362 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@@ -875,9 -888,9 +877,9 @@@ public class ColumnFamilyStore implemen Set<SSTableReader> results = null; for (SSTableReader sstable : sstables) { - Set<SSTableReader> overlaps = ImmutableSet.copyOf(tree.search(new Interval<SSTableReader>(sstable.first, sstable.last))); + Set<SSTableReader> overlaps = ImmutableSet.copyOf(tree.search(Interval.<RowPosition, SSTableReader>create(sstable.first, sstable.last))); assert overlaps.contains(sstable); - results = results == null ? overlaps : Sets.union(results, overlaps); + results = results == null ? overlaps : Sets.union(results, overlaps).immutableCopy(); } results = Sets.difference(results, ImmutableSet.copyOf(sstables)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/db2c2999/src/java/org/apache/cassandra/io/compress/CompressedRandomAccessReader.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/db2c2999/src/java/org/apache/cassandra/thrift/CassandraServer.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/thrift/CassandraServer.java index 337b5fe,ad416f3..654f410 --- a/src/java/org/apache/cassandra/thrift/CassandraServer.java +++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java @@@ -897,40 -658,21 +897,39 @@@ public class CassandraServer implement public List<KeySlice> get_range_slices(ColumnParent column_parent, SlicePredicate predicate, KeyRange range, ConsistencyLevel consistency_level) throws InvalidRequestException, UnavailableException, TException, TimedOutException { - logger.debug("range_slice"); - - ClientState cState = state(); - String keyspace = cState.getKeyspace(); - cState.hasColumnFamilyAccess(column_parent.column_family, Permission.SELECT); - - CFMetaData metadata = ThriftValidation.validateColumnFamily(keyspace, column_parent.column_family); - ThriftValidation.validateColumnParent(metadata, column_parent); - ThriftValidation.validatePredicate(metadata, column_parent, predicate); - ThriftValidation.validateKeyRange(metadata, column_parent.super_column, range); - ThriftValidation.validateConsistencyLevel(keyspace, consistency_level, RequestType.READ); + if (startSessionIfRequested()) + { + Map<String, String> traceParameters = ImmutableMap.of( + "column_parent", column_parent.toString(), + "predicate", predicate.toString(), + "range", range.toString(), + "consistency_level", consistency_level.name()); + Tracing.instance().begin("get_range_slices", traceParameters); + } + else + { + logger.debug("range_slice"); + } - List<Row> rows; try { - + String keyspace = null; + CFMetaData metadata = null; + + ClientState cState = state(); + keyspace = cState.getKeyspace(); + cState.hasColumnFamilyAccess(column_parent.column_family, Permission.SELECT); + + metadata = ThriftValidation.validateColumnFamily(keyspace, column_parent.column_family); + ThriftValidation.validateColumnParent(metadata, column_parent); + ThriftValidation.validatePredicate(metadata, column_parent, predicate); + ThriftValidation.validateKeyRange(metadata, column_parent.super_column, range); + + org.apache.cassandra.db.ConsistencyLevel consistencyLevel = ThriftConversion.fromThrift(consistency_level); + consistencyLevel.validateForRead(keyspace); + + List<Row> rows = null; + IPartitioner<?> p = StorageService.getPartitioner(); AbstractBounds<RowPosition> bounds; if (range.start_key == null)