You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2013/10/13 18:14:02 UTC

[1/9] git commit: make it clear we are logging two stats for MS

Updated Branches:
  refs/heads/cassandra-1.2 5fab1276c -> 7290abd19
  refs/heads/cassandra-2.0 67bbdba82 -> 53b2d9d55
  refs/heads/trunk ca7ba1418 -> 2531424c0


make it clear we are logging two stats for MS


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

Branch: refs/heads/cassandra-1.2
Commit: dc2dd525eb69c001d703b6bb2bd673a0d34db45a
Parents: 5fab127
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Oct 10 19:54:31 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sun Oct 13 11:07:23 2013 -0500

----------------------------------------------------------------------
 src/java/org/apache/cassandra/utils/StatusLogger.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dc2dd525/src/java/org/apache/cassandra/utils/StatusLogger.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/StatusLogger.java b/src/java/org/apache/cassandra/utils/StatusLogger.java
index 15c4811..dbf56d4 100644
--- a/src/java/org/apache/cassandra/utils/StatusLogger.java
+++ b/src/java/org/apache/cassandra/utils/StatusLogger.java
@@ -93,7 +93,7 @@ public class StatusLogger
             pendingResponses += n;
         }
         logger.info(String.format("%-25s%10s%10s",
-                                  "MessagingService", "n/a", pendingCommands + "," + pendingResponses));
+                                  "MessagingService", "n/a", pendingCommands + "/" + pendingResponses));
 
         // Global key/row cache information
         AutoSavingCache<KeyCacheKey, RowIndexEntry> keyCache = CacheService.instance.keyCache;


[7/9] git commit: merge from 1.2

Posted by jb...@apache.org.
merge from 1.2


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

Branch: refs/heads/cassandra-2.0
Commit: 53b2d9d55acf841f74812efbc35af42990e01718
Parents: 67bbdba 7290abd
Author: Jonathan Ellis <jb...@apache.org>
Authored: Sun Oct 13 11:13:15 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sun Oct 13 11:13:15 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/config/CFMetaData.java  | 10 ++++++++--
 .../apache/cassandra/db/ColumnFamilyStore.java   |  8 ++------
 .../AbstractSimplePerColumnSecondaryIndex.java   | 19 -------------------
 .../org/apache/cassandra/utils/StatusLogger.java |  2 +-
 5 files changed, 12 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/53b2d9d5/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 0fc2a91,7f43031..4668ae2
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -47,43 -22,10 +47,44 @@@ Merged from 1.2
   * Handle JMX notification failure for repair (CASSANDRA-6097)
   * (Hadoop) Fetch no more than 128 splits in parallel (CASSANDRA-6169)
   * stress: add username/password authentication support (CASSANDRA-6068)
