You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by be...@apache.org on 2015/01/28 16:20:31 UTC

[7/7] cassandra git commit: Merge branch 'cassandra-2.1' into trunk

Merge branch 'cassandra-2.1' into trunk

Conflicts:
	src/java/org/apache/cassandra/db/compaction/CompactionManager.java
	src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
	src/java/org/apache/cassandra/service/ActiveRepairService.java
	src/java/org/apache/cassandra/streaming/StreamSession.java
	src/java/org/apache/cassandra/streaming/StreamTransferTask.java
	src/java/org/apache/cassandra/streaming/messages/OutgoingFileMessage.java
	test/unit/org/apache/cassandra/SchemaLoader.java
	test/unit/org/apache/cassandra/db/compaction/AntiCompactionTest.java
	test/unit/org/apache/cassandra/db/compaction/BlacklistingCompactionsTest.java
	test/unit/org/apache/cassandra/io/sstable/SSTableRewriterTest.java


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9c4a776d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9c4a776d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9c4a776d

Branch: refs/heads/trunk
Commit: 9c4a776d207739f918cba93cc40d2029ae5c05f0
Parents: b4b1bdd c75ee41
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Wed Jan 28 15:19:58 2015 +0000
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Wed Jan 28 15:19:58 2015 +0000

----------------------------------------------------------------------
 CHANGES.txt                                     |   1 +
 build.xml                                       |   1 +
 .../apache/cassandra/db/ColumnFamilyStore.java  | 143 +++---
 .../org/apache/cassandra/db/DataTracker.java    |   6 +-
 .../compaction/AbstractCompactionStrategy.java  |   2 +-
 .../db/compaction/CompactionController.java     |  20 +-
 .../db/compaction/CompactionManager.java        |  24 +-
 .../cassandra/db/compaction/CompactionTask.java |   9 +-
 .../cassandra/db/index/SecondaryIndex.java      |  10 +-
 .../apache/cassandra/io/sstable/SSTable.java    |   1 +
 .../cassandra/io/sstable/SSTableLoader.java     |  14 +-
 .../cassandra/io/sstable/SSTableRewriter.java   |  15 +-
 .../io/sstable/format/SSTableReader.java        | 441 +++++++++----------
 .../io/sstable/format/big/BigTableWriter.java   |   4 +-
 .../cassandra/service/ActiveRepairService.java  |  26 +-
 .../cassandra/streaming/StreamReceiveTask.java  |  10 +-
 .../cassandra/streaming/StreamSession.java      |  28 +-
 .../cassandra/streaming/StreamTransferTask.java |  10 +-
 .../streaming/messages/OutgoingFileMessage.java |  10 +-
 .../cassandra/tools/StandaloneScrubber.java     |   2 +-
 .../apache/cassandra/utils/concurrent/Ref.java  | 134 ++++++
 .../cassandra/utils/concurrent/RefCounted.java  |  94 ++++
 .../utils/concurrent/RefCountedImpl.java        | 132 ++++++
 .../apache/cassandra/utils/concurrent/Refs.java | 219 +++++++++
 .../unit/org/apache/cassandra/SchemaLoader.java |  11 +
 .../org/apache/cassandra/db/KeyCacheTest.java   |   9 +-
 .../db/compaction/AntiCompactionTest.java       |  26 +-
 .../compaction/BlacklistingCompactionsTest.java |  11 +
 .../cassandra/io/sstable/LegacySSTableTest.java |   2 +-
 .../io/sstable/SSTableRewriterTest.java         |   6 +-
 .../streaming/StreamTransferTaskTest.java       |   2 +-
 .../streaming/StreamingTransferTest.java        |  18 +-
 .../utils/concurrent/RefCountedTest.java        |  85 ++++
 33 files changed, 1100 insertions(+), 426 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 432ebcc8,d142a68..53a2c63
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,64 -1,10 +1,65 @@@
 +3.0
 + * rpc_interface and listen_interface generate NPE on startup when specified interface doesn't exist (CASSANDRA-8677)
 + * Fix ArrayIndexOutOfBoundsException in nodetool cfhistograms (CASSANDRA-8514)
 + * Serializing Row cache alternative, fully off heap (CASSANDRA-7438)
 + * Duplicate rows returned when in clause has repeated values (CASSANDRA-6707)
 + * Make CassandraException unchecked, extend RuntimeException (CASSANDRA-8560)
 + * Support direct buffer decompression for reads (CASSANDRA-8464)
 + * DirectByteBuffer compatible LZ4 methods (CASSANDRA-7039)
 + * Add role based access control (CASSANDRA-7653)
 + * Group sstables for anticompaction correctly (CASSANDRA-8578)
 + * Add ReadFailureException to native protocol, respond
 +   immediately when replicas encounter errors while handling
 +   a read request (CASSANDRA-7886)
 + * Switch CommitLogSegment from RandomAccessFile to nio (CASSANDRA-8308)
 + * Allow mixing token and partition key restrictions (CASSANDRA-7016)
 + * Support index key/value entries on map collections (CASSANDRA-8473)
 + * Modernize schema tables (CASSANDRA-8261)
 + * Support for user-defined aggregation functions (CASSANDRA-8053)
 + * Fix NPE in SelectStatement with empty IN values (CASSANDRA-8419)
 + * Refactor SelectStatement, return IN results in natural order instead
 +   of IN value list order and ignore duplicate values in partition key IN restrictions (CASSANDRA-7981)
 + * Support UDTs, tuples, and collections in user-defined
 +   functions (CASSANDRA-7563)
 + * Fix aggregate fn results on empty selection, result column name,
 +   and cqlsh parsing (CASSANDRA-8229)
 + * Mark sstables as repaired after full repair (CASSANDRA-7586)
 + * Extend Descriptor to include a format value and refactor reader/writer
 +   APIs (CASSANDRA-7443)
 + * Integrate JMH for microbenchmarks (CASSANDRA-8151)
 + * Keep sstable levels when bootstrapping (CASSANDRA-7460)
 + * Add Sigar library and perform basic OS settings check on startup (CASSANDRA-7838)
 + * Support for aggregation functions (CASSANDRA-4914)
 + * Remove cassandra-cli (CASSANDRA-7920)
 + * Accept dollar quoted strings in CQL (CASSANDRA-7769)
 + * Make assassinate a first class command (CASSANDRA-7935)
 + * Support IN clause on any clustering column (CASSANDRA-4762)
 + * Improve compaction logging (CASSANDRA-7818)
 + * Remove YamlFileNetworkTopologySnitch (CASSANDRA-7917)
 + * Do anticompaction in groups (CASSANDRA-6851)
 + * Support user-defined functions (CASSANDRA-7395, 7526, 7562, 7740, 7781, 7929,
 +   7924, 7812, 8063, 7813, 7708)
 + * Permit configurable timestamps with cassandra-stress (CASSANDRA-7416)
 + * Move sstable RandomAccessReader to nio2, which allows using the
 +   FILE_SHARE_DELETE flag on Windows (CASSANDRA-4050)
 + * Remove CQL2 (CASSANDRA-5918)
 + * Add Thrift get_multi_slice call (CASSANDRA-6757)
 + * Optimize fetching multiple cells by name (CASSANDRA-6933)
 + * Allow compilation in java 8 (CASSANDRA-7028)
 + * Make incremental repair default (CASSANDRA-7250)
 + * Enable code coverage thru JaCoCo (CASSANDRA-7226)
 + * Switch external naming of 'column families' to 'tables' (CASSANDRA-4369) 
 + * Shorten SSTable path (CASSANDRA-6962)
 + * Use unsafe mutations for most unit tests (CASSANDRA-6969)
 + * Fix race condition during calculation of pending ranges (CASSANDRA-7390)
 + * Fail on very large batch sizes (CASSANDRA-8011)
 + * Improve concurrency of repair (CASSANDRA-6455, 8208)
 +
 +
  2.1.3
