Merge branch 'cassandra-3.0' into cassandra-3.X

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

Branch: refs/heads/trunk
Commit: 3cb023355a3bf039725a55ad3ecdc3f9ce880997
Parents: 94a01f6 c0886d8
Author: Stefania Alborghetti <stefania.alborghe...@datastax.com>
Authored: Tue Oct 25 09:55:40 2016 +0800
Committer: Stefania Alborghetti <stefania.alborghe...@datastax.com>
Committed: Tue Oct 25 09:56:21 2016 +0800

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../apache/cassandra/schema/CachingParams.java  |  4 +-
 .../org/apache/cassandra/cql3/CQLTester.java    | 20 ++++--
 .../apache/cassandra/cql3/KeyCacheCqlTest.java  | 76 ++++++++++++++++----
 4 files changed, 81 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/3cb02335/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index aa49a68,9910245..d1f2677
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,93 -1,5 +1,94 @@@
 -3.0.10
 +3.10
 + * Fix RandomReplicationAwareTokenAllocatorTest.testExistingCluster 
(CASSANDRA-12812)
 + * Upgrade commons-codec to 1.9 (CASSANDRA-12790)
 + * Make the fanout size for LeveledCompactionStrategy to be configurable 
(CASSANDRA-11550)
 + * Add duration data type (CASSANDRA-11873)
 + * Fix timeout in ReplicationAwareTokenAllocatorTest (CASSANDRA-12784)
 + * Improve sum aggregate functions (CASSANDRA-12417)
 + * Make cassandra.yaml docs for batch_size_*_threshold_in_kb reflect changes 
in CASSANDRA-10876 (CASSANDRA-12761)
 + * cqlsh fails to format collections when using aliases (CASSANDRA-11534)
 + * Check for hash conflicts in prepared statements (CASSANDRA-12733)
 + * Exit query parsing upon first error (CASSANDRA-12598)
 + * Fix cassandra-stress to use single seed in UUID generation 
(CASSANDRA-12729)
 + * CQLSSTableWriter does not allow Update statement (CASSANDRA-12450)
 + * Config class uses boxed types but DD exposes primitive types 
(CASSANDRA-12199)
 + * Add pre- and post-shutdown hooks to Storage Service (CASSANDRA-12461)
 + * Add hint delivery metrics (CASSANDRA-12693)
 + * Remove IndexInfo cache from FileIndexInfoRetriever (CASSANDRA-12731)
 + * ColumnIndex does not reuse buffer (CASSANDRA-12502)
 + * cdc column addition still breaks schema migration tasks (CASSANDRA-12697)
 + * Upgrade metrics-reporter dependencies (CASSANDRA-12089)
 + * Tune compaction thread count via nodetool (CASSANDRA-12248)
 + * Add +=/-= shortcut syntax for update queries (CASSANDRA-12232)
 + * Include repair session IDs in repair start message (CASSANDRA-12532)
 + * Add a blocking task to Index, run before joining the ring (CASSANDRA-12039)
 + * Fix NPE when using CQLSSTableWriter (CASSANDRA-12667)
 + * Support optional backpressure strategies at the coordinator 
(CASSANDRA-9318)
 + * Make randompartitioner work with new vnode allocation (CASSANDRA-12647)
 + * Fix cassandra-stress graphing (CASSANDRA-12237)
 + * Allow filtering on partition key columns for queries without secondary 
indexes (CASSANDRA-11031)
 + * Fix Cassandra Stress reporting thread model and precision (CASSANDRA-12585)
 + * Add JMH benchmarks.jar (CASSANDRA-12586)
 + * Add row offset support to SASI (CASSANDRA-11990)
 + * Cleanup uses of AlterTableStatementColumn (CASSANDRA-12567)
 + * Add keep-alive to streaming (CASSANDRA-11841)
 + * Tracing payload is passed through newSession(..) (CASSANDRA-11706)
 + * avoid deleting non existing sstable files and improve related log messages 
(CASSANDRA-12261)
 + * json/yaml output format for nodetool compactionhistory (CASSANDRA-12486)
 + * Retry all internode messages once after a connection is
 +   closed and reopened (CASSANDRA-12192)
 + * Add support to rebuild from targeted replica (CASSANDRA-9875)
 + * Add sequence distribution type to cassandra stress (CASSANDRA-12490)
 + * "SELECT * FROM foo LIMIT ;" does not error out (CASSANDRA-12154)
 + * Define executeLocally() at the ReadQuery Level (CASSANDRA-12474)
 + * Extend read/write failure messages with a map of replica addresses
 +   to error codes in the v5 native protocol (CASSANDRA-12311)
 + * Fix rebuild of SASI indexes with existing index files (CASSANDRA-12374)
 + * Let DatabaseDescriptor not implicitly startup services (CASSANDRA-9054, 
12550)
 + * Fix clustering indexes in presence of static columns in SASI 