+  * Fix indexed queries with row cache enabled on parent table (CASSANDRA-5732)
  
  
 -1.2.10
 +2.0.1
 + * Fix bug that could allow reading deleted data temporarily (CASSANDRA-6025)
 + * Improve memory use defaults (CASSANDRA-5069)
 + * Make ThriftServer more easlly extensible (CASSANDRA-6058)
 + * Remove Hadoop dependency from ITransportFactory (CASSANDRA-6062)
 + * add file_cache_size_in_mb setting (CASSANDRA-5661)
 + * Improve error message when yaml contains invalid properties (CASSANDRA-5958)
 + * Improve leveled compaction's ability to find non-overlapping L0 compactions
 +   to work on concurrently (CASSANDRA-5921)
 + * Notify indexer of columns shadowed by range tombstones (CASSANDRA-5614)
 + * Log Merkle tree stats (CASSANDRA-2698)
 + * Switch from crc32 to adler32 for compressed sstable checksums (CASSANDRA-5862)
 + * Improve offheap memcpy performance (CASSANDRA-5884)
 + * Use a range aware scanner for cleanup (CASSANDRA-2524)
 + * Cleanup doesn't need to inspect sstables that contain only local data
 +   (CASSANDRA-5722)
 + * Add ability for CQL3 to list partition keys (CASSANDRA-4536)
 + * Improve native protocol serialization (CASSANDRA-5664)
 + * Upgrade Thrift to 0.9.1 (CASSANDRA-5923)
 + * Require superuser status for adding triggers (CASSANDRA-5963)
 + * Make standalone scrubber handle old and new style leveled manifest
 +   (CASSANDRA-6005)
 + * Fix paxos bugs (CASSANDRA-6012, 6013, 6023)
 + * Fix paged ranges with multiple replicas (CASSANDRA-6004)
 + * Fix potential AssertionError during tracing (CASSANDRA-6041)
 + * Fix NPE in sstablesplit (CASSANDRA-6027)
 + * Migrate pre-2.0 key/value/column aliases to system.schema_columns
 +   (CASSANDRA-6009)
 + * Paging filter empty rows too agressively (CASSANDRA-6040)
 + * Support variadic parameters for IN clauses (CASSANDRA-4210)
 + * cqlsh: return the result of CAS writes (CASSANDRA-5796)
 + * Fix validation of IN clauses with 2ndary indexes (CASSANDRA-6050)
 + * Support named bind variables in CQL (CASSANDRA-6033)
 +Merged from 1.2:
 + * Allow cache-keys-to-save to be set at runtime (CASSANDRA-5980)
   * Avoid second-guessing out-of-space state (CASSANDRA-5605)
   * Tuning knobs for dealing with large blobs and many CFs (CASSANDRA-5982)
   * (Hadoop) Fix CQLRW for thrift tables (CASSANDRA-6002)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/53b2d9d5/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/config/CFMetaData.java