+  * Safer Resource Management (CASSANDRA-7705)
   * Make sure we compact highly overlapping cold sstables with
     STCS (CASSANDRA-8635)
 - * rpc_interface and listen_interface generate NPE on startup when specified interface doesn't exist (CASSANDRA-8677)
 - * Fix ArrayIndexOutOfBoundsException in nodetool cfhistograms (CASSANDRA-8514)
 - * Switch from yammer metrics for nodetool cf/proxy histograms (CASSANDRA-8662)
   * Make sure we don't add tmplink files to the compaction
     strategy (CASSANDRA-8580)
   * (cqlsh) Handle maps with blob keys (CASSANDRA-8372)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/build.xml
----------------------------------------------------------------------
diff --cc build.xml
index 12c877a,d53a0f7..ce9a603
--- a/build.xml
+++ b/build.xml
@@@ -1117,9 -1107,9 +1117,10 @@@
          <formatter type="brief" usefile="false"/>
          <jvmarg value="-Dstorage-config=${test.conf}"/>
          <jvmarg value="-Djava.awt.headless=true"/>
 -        <jvmarg value="-javaagent:${basedir}/lib/jamm-0.3.0.jar" />
 +        <!-- Cassandra 3.0+ needs <jvmarg line="... ${additionalagent}" /> here! (not value=) -->
 +        <jvmarg line="-javaagent:${basedir}/lib/jamm-0.3.0.jar ${additionalagent}" />
          <jvmarg value="-ea"/>