(CASSANDRA-12378)
 + * Fix queries on columns with reversed type on SASI indexes (CASSANDRA-12223)
 + * Added slow query log (CASSANDRA-12403)
 + * Count full coordinated request against timeout (CASSANDRA-12256)
 + * Allow TTL with null value on insert and update (CASSANDRA-12216)
 + * Make decommission operation resumable (CASSANDRA-12008)
 + * Add support to one-way targeted repair (CASSANDRA-9876)
 + * Remove clientutil jar (CASSANDRA-11635)
 + * Fix compaction throughput throttle (CASSANDRA-12366, CASSANDRA-12717)
 + * Delay releasing Memtable memory on flush until PostFlush has finished 
running (CASSANDRA-12358)
 + * Cassandra stress should dump all setting on startup (CASSANDRA-11914)
 + * Make it possible to compact a given token range (CASSANDRA-10643)
 + * Allow updating DynamicEndpointSnitch properties via JMX (CASSANDRA-12179)
 + * Collect metrics on queries by consistency level (CASSANDRA-7384)
 + * Add support for GROUP BY to SELECT statement (CASSANDRA-10707)
 + * Deprecate memtable_cleanup_threshold and update default for 
memtable_flush_writers (CASSANDRA-12228)
 + * Upgrade to OHC 0.4.4 (CASSANDRA-12133)
 + * Add version command to cassandra-stress (CASSANDRA-12258)
 + * Create compaction-stress tool (CASSANDRA-11844)
 + * Garbage-collecting compaction operation and schema option (CASSANDRA-7019)
 + * Add beta protocol flag for v5 native protocol (CASSANDRA-12142)
 + * Support filtering on non-PRIMARY KEY columns in the CREATE
 +   MATERIALIZED VIEW statement's WHERE clause (CASSANDRA-10368)
 + * Unify STDOUT and SYSTEMLOG logback format (CASSANDRA-12004)
 + * COPY FROM should raise error for non-existing input files (CASSANDRA-12174)
 + * Faster write path (CASSANDRA-12269)
 + * Option to leave omitted columns in INSERT JSON unset (CASSANDRA-11424)
 + * Support json/yaml output in nodetool tpstats (CASSANDRA-12035)
 + * Expose metrics for successful/failed authentication attempts 
(CASSANDRA-10635)
 + * Prepend snapshot name with "truncated" or "dropped" when a snapshot
 +   is taken before truncating or dropping a table (CASSANDRA-12178)
 + * Optimize RestrictionSet (CASSANDRA-12153)
 + * cqlsh does not automatically downgrade CQL version (CASSANDRA-12150)
 + * Omit (de)serialization of state variable in UDAs (CASSANDRA-9613)
 + * Create a system table to expose prepared statements (CASSANDRA-8831)
 + * Reuse DataOutputBuffer from ColumnIndex (CASSANDRA-11970)
 + * Remove DatabaseDescriptor dependency from SegmentedFile (CASSANDRA-11580)
 + * Add supplied username to authentication error messages (CASSANDRA-12076)
 + * Remove pre-startup check for open JMX port (CASSANDRA-12074)
 + * Remove compaction Severity from DynamicEndpointSnitch (CASSANDRA-11738)
 + * Restore resumable hints delivery (CASSANDRA-11960)
 + * Properly report LWT contention (CASSANDRA-12626)
 +Merged from 3.0:
+  * Fix for KeyCacheCqlTest flakiness (CASSANDRA-12801)
   * Include SSTable filename in compacting large row message (CASSANDRA-12384)
   * Fix potential socket leak (CASSANDRA-12329, CASSANDRA-12330)
   * Fix ViewTest.testCompaction (CASSANDRA-12789)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3cb02335/test/unit/org/apache/cassandra/cql3/CQLTester.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3cb02335/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java
index 21a17fa,3f87343..32e6aec
--- a/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java
+++ b/test/unit/org/apache/cassandra/cql3/KeyCacheCqlTest.java
@@@ -22,18 -22,17 +22,20 @@@ import java.io.IOException
  import java.util.ArrayList;
  import java.util.Iterator;
  import java.util.List;
 +import java.util.concurrent.Callable;
  
  import org.junit.Assert;
+ import org.junit.BeforeClass;
  import org.junit.Test;
  
  import org.apache.cassandra.cache.KeyCacheKey;
 +import org.apache.cassandra.config.DatabaseDescriptor;
  import org.apache.cassandra.config.Schema;
  import org.apache.cassandra.db.Keyspace;
 +import org.apache.cassandra.index.Index;
  import org.apache.cassandra.metrics.CacheMetrics;
  import org.apache.cassandra.metrics.CassandraMetricsRegistry;