index bbea21e,fcbd012..374f4a5
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@@ -445,18 -304,18 +445,24 @@@ public final class CFMetaDat
  
      public CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp, AbstractType<?> subcc)
      {
 -        this(keyspace, name, type, comp, subcc, getId(keyspace, name));
 +        this(keyspace, name, type, makeComparator(type, comp, subcc));
      }
  
 -    CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp, AbstractType<?> subcc, UUID id)
 +    public CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp)
 +    {
 +        this(keyspace, name, type, comp, getId(keyspace, name));
 +    }
 +
 +    @VisibleForTesting
 +    CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp,  UUID id)
      {
-         // Final fields must be set in constructor
+         assert keyspace != null;
+         assert name != null;
+         assert type != null;
+         assert id != null;
+         // (subcc may be null for non-supercolumns)
+         // (comp may also be null for custom indexes, which is kind of broken if you ask me)
+ 
          ksName = keyspace;
          cfName = name;
          cfType = type;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/53b2d9d5/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 117df6f,39359b7..597ca53
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@@ -1266,15 -1188,10 +1266,11 @@@ public class ColumnFamilyStore implemen
          long start = System.nanoTime();
          try
          {
 +            int gcBefore = gcBefore(filter.timestamp);
              if (isRowCacheEnabled())
              {
-                 UUID cfId = Schema.instance.getId(keyspace.getName(), name);
-                 if (cfId == null)
-                 {
-                     logger.trace("no id found for {}.{}", keyspace.getName(), name);
-                     return null;
-                 }
+                 assert !isIndex(); // CASSANDRA-5732
+                 UUID cfId = metadata.cfId;
  
                  ColumnFamily cached = getThroughCache(cfId, filter);
                  if (cached == null)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/53b2d9d5/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
index afc7409,caa7e20..8b12575
--- a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
+++ b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
@@@ -53,30 -49,11 +53,11 @@@ public abstract class AbstractSimplePer
                                                               indexedCfMetadata.cfName,
                                                               new LocalPartitioner(columnDef.getValidator()),
                                                               indexedCfMetadata);
- 
-         // enable and initialize row cache based on parent's setting and indexed column's cardinality
-         CFMetaData.Caching baseCaching = baseCfs.metadata.getCaching();
-         if (baseCaching == CFMetaData.Caching.ALL || baseCaching == CFMetaData.Caching.ROWS_ONLY)
-         {
-             /*
-              * # of index CF's key = cardinality of indexed column.
-              * if # of keys stored in index CF is more than average column counts (means tall keyspaceName),
-              * then consider it as high cardinality.
-              */
-             double estimatedKeys = indexCfs.estimateKeys();
-             double averageColumnCount = indexCfs.getMeanColumns();
-             if (averageColumnCount > 0 && estimatedKeys / averageColumnCount > 1)
-             {
-                 logger.debug("turning row cache on for " + indexCfs.name);
-                 indexCfs.metadata.caching(baseCaching);
-                 indexCfs.initRowCache();
-             }
-         }
      }
  
 -    protected abstract void init(ColumnDefinition columnDef);
 +    protected abstract ByteBuffer makeIndexColumnName(ByteBuffer rowKey, Column column);
  
 -    protected abstract ByteBuffer makeIndexColumnName(ByteBuffer rowKey, IColumn column);
 +    protected abstract ByteBuffer getIndexedValue(ByteBuffer rowKey, Column column);
  
      protected abstract AbstractType getExpressionComparator();
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/53b2d9d5/src/java/org/apache/cassandra/utils/StatusLogger.java
----------------------------------------------------------------------


[4/9] git commit: Avoid using row cache on 2i CFs patch by Sam Tunnicliffe and jbellis for CASSANDRA-5732

Posted by jb...@apache.org.
Avoid using row cache on 2i CFs
patch by Sam Tunnicliffe and jbellis for CASSANDRA-5732


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

Branch: refs/heads/cassandra-1.2
Commit: 7290abd198d6c63f1109094cf237d9c84f617f7d
Parents: dc2dd52
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Oct 10 14:45:46 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sun Oct 13 11:09:25 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/config/CFMetaData.java  | 10 ++++++++--
 .../apache/cassandra/db/ColumnFamilyStore.java   |  8 ++------
 .../AbstractSimplePerColumnSecondaryIndex.java   | 19 -------------------
 4 files changed, 11 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index afb1464..7f43031 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -22,6 +22,7 @@
  * Handle JMX notification failure for repair (CASSANDRA-6097)
  * (Hadoop) Fetch no more than 128 splits in parallel (CASSANDRA-6169)
  * stress: add username/password authentication support (CASSANDRA-6068)
+ * Fix indexed queries with row cache enabled on parent table (CASSANDRA-5732)
 
 
 1.2.10

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index 4355737..fcbd012 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -309,7 +309,13 @@ public final class CFMetaData
 
     CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp, AbstractType<?> subcc, UUID id)
     {
-        // Final fields must be set in constructor
+        assert keyspace != null;
+        assert name != null;
+        assert type != null;
+        assert id != null;
+        // (subcc may be null for non-supercolumns)
+        // (comp may also be null for custom indexes, which is kind of broken if you ask me)
+
         ksName = keyspace;
         cfName = name;
         cfType = type;
@@ -387,7 +393,7 @@ public final class CFMetaData
     public static CFMetaData newIndexMetadata(CFMetaData parent, ColumnDefinition info, AbstractType<?> columnComparator)
     {
         // Depends on parent's cache setting, turn on its index CF's cache.
-        // Here, only key cache is enabled, but later (in KeysIndex) row cache will be turned on depending on cardinality.
+        // Row caching is never enabled; see CASSANDRA-5732
         Caching indexCaching = parent.getCaching() == Caching.ALL || parent.getCaching() == Caching.KEYS_ONLY
                              ? Caching.KEYS_ONLY
                              : Caching.NONE;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index a7e8605..39359b7 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1190,12 +1190,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
         {
             if (isRowCacheEnabled())
             {
-                UUID cfId = Schema.instance.getId(table.name, columnFamily);
-                if (cfId == null)
-                {
-                    logger.trace("no id found for {}.{}", table.name, columnFamily);
-                    return null;
-                }
+                assert !isIndex(); // CASSANDRA-5732
+                UUID cfId = metadata.cfId;
 
                 ColumnFamily cached = getThroughCache(cfId, filter);
                 if (cached == null)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
index 2ff2d27..caa7e20 100644
--- a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
+++ b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
@@ -49,25 +49,6 @@ public abstract class AbstractSimplePerColumnSecondaryIndex extends PerColumnSec
                                                              indexedCfMetadata.cfName,
                                                              new LocalPartitioner(columnDef.getValidator()),
                                                              indexedCfMetadata);
-
-        // enable and initialize row cache based on parent's setting and indexed column's cardinality
-        CFMetaData.Caching baseCaching = baseCfs.metadata.getCaching();
-        if (baseCaching == CFMetaData.Caching.ALL || baseCaching == CFMetaData.Caching.ROWS_ONLY)
-        {
-            /*
-             * # of index CF's key = cardinality of indexed column.
-             * if # of keys stored in index CF is more than average column counts (means tall table),
-             * then consider it as high cardinality.
-             */
-            double estimatedKeys = indexCfs.estimateKeys();
-            double averageColumnCount = indexCfs.getMeanColumns();
-            if (averageColumnCount > 0 && estimatedKeys / averageColumnCount > 1)
-            {
-                logger.debug("turning row cache on for " + indexCfs.getColumnFamilyName());
-                indexCfs.metadata.caching(baseCaching);
-                indexCfs.initRowCache();
-            }
-        }
     }
 
     protected abstract void init(ColumnDefinition columnDef);


[5/9] git commit: Avoid using row cache on 2i CFs patch by Sam Tunnicliffe and jbellis for CASSANDRA-5732

Posted by jb...@apache.org.
Avoid using row cache on 2i CFs
patch by Sam Tunnicliffe and jbellis for CASSANDRA-5732


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

Branch: refs/heads/cassandra-2.0
Commit: 7290abd198d6c63f1109094cf237d9c84f617f7d
Parents: dc2dd52
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Oct 10 14:45:46 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sun Oct 13 11:09:25 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/config/CFMetaData.java  | 10 ++++++++--
 .../apache/cassandra/db/ColumnFamilyStore.java   |  8 ++------
 .../AbstractSimplePerColumnSecondaryIndex.java   | 19 -------------------
 4 files changed, 11 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index afb1464..7f43031 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -22,6 +22,7 @@
  * Handle JMX notification failure for repair (CASSANDRA-6097)
  * (Hadoop) Fetch no more than 128 splits in parallel (CASSANDRA-6169)
  * stress: add username/password authentication support (CASSANDRA-6068)
+ * Fix indexed queries with row cache enabled on parent table (CASSANDRA-5732)
 
 
 1.2.10

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index 4355737..fcbd012 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -309,7 +309,13 @@ public final class CFMetaData
 
     CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp, AbstractType<?> subcc, UUID id)
     {
-        // Final fields must be set in constructor
+        assert keyspace != null;
+        assert name != null;
+        assert type != null;
+        assert id != null;
+        // (subcc may be null for non-supercolumns)
+        // (comp may also be null for custom indexes, which is kind of broken if you ask me)
+
         ksName = keyspace;
         cfName = name;
         cfType = type;
@@ -387,7 +393,7 @@ public final class CFMetaData
     public static CFMetaData newIndexMetadata(CFMetaData parent, ColumnDefinition info, AbstractType<?> columnComparator)
     {
         // Depends on parent's cache setting, turn on its index CF's cache.
-        // Here, only key cache is enabled, but later (in KeysIndex) row cache will be turned on depending on cardinality.
+        // Row caching is never enabled; see CASSANDRA-5732
         Caching indexCaching = parent.getCaching() == Caching.ALL || parent.getCaching() == Caching.KEYS_ONLY
                              ? Caching.KEYS_ONLY
                              : Caching.NONE;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index a7e8605..39359b7 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1190,12 +1190,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
         {
             if (isRowCacheEnabled())
             {
-                UUID cfId = Schema.instance.getId(table.name, columnFamily);
-                if (cfId == null)
-                {
-                    logger.trace("no id found for {}.{}", table.name, columnFamily);
-                    return null;
-                }
+                assert !isIndex(); // CASSANDRA-5732
+                UUID cfId = metadata.cfId;
 
                 ColumnFamily cached = getThroughCache(cfId, filter);
                 if (cached == null)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
index 2ff2d27..caa7e20 100644
--- a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
+++ b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
@@ -49,25 +49,6 @@ public abstract class AbstractSimplePerColumnSecondaryIndex extends PerColumnSec
                                                              indexedCfMetadata.cfName,
                                                              new LocalPartitioner(columnDef.getValidator()),
                                                              indexedCfMetadata);
-
-        // enable and initialize row cache based on parent's setting and indexed column's cardinality
-        CFMetaData.Caching baseCaching = baseCfs.metadata.getCaching();
-        if (baseCaching == CFMetaData.Caching.ALL || baseCaching == CFMetaData.Caching.ROWS_ONLY)
-        {
-            /*
-             * # of index CF's key = cardinality of indexed column.
-             * if # of keys stored in index CF is more than average column counts (means tall table),
-             * then consider it as high cardinality.
-             */
-            double estimatedKeys = indexCfs.estimateKeys();
-            double averageColumnCount = indexCfs.getMeanColumns();
-            if (averageColumnCount > 0 && estimatedKeys / averageColumnCount > 1)
-            {
-                logger.debug("turning row cache on for " + indexCfs.getColumnFamilyName());
-                indexCfs.metadata.caching(baseCaching);
-                indexCfs.initRowCache();
-            }
-        }
     }
 
     protected abstract void init(ColumnDefinition columnDef);


[8/9] git commit: merge from 1.2

Posted by jb...@apache.org.
merge from 1.2


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

Branch: refs/heads/trunk
Commit: 53b2d9d55acf841f74812efbc35af42990e01718
Parents: 67bbdba 7290abd
Author: Jonathan Ellis <jb...@apache.org>
Authored: Sun Oct 13 11:13:15 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sun Oct 13 11:13:15 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/config/CFMetaData.java  | 10 ++++++++--
 .../apache/cassandra/db/ColumnFamilyStore.java   |  8 ++------
 .../AbstractSimplePerColumnSecondaryIndex.java   | 19 -------------------
 .../org/apache/cassandra/utils/StatusLogger.java |  2 +-
 5 files changed, 12 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/53b2d9d5/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 0fc2a91,7f43031..4668ae2
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -47,43 -22,10 +47,44 @@@ Merged from 1.2
   * Handle JMX notification failure for repair (CASSANDRA-6097)
   * (Hadoop) Fetch no more than 128 splits in parallel (CASSANDRA-6169)
   * stress: add username/password authentication support (CASSANDRA-6068)
+  * Fix indexed queries with row cache enabled on parent table (CASSANDRA-5732)
  
  
 -1.2.10
 +2.0.1
 + * Fix bug that could allow reading deleted data temporarily (CASSANDRA-6025)
 + * Improve memory use defaults (CASSANDRA-5069)
 + * Make ThriftServer more easlly extensible (CASSANDRA-6058)
 + * Remove Hadoop dependency from ITransportFactory (CASSANDRA-6062)
 + * add file_cache_size_in_mb setting (CASSANDRA-5661)
 + * Improve error message when yaml contains invalid properties (CASSANDRA-5958)
 + * Improve leveled compaction's ability to find non-overlapping L0 compactions
 +   to work on concurrently (CASSANDRA-5921)
 + * Notify indexer of columns shadowed by range tombstones (CASSANDRA-5614)
 + * Log Merkle tree stats (CASSANDRA-2698)
 + * Switch from crc32 to adler32 for compressed sstable checksums (CASSANDRA-5862)
 + * Improve offheap memcpy performance (CASSANDRA-5884)
 + * Use a range aware scanner for cleanup (CASSANDRA-2524)
 + * Cleanup doesn't need to inspect sstables that contain only local data
 +   (CASSANDRA-5722)
 + * Add ability for CQL3 to list partition keys (CASSANDRA-4536)
 + * Improve native protocol serialization (CASSANDRA-5664)
 + * Upgrade Thrift to 0.9.1 (CASSANDRA-5923)
 + * Require superuser status for adding triggers (CASSANDRA-5963)
 + * Make standalone scrubber handle old and new style leveled manifest
 +   (CASSANDRA-6005)
 + * Fix paxos bugs (CASSANDRA-6012, 6013, 6023)
 + * Fix paged ranges with multiple replicas (CASSANDRA-6004)
 + * Fix potential AssertionError during tracing (CASSANDRA-6041)
 + * Fix NPE in sstablesplit (CASSANDRA-6027)
 + * Migrate pre-2.0 key/value/column aliases to system.schema_columns
 +   (CASSANDRA-6009)
 + * Paging filter empty rows too agressively (CASSANDRA-6040)
 + * Support variadic parameters for IN clauses (CASSANDRA-4210)
 + * cqlsh: return the result of CAS writes (CASSANDRA-5796)
 + * Fix validation of IN clauses with 2ndary indexes (CASSANDRA-6050)
 + * Support named bind variables in CQL (CASSANDRA-6033)
 +Merged from 1.2:
 + * Allow cache-keys-to-save to be set at runtime (CASSANDRA-5980)
   * Avoid second-guessing out-of-space state (CASSANDRA-5605)
   * Tuning knobs for dealing with large blobs and many CFs (CASSANDRA-5982)
   * (Hadoop) Fix CQLRW for thrift tables (CASSANDRA-6002)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/53b2d9d5/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/config/CFMetaData.java
index bbea21e,fcbd012..374f4a5
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@@ -445,18 -304,18 +445,24 @@@ public final class CFMetaDat
  
      public CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp, AbstractType<?> subcc)
      {
 -        this(keyspace, name, type, comp, subcc, getId(keyspace, name));
 +        this(keyspace, name, type, makeComparator(type, comp, subcc));
      }
  
 -    CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp, AbstractType<?> subcc, UUID id)
 +    public CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp)
 +    {
 +        this(keyspace, name, type, comp, getId(keyspace, name));
 +    }
 +
 +    @VisibleForTesting
 +    CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp,  UUID id)
      {
-         // Final fields must be set in constructor
+         assert keyspace != null;
+         assert name != null;
+         assert type != null;
+         assert id != null;
+         // (subcc may be null for non-supercolumns)
+         // (comp may also be null for custom indexes, which is kind of broken if you ask me)
+ 
          ksName = keyspace;
          cfName = name;
          cfType = type;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/53b2d9d5/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 117df6f,39359b7..597ca53
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@@ -1266,15 -1188,10 +1266,11 @@@ public class ColumnFamilyStore implemen
          long start = System.nanoTime();
          try
          {
 +            int gcBefore = gcBefore(filter.timestamp);
              if (isRowCacheEnabled())
              {
-                 UUID cfId = Schema.instance.getId(keyspace.getName(), name);
-                 if (cfId == null)
-                 {
-                     logger.trace("no id found for {}.{}", keyspace.getName(), name);
-                     return null;
-                 }
+                 assert !isIndex(); // CASSANDRA-5732
+                 UUID cfId = metadata.cfId;
  
                  ColumnFamily cached = getThroughCache(cfId, filter);
                  if (cached == null)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/53b2d9d5/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
index afc7409,caa7e20..8b12575
--- a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
+++ b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
@@@ -53,30 -49,11 +53,11 @@@ public abstract class AbstractSimplePer
                                                               indexedCfMetadata.cfName,
                                                               new LocalPartitioner(columnDef.getValidator()),
                                                               indexedCfMetadata);
- 
-         // enable and initialize row cache based on parent's setting and indexed column's cardinality
-         CFMetaData.Caching baseCaching = baseCfs.metadata.getCaching();
-         if (baseCaching == CFMetaData.Caching.ALL || baseCaching == CFMetaData.Caching.ROWS_ONLY)
-         {
-             /*
-              * # of index CF's key = cardinality of indexed column.
-              * if # of keys stored in index CF is more than average column counts (means tall keyspaceName),
-              * then consider it as high cardinality.
-              */
-             double estimatedKeys = indexCfs.estimateKeys();
-             double averageColumnCount = indexCfs.getMeanColumns();
-             if (averageColumnCount > 0 && estimatedKeys / averageColumnCount > 1)
-             {
-                 logger.debug("turning row cache on for " + indexCfs.name);
-                 indexCfs.metadata.caching(baseCaching);
-                 indexCfs.initRowCache();
-             }
-         }
      }
  
 -    protected abstract void init(ColumnDefinition columnDef);
 +    protected abstract ByteBuffer makeIndexColumnName(ByteBuffer rowKey, Column column);
  
 -    protected abstract ByteBuffer makeIndexColumnName(ByteBuffer rowKey, IColumn column);
 +    protected abstract ByteBuffer getIndexedValue(ByteBuffer rowKey, Column column);
  
      protected abstract AbstractType getExpressionComparator();
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/53b2d9d5/src/java/org/apache/cassandra/utils/StatusLogger.java
----------------------------------------------------------------------


[6/9] git commit: Avoid using row cache on 2i CFs patch by Sam Tunnicliffe and jbellis for CASSANDRA-5732

Posted by jb...@apache.org.
Avoid using row cache on 2i CFs
patch by Sam Tunnicliffe and jbellis for CASSANDRA-5732


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

Branch: refs/heads/trunk
Commit: 7290abd198d6c63f1109094cf237d9c84f617f7d
Parents: dc2dd52
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Oct 10 14:45:46 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sun Oct 13 11:09:25 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/config/CFMetaData.java  | 10 ++++++++--
 .../apache/cassandra/db/ColumnFamilyStore.java   |  8 ++------
 .../AbstractSimplePerColumnSecondaryIndex.java   | 19 -------------------
 4 files changed, 11 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index afb1464..7f43031 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -22,6 +22,7 @@
  * Handle JMX notification failure for repair (CASSANDRA-6097)
  * (Hadoop) Fetch no more than 128 splits in parallel (CASSANDRA-6169)
  * stress: add username/password authentication support (CASSANDRA-6068)
+ * Fix indexed queries with row cache enabled on parent table (CASSANDRA-5732)
 
 
 1.2.10

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index 4355737..fcbd012 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -309,7 +309,13 @@ public final class CFMetaData
 
     CFMetaData(String keyspace, String name, ColumnFamilyType type, AbstractType<?> comp, AbstractType<?> subcc, UUID id)
     {
-        // Final fields must be set in constructor
+        assert keyspace != null;
+        assert name != null;
+        assert type != null;
+        assert id != null;
+        // (subcc may be null for non-supercolumns)
+        // (comp may also be null for custom indexes, which is kind of broken if you ask me)
+
         ksName = keyspace;
         cfName = name;
         cfType = type;
@@ -387,7 +393,7 @@ public final class CFMetaData
     public static CFMetaData newIndexMetadata(CFMetaData parent, ColumnDefinition info, AbstractType<?> columnComparator)
     {
         // Depends on parent's cache setting, turn on its index CF's cache.
-        // Here, only key cache is enabled, but later (in KeysIndex) row cache will be turned on depending on cardinality.
+        // Row caching is never enabled; see CASSANDRA-5732
         Caching indexCaching = parent.getCaching() == Caching.ALL || parent.getCaching() == Caching.KEYS_ONLY
                              ? Caching.KEYS_ONLY
                              : Caching.NONE;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index a7e8605..39359b7 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1190,12 +1190,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
         {
             if (isRowCacheEnabled())
             {
-                UUID cfId = Schema.instance.getId(table.name, columnFamily);
-                if (cfId == null)
-                {
-                    logger.trace("no id found for {}.{}", table.name, columnFamily);
-                    return null;
-                }
+                assert !isIndex(); // CASSANDRA-5732
+                UUID cfId = metadata.cfId;
 
                 ColumnFamily cached = getThroughCache(cfId, filter);
                 if (cached == null)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7290abd1/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
index 2ff2d27..caa7e20 100644
--- a/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
+++ b/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
@@ -49,25 +49,6 @@ public abstract class AbstractSimplePerColumnSecondaryIndex extends PerColumnSec
                                                              indexedCfMetadata.cfName,
                                                              new LocalPartitioner(columnDef.getValidator()),
                                                              indexedCfMetadata);
-
-        // enable and initialize row cache based on parent's setting and indexed column's cardinality
-        CFMetaData.Caching baseCaching = baseCfs.metadata.getCaching();
-        if (baseCaching == CFMetaData.Caching.ALL || baseCaching == CFMetaData.Caching.ROWS_ONLY)
-        {
-            /*
-             * # of index CF's key = cardinality of indexed column.
-             * if # of keys stored in index CF is more than average column counts (means tall table),
-             * then consider it as high cardinality.
-             */
-            double estimatedKeys = indexCfs.estimateKeys();
-            double averageColumnCount = indexCfs.getMeanColumns();
-            if (averageColumnCount > 0 && estimatedKeys / averageColumnCount > 1)
-            {
-                logger.debug("turning row cache on for " + indexCfs.getColumnFamilyName());
-                indexCfs.metadata.caching(baseCaching);
-                indexCfs.initRowCache();
-            }
-        }
     }
 
     protected abstract void init(ColumnDefinition columnDef);


[3/9] git commit: make it clear we are logging two stats for MS

Posted by jb...@apache.org.
make it clear we are logging two stats for MS


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

Branch: refs/heads/trunk
Commit: dc2dd525eb69c001d703b6bb2bd673a0d34db45a
Parents: 5fab127
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Oct 10 19:54:31 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sun Oct 13 11:07:23 2013 -0500

----------------------------------------------------------------------
 src/java/org/apache/cassandra/utils/StatusLogger.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dc2dd525/src/java/org/apache/cassandra/utils/StatusLogger.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/StatusLogger.java b/src/java/org/apache/cassandra/utils/StatusLogger.java
index 15c4811..dbf56d4 100644
--- a/src/java/org/apache/cassandra/utils/StatusLogger.java
+++ b/src/java/org/apache/cassandra/utils/StatusLogger.java
@@ -93,7 +93,7 @@ public class StatusLogger
             pendingResponses += n;
         }
         logger.info(String.format("%-25s%10s%10s",
-                                  "MessagingService", "n/a", pendingCommands + "," + pendingResponses));
+                                  "MessagingService", "n/a", pendingCommands + "/" + pendingResponses));
 
         // Global key/row cache information
         AutoSavingCache<KeyCacheKey, RowIndexEntry> keyCache = CacheService.instance.keyCache;