+         <jvmarg value="-Dcassandra.debugrefcount=true"/>
          <jvmarg value="-Xss256k"/>
          <jvmarg value="-Dcassandra.memtable_row_overhead_computation_step=100"/>
          <jvmarg value="-Dcassandra.test.use_prepared=${cassandra.test.use_prepared}"/>

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 78537fa,62aadf9..9824e4a
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@@ -58,11 -59,9 +59,10 @@@ import org.apache.cassandra.dht.*
  import org.apache.cassandra.dht.Range;
  import org.apache.cassandra.exceptions.ConfigurationException;
  import org.apache.cassandra.io.FSReadError;
- import org.apache.cassandra.io.FSWriteError;
  import org.apache.cassandra.io.compress.CompressionParameters;
 -import org.apache.cassandra.io.sstable.*;
  import org.apache.cassandra.io.sstable.Descriptor;
 +import org.apache.cassandra.io.sstable.*;
 +import org.apache.cassandra.io.sstable.format.*;
  import org.apache.cassandra.io.sstable.metadata.CompactionMetadata;
  import org.apache.cassandra.io.sstable.metadata.MetadataType;
  import org.apache.cassandra.io.util.FileUtils;
@@@ -2230,14 -2211,12 +2192,13 @@@ public class ColumnFamilyStore implemen
          snapshotWithoutFlush(snapshotName, null);
      }
  
 -    public void snapshotWithoutFlush(String snapshotName, Predicate<SSTableReader> predicate)
 +    public Set<SSTableReader> snapshotWithoutFlush(String snapshotName, Predicate<SSTableReader> predicate)
      {
 +        Set<SSTableReader> snapshottedSSTables = new HashSet<>();
          for (ColumnFamilyStore cfs : concatWithIndexes())
          {
-             DataTracker.View currentView = cfs.markCurrentViewReferenced();
              final JSONArray filesJSONArr = new JSONArray();
-             try
+             try (RefViewFragment currentView = cfs.selectAndReference(ALL_SSTABLES))
              {
                  for (SSTableReader ssTable : currentView.sstables)
                  {
@@@ -2256,12 -2234,7 +2217,8 @@@
  
                  writeSnapshotManifest(filesJSONArr, snapshotName);
              }
-             finally
-             {
-                 SSTableReader.releaseReferences(currentView.sstables);
-             }
          }
 +        return snapshottedSSTables;
      }
  
      private void writeSnapshotManifest(final JSONArray filesJSONArr, final String snapshotName)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/src/java/org/apache/cassandra/db/DataTracker.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/src/java/org/apache/cassandra/db/compaction/CompactionController.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/CompactionController.java
index c8c028d,5217189..1f9c34f
--- a/src/java/org/apache/cassandra/db/compaction/CompactionController.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionController.java
@@@ -31,8 -30,11 +31,10 @@@ import org.slf4j.LoggerFactory
  import org.apache.cassandra.db.ColumnFamilyStore;
  import org.apache.cassandra.db.DataTracker;
  import org.apache.cassandra.db.DecoratedKey;
 -import org.apache.cassandra.io.sstable.SSTableReader;
  import org.apache.cassandra.utils.AlwaysPresentFilter;
  
+ import org.apache.cassandra.utils.concurrent.Refs;
+ 
  /**
   * Manage compaction options.
   */

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index 06fabba,f59938f..99945b6
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@@ -84,10 -82,11 +84,12 @@@ import org.apache.cassandra.service.Sto
  import org.apache.cassandra.utils.concurrent.OpOrder;
  import org.apache.cassandra.utils.*;
  
+ import org.apache.cassandra.utils.concurrent.Refs;
+ 
  /**
 + * <p>
   * A singleton which manages a private executor of ongoing compactions.
 - * <p/>
 + * </p>
   * Scheduling for compaction is accomplished by swapping sstables to be compacted into
   * a set via DataTracker. New scheduling attempts will ignore currently compacting
   * sstables.
@@@ -417,8 -409,8 +413,8 @@@ public class CompactionManager implemen
       */
      public void performAnticompaction(ColumnFamilyStore cfs,
                                        Collection<Range<Token>> ranges,
-                                       Collection<SSTableReader> validatedForRepair,
+                                       Refs<SSTableReader> validatedForRepair,
 -                                      long repairedAt) throws InterruptedException, ExecutionException, IOException
 +                                      long repairedAt) throws InterruptedException, IOException
      {
          logger.info("Starting anticompaction for {}.{} on {}/{} sstables", cfs.keyspace.getName(), cfs.getColumnFamilyName(), validatedForRepair.size(), cfs.getSSTables().size());
          logger.debug("Starting anticompaction for ranges {}", ranges);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/src/java/org/apache/cassandra/db/index/SecondaryIndex.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/src/java/org/apache/cassandra/io/sstable/SSTable.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/src/java/org/apache/cassandra/io/sstable/SSTableLoader.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/9c4a776d/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
----------------------------------------------------------------------