+ import org.apache.cassandra.schema.CachingParams;
  import org.apache.cassandra.service.CacheService;
  import org.apache.cassandra.service.StorageService;
  
@@@ -81,21 -81,55 +84,68 @@@ public class KeyCacheCqlTest extends CQ
                                       
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
 +
                                       
"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
  
+     /**
+      * Prevent system tables from populating the key cache to ensure that
+      * the test can reliably check the size of the key cache size and its 
metrics.
+      * Test tables will be created with caching enabled manually in the CQL 
statement,
+      * see {@link KeyCacheCqlTest#createTable(String)}.
+      *
+      * Then call the base class initialization, which must be done after 
disabling the key cache.
+      */
+     @BeforeClass
+     public static void setUpClass()
+     {
+         CachingParams.DEFAULT = CachingParams.CACHE_NOTHING;
+         CQLTester.setUpClass();
+     }
+ 
+     /**
+      * Create a table in KEYSPACE_PER_TEST_PER_TEST because it will get 
dropped synchronously by CQLTester after
+      * each test, whereas the default keyspace gets dropped asynchronously 
and this may cause unexpected
+      * flush operations during a test, which would change the expected result 
of metrics.
+      *
+      * Then add manual caching, since by default we have disabled cachinng 
for all other tables, to ensure
+      * that we can assert on the key cache size and metrics.
+      */
+     @Override
+     protected String createTable(String query)
+     {
+         return super.createTable(KEYSPACE_PER_TEST, query + " WITH caching = 
{ 'keys' : 'ALL', 'rows_per_partition' : '0' }");
+     }
+ 
+     @Override
+     protected UntypedResultSet execute(String query, Object... values) throws 
Throwable
+     {
+         return executeFormattedQuery(formatQuery(KEYSPACE_PER_TEST, query), 
values);
+     }
+ 
+     @Override
+     protected void createIndex(String query)
+     {
+         createFormattedIndex(formatQuery(KEYSPACE_PER_TEST, query));
+     }
+ 
+     @Override
+     protected void dropTable(String query)
+     {
+         dropFormattedTable(String.format(query, KEYSPACE_PER_TEST + "." + 
currentTable()));
+     }
+ 
      @Test
 -    public void testSliceQueries() throws Throwable
 +    public void testSliceQueriesShallowIndexEntry() throws Throwable
 +    {
 +        DatabaseDescriptor.setColumnIndexCacheSize(0);
 +        testSliceQueries();
 +    }
 +
 +    @Test
 +    public void testSliceQueriesIndexInfoOnHeap() throws Throwable
 +    {
 +        DatabaseDescriptor.setColumnIndexCacheSize(8);
 +        testSliceQueries();
 +    }
 +
 +    private void testSliceQueries() throws Throwable
      {
          createTable("CREATE TABLE %s (pk text, ck1 int, ck2 int, val text, 
vpk text, vck1 int, vck2 int, PRIMARY KEY (pk, ck1, ck2))");
  
@@@ -474,8 -456,8 +524,8 @@@
          prepareTable(table);
          if (index != null)
          {
-             StorageService.instance.disableAutoCompaction(KEYSPACE, table + 
'.' + index);
-             
triggerBlockingFlush(Keyspace.open(KEYSPACE).getColumnFamilyStore(table).indexManager.getIndexByName(index));
+             StorageService.instance.disableAutoCompaction(KEYSPACE_PER_TEST, 
table + '.' + index);
 -            
Keyspace.open(KEYSPACE_PER_TEST).getColumnFamilyStore(table).indexManager.getIndexByName(index).getBlockingFlushTask().call();
++            
triggerBlockingFlush(Keyspace.open(KEYSPACE_PER_TEST).getColumnFamilyStore(table).indexManager.getIndexByName(index));
          }
  
          for (int i = 0; i < 100; i++)
@@@ -498,9 -480,9 +548,9 @@@
  
              if (i % 10 == 9)
              {
-                 
Keyspace.open(KEYSPACE).getColumnFamilyStore(table).forceFlush().get();
+                 
Keyspace.open(KEYSPACE_PER_TEST).getColumnFamilyStore(table).forceFlush().get();
                  if (index != null)
-                     
triggerBlockingFlush(Keyspace.open(KEYSPACE).getColumnFamilyStore(table).indexManager.getIndexByName(index));
 -                    
Keyspace.open(KEYSPACE_PER_TEST).getColumnFamilyStore(table).indexManager.getIndexByName(index).getBlockingFlushTask().call();
++                    
triggerBlockingFlush(Keyspace.open(KEYSPACE_PER_TEST).getColumnFamilyStore(table).indexManager.getIndexByName(index));
              }
          }
      }

Reply via email to