[9/9] git commit: merge from 2.0

Posted by jb...@apache.org.
merge from 2.0


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

Branch: refs/heads/trunk
Commit: 2531424c0050196512b3f8f785f9041eab1c2ef3
Parents: ca7ba14 53b2d9d
Author: Jonathan Ellis <jb...@apache.org>
Authored: Sun Oct 13 11:13:55 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sun Oct 13 11:13:55 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/config/CFMetaData.java  | 10 ++++++++--
 .../apache/cassandra/db/ColumnFamilyStore.java   |  8 ++------
 .../AbstractSimplePerColumnSecondaryIndex.java   | 19 -------------------
 .../org/apache/cassandra/utils/StatusLogger.java |  2 +-
 5 files changed, 12 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2531424c/CHANGES.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2531424c/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2531424c/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2531424c/src/java/org/apache/cassandra/db/index/AbstractSimplePerColumnSecondaryIndex.java
----------------------------------------------------------------------


[2/9] git commit: make it clear we are logging two stats for MS

Posted by jb...@apache.org.
make it clear we are logging two stats for MS


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

Branch: refs/heads/cassandra-2.0
Commit: dc2dd525eb69c001d703b6bb2bd673a0d34db45a
Parents: 5fab127
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Oct 10 19:54:31 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sun Oct 13 11:07:23 2013 -0500

----------------------------------------------------------------------
 src/java/org/apache/cassandra/utils/StatusLogger.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dc2dd525/src/java/org/apache/cassandra/utils/StatusLogger.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/StatusLogger.java b/src/java/org/apache/cassandra/utils/StatusLogger.java
index 15c4811..dbf56d4 100644
--- a/src/java/org/apache/cassandra/utils/StatusLogger.java
+++ b/src/java/org/apache/cassandra/utils/StatusLogger.java
@@ -93,7 +93,7 @@ public class StatusLogger
             pendingResponses += n;
         }
         logger.info(String.format("%-25s%10s%10s",
-                                  "MessagingService", "n/a", pendingCommands + "," + pendingResponses));
+                                  "MessagingService", "n/a", pendingCommands + "/" + pendingResponses));
 
         // Global key/row cache information
         AutoSavingCache<KeyCacheKey, RowIndexEntry> keyCache = CacheService.instance.keyCache;