Merge branch 'cassandra-2.0' into cassandra-2.1 Conflicts: CHANGES.txt src/java/org/apache/cassandra/cache/RefCountedMemory.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f5fd02f4 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f5fd02f4 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f5fd02f4 Branch: refs/heads/trunk Commit: f5fd02f453cd06573b7a4a70c03f6435727705b8 Parents: ab87f83 871a603 Author: Aleksey Yeschenko <alek...@apache.org> Authored: Fri Apr 25 03:42:53 2014 +0300 Committer: Aleksey Yeschenko <alek...@apache.org> Committed: Fri Apr 25 03:42:53 2014 +0300 ---------------------------------------------------------------------- CHANGES.txt | 3 +- .../cassandra/cache/RefCountedMemory.java | 7 ++- .../cassandra/cache/SerializingCache.java | 53 +++++++++++++++----- 3 files changed, 48 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f5fd02f4/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index 11630e7,73c5034..9c78e33 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,59 -1,4 +1,58 @@@ -2.0.8 +2.1.0-beta2 + * Increase default CL space to 8GB (CASSANDRA-7031) + * Add range tombstones to read repair digests (CASSANDRA-6863) + * Fix BTree.clear for large updates (CASSANDRA-6943) + * Fail write instead of logging a warning when unable to append to CL + (CASSANDRA-6764) + * Eliminate possibility of CL segment appearing twice in active list + (CASSANDRA-6557) + * Apply DONTNEED fadvise to commitlog segments (CASSANDRA-6759) + * Switch CRC component to Adler and include it for compressed sstables + (CASSANDRA-4165) + * Allow cassandra-stress to set compaction strategy options (CASSANDRA-6451) + * Add broadcast_rpc_address option to cassandra.yaml (CASSANDRA-5899) + * Auto reload GossipingPropertyFileSnitch config (CASSANDRA-5897) + * Fix overflow of memtable_total_space_in_mb (CASSANDRA-6573) + * Fix ABTC NPE and apply update function correctly (CASSANDRA-6692) + * Allow nodetool to use a file or prompt for password (CASSANDRA-6660) + * Fix AIOOBE when concurrently accessing ABSC (CASSANDRA-6742) + * Fix assertion error in ALTER TYPE RENAME (CASSANDRA-6705) + * Scrub should not always clear out repaired status (CASSANDRA-5351) + * Improve handling of range tombstone for wide partitions (CASSANDRA-6446) + * Fix ClassCastException for compact table with composites (CASSANDRA-6738) + * Fix potentially repairing with wrong nodes (CASSANDRA-6808) + * Change caching option syntax (CASSANDRA-6745) + * Fix stress to do proper counter reads (CASSANDRA-6835) + * Fix help message for stress counter_write (CASSANDRA-6824) + * Fix stress smart Thrift client to pick servers correctly (CASSANDRA-6848) + * Add logging levels (minimal, normal or verbose) to stress tool (CASSANDRA-6849) + * Fix race condition in Batch CLE (CASSANDRA-6860) + * Improve cleanup/scrub/upgradesstables failure handling (CASSANDRA-6774) + * ByteBuffer write() methods for serializing sstables (CASSANDRA-6781) + * Proper compare function for CollectionType (CASSANDRA-6783) + * Update native server to Netty 4 (CASSANDRA-6236) + * Fix off-by-one error in stress (CASSANDRA-6883) + * Make OpOrder AutoCloseable (CASSANDRA-6901) + * Remove sync repair JMX interface (CASSANDRA-6900) + * Add multiple memory allocation options for memtables (CASSANDRA-6689) + * Remove adjusted op rate from stress output (CASSANDRA-6921) + * Add optimized CF.hasColumns() implementations (CASSANDRA-6941) + * Serialize batchlog mutations with the version of the target node + (CASSANDRA-6931) + * Optimize CounterColumn#reconcile() (CASSANDRA-6953) + * Properly remove 1.2 sstable support in 2.1 (CASSANDRA-6869) + * Lock counter cells, not partitions (CASSANDRA-6880) + * Track presence of legacy counter shards in sstables (CASSANDRA-6888) + * Ensure safe resource cleanup when replacing sstables (CASSANDRA-6912) + * Add failure handler to async callback (CASSANDRA-6747) + * Fix AE when closing SSTable without releasing reference (CASSANDRA-7000) + * Clean up IndexInfo on keyspace/table drops (CASSANDRA-6924) + * Only snapshot relative SSTables when sequential repair (CASSANDRA-7024) + * Require nodetool rebuild_index to specify index names (CASSANDRA-7038) + * fix cassandra stress errors on reads with native protocol (CASSANDRA-7033) + * Use OpOrder to guard sstable references for reads (CASSANDRA-6919) + * Preemptive opening of compaction result (CASSANDRA-6916) +Merged from 2.0: - 2.0.8 * Set JMX RMI port to 7199 (CASSANDRA-7087) * Use LOCAL_QUORUM for data reads at LOCAL_SERIAL (CASSANDRA-6939) * Log a warning for large batches (CASSANDRA-6487) @@@ -124,9 -78,7 +123,11 @@@ Merged from 1.2 * Schedule schema pulls on change (CASSANDRA-6971) * Non-droppable verbs shouldn't be dropped from OTC (CASSANDRA-6980) * Shutdown batchlog executor in SS#drain() (CASSANDRA-7025) + * Fix batchlog to account for CF truncation records (CASSANDRA-6999) + * Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018) * Properly load trustore in the native protocol (CASSANDRA-6847) ++ * Always clean up references in SerializingCache (CASSANDRA-6994) ++ * Don't shut MessagingService down when replacing a node (CASSANDRA-6476) 2.0.6 http://git-wip-us.apache.org/repos/asf/cassandra/blob/f5fd02f4/src/java/org/apache/cassandra/cache/RefCountedMemory.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/cache/RefCountedMemory.java index e5c543e,43c87b9..fd26e2b --- a/src/java/org/apache/cassandra/cache/RefCountedMemory.java +++ b/src/java/org/apache/cassandra/cache/RefCountedMemory.java @@@ -21,10 -21,9 +21,9 @@@ import java.util.concurrent.atomic.Atom import org.apache.cassandra.io.util.Memory; - public class RefCountedMemory extends Memory + public class RefCountedMemory extends Memory implements AutoCloseable { - private volatile int references = 1; - private final AtomicInteger references = new AtomicInteger(1); + private static final AtomicIntegerFieldUpdater<RefCountedMemory> UPDATER = AtomicIntegerFieldUpdater.newUpdater(RefCountedMemory.class, "references"); public RefCountedMemory(long size) { @@@ -50,20 -49,12 +49,24 @@@ /** decrement reference count. if count reaches zero, the object is freed. */ public void unreference() { - if (references.decrementAndGet() == 0) - free(); + if (UPDATER.decrementAndGet(this) == 0) + super.free(); + } + + public RefCountedMemory copy(long newSize) + { + RefCountedMemory copy = new RefCountedMemory(newSize); + copy.put(0, this, 0, Math.min(size(), newSize)); + return copy; + } + + public void free() + { + throw new AssertionError(); } + public void close() + { + unreference(); + } }