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 2014/02/06 17:20:29 UTC

[1/7] git commit: Fix upgradesstables NPE for non-CF-based indexes patch by Sergio Bossa; reviewed by jbellis for CASSANDRA-6645

Updated Branches:
  refs/heads/cassandra-2.0 45955e682 -> 862698cd5
  refs/heads/trunk f97a981d5 -> b4cd7b58e


Fix upgradesstables NPE for non-CF-based indexes
patch by Sergio Bossa; reviewed by jbellis for CASSANDRA-6645


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

Branch: refs/heads/cassandra-2.0
Commit: 8b6d87b86b0134221dd15fb74e96a9a8ee5ff1d9
Parents: adcb713
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Feb 6 10:16:41 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Feb 6 10:16:41 2014 -0600

----------------------------------------------------------------------
 CHANGES.txt                                           |  2 ++
 .../db/index/composites/CompositesSearcher.java       |  3 ++-
 .../apache/cassandra/db/index/keys/KeysSearcher.java  |  3 ++-
 .../org/apache/cassandra/service/StorageService.java  | 14 ++++++++++----
 4 files changed, 16 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b6d87b8/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index cfdd148..4be97f1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,8 @@
 1.2.16
+ * Fix upgradesstables NPE for non-CF-based indexes (CASSANDRA-6645)
  * Fix partition and range deletes not triggering flush (CASSANDRA-6655)
 
+
 1.2.15
  * Move handling of migration event source to solve bootstrap race (CASSANDRA-6648)
  * Make sure compaction throughput value doesn't overflow with int math (CASSANDRA-6647)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b6d87b8/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
index 5ab1df6..3974466 100644
--- a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
@@ -65,7 +65,7 @@ public class CompositesSearcher extends SecondaryIndexSearcher
                 continue;
 
             SecondaryIndex index = indexManager.getIndexForColumn(expression.column_name);
-            if (index == null || (expression.op != IndexOperator.EQ))
+            if (index == null || index.getIndexCfs() == null || (expression.op != IndexOperator.EQ))
                 continue;
             int columns = index.getIndexCfs().getMeanColumns();
             candidates.put(index, columns);
@@ -106,6 +106,7 @@ public class CompositesSearcher extends SecondaryIndexSearcher
         final IndexExpression primary = highestSelectivityPredicate(filter.getClause());
         final SecondaryIndex index = indexManager.getIndexForColumn(primary.column_name);
         assert index != null;
+        assert index.getIndexCfs() != null;
         final DecoratedKey indexKey = index.getIndexKeyFor(primary.value);
 
         if (logger.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b6d87b8/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java b/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
index bed6104..7e7595b 100644
--- a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
@@ -61,7 +61,7 @@ public class KeysSearcher extends SecondaryIndexSearcher
                 continue;
 
             SecondaryIndex index = indexManager.getIndexForColumn(expression.column_name);
-            if (index == null || (expression.op != IndexOperator.EQ))
+            if (index == null || index.getIndexCfs() == null || (expression.op != IndexOperator.EQ))
                 continue;
             int columns = index.getIndexCfs().getMeanColumns();
             candidates.put(index, columns);
@@ -102,6 +102,7 @@ public class KeysSearcher extends SecondaryIndexSearcher
         final IndexExpression primary = highestSelectivityPredicate(filter.getClause());
         final SecondaryIndex index = indexManager.getIndexForColumn(primary.column_name);
         assert index != null;
+        assert index.getIndexCfs() != null;
         final DecoratedKey indexKey = index.getIndexKeyFor(primary.value);
 
         if (logger.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b6d87b8/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index fa43154..94dd73d 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2314,8 +2314,11 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
                 {
                     for (SecondaryIndex si : cfStore.indexManager.getIndexes())
                     {
-                        logger.info("adding secondary index {} to operation", si.getIndexName());
-                        valid.add(si.getIndexCfs());
+                        if (si.getIndexCfs() != null)
+                        {
+                            logger.info("adding secondary index {} to operation", si.getIndexName());
+                            valid.add(si.getIndexCfs());
+                        }
                     }
 
                 }
@@ -2364,8 +2367,11 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
                 {
                     for(SecondaryIndex si : cfStore.indexManager.getIndexes())
                     {
-                        logger.info("adding secondary index {} to operation", si.getIndexName());
-                        valid.add(si.getIndexCfs());
+                        if (si.getIndexCfs() != null)
+                        {
+                            logger.info("adding secondary index {} to operation", si.getIndexName());
+                            valid.add(si.getIndexCfs());
+                        }
                     }
                 }
             }


[3/7] 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/0b6913ee
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0b6913ee
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0b6913ee

Branch: refs/heads/trunk
Commit: 0b6913ee0607e1392c5d743d2f896dcdd138fe40
Parents: 43e6e18 8b6d87b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Feb 6 10:17:57 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Feb 6 10:17:57 2014 -0600

----------------------------------------------------------------------
 CHANGES.txt                                             |  1 +
 .../cassandra/db/index/SecondaryIndexSearcher.java      |  2 +-
 .../db/index/composites/CompositesSearcher.java         |  1 +
 .../apache/cassandra/db/index/keys/KeysSearcher.java    |  1 +
 .../org/apache/cassandra/service/StorageService.java    | 12 ++++++++----
 5 files changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index dfbe5c6,4be97f1..94c89cb
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,8 -1,5 +1,9 @@@
 -1.2.16
 +2.0.6
 + * Improve nodetool cfhistograms formatting (CASSANDRA-6360)
 + * Expose bulk loading progress over JMX (CASSANDRA-4757)
 + * Correctly handle null with IF conditions and TTL (CASSANDRA-6623)
 +Merged from 1.2:
+  * Fix upgradesstables NPE for non-CF-based indexes (CASSANDRA-6645)
   * Fix partition and range deletes not triggering flush (CASSANDRA-6655)
  
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
index f3e993d,a8c1dde..e93efd1
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
@@@ -45,41 -43,15 +45,41 @@@ public abstract class SecondaryIndexSea
      /**
       * @return true this index is able to handle given clauses.
       */
 -    public abstract boolean isIndexing(List<IndexExpression> clause);
 -    
 -    protected boolean isIndexValueStale(ColumnFamily liveData, ByteBuffer indexedColumnName, ByteBuffer indexedValue)
 +    public boolean isIndexing(List<IndexExpression> clause)
      {
 -        IColumn liveColumn = liveData.getColumn(indexedColumnName);
 -        if (liveColumn == null || liveColumn.isMarkedForDelete())
 -            return true;
 -        
 -        ByteBuffer liveValue = liveColumn.value();
 -        return 0 != liveData.metadata().getValueValidator(indexedColumnName).compare(indexedValue, liveValue);
 +        return highestSelectivityPredicate(clause) != null;
 +    }
 +
 +    protected IndexExpression highestSelectivityPredicate(List<IndexExpression> clause)
 +    {
 +        IndexExpression best = null;
 +        int bestMeanCount = Integer.MAX_VALUE;
 +        Map<SecondaryIndex, Integer> candidates = new HashMap<>();
 +
 +        for (IndexExpression expression : clause)
 +        {
 +            // skip columns belonging to a different index type
 +            if (!columns.contains(expression.column_name))
 +                continue;
 +
 +            SecondaryIndex index = indexManager.getIndexForColumn(expression.column_name);
-             if (index == null || (expression.op != IndexOperator.EQ))
++            if (index == null || index.getIndexCfs() == null || expression.op != IndexOperator.EQ)
 +                continue;
 +            int columns = index.getIndexCfs().getMeanColumns();
 +            candidates.put(index, columns);
 +            if (columns < bestMeanCount)
 +            {
 +                best = expression;
 +                bestMeanCount = columns;
 +            }
 +        }
 +
 +        if (best == null)
 +            Tracing.trace("No applicable indexes found");
 +        else
 +            Tracing.trace("Candidate index mean cardinalities are {}. Scanning with {}.",
 +                          FBUtilities.toString(candidates), indexManager.getIndexForColumn(best.column_name).getIndexName());
 +
 +        return best;
      }
  }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
index aa35605,3974466..90e7089
--- a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
@@@ -78,8 -104,9 +78,9 @@@ public class CompositesSearcher extend
          // to each row matching that clause.
          // TODO: allow merge join instead of just one index + loop
          final IndexExpression primary = highestSelectivityPredicate(filter.getClause());
 -        final SecondaryIndex index = indexManager.getIndexForColumn(primary.column_name);
 +        final CompositesIndex index = (CompositesIndex)indexManager.getIndexForColumn(primary.column_name);
          assert index != null;
+         assert index.getIndexCfs() != null;
          final DecoratedKey indexKey = index.getIndexKeyFor(primary.value);
  
          if (logger.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index 9a6b50f,94dd73d..26846e7
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -2297,8 -2314,11 +2297,10 @@@ public class StorageService extends Not
                  {
                      for (SecondaryIndex si : cfStore.indexManager.getIndexes())
                      {
-                         logger.info("adding secondary index {} to operation", si.getIndexName());
-                         valid.add(si.getIndexCfs());
 -                        if (si.getIndexCfs() != null)
 -                        {
++                        if (si.getIndexCfs() != null) {
+                             logger.info("adding secondary index {} to operation", si.getIndexName());
+                             valid.add(si.getIndexCfs());
+                         }
                      }
  
                  }
@@@ -2346,8 -2367,11 +2348,10 @@@
                  {
                      for(SecondaryIndex si : cfStore.indexManager.getIndexes())
                      {
-                         logger.info("adding secondary index {} to operation", si.getIndexName());
-                         valid.add(si.getIndexCfs());
 -                        if (si.getIndexCfs() != null)
 -                        {
++                        if (si.getIndexCfs() != null) {
+                             logger.info("adding secondary index {} to operation", si.getIndexName());
+                             valid.add(si.getIndexCfs());
+                         }
                      }
                  }
              }


[4/7] 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/0b6913ee
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0b6913ee
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0b6913ee

Branch: refs/heads/cassandra-2.0
Commit: 0b6913ee0607e1392c5d743d2f896dcdd138fe40
Parents: 43e6e18 8b6d87b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Feb 6 10:17:57 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Feb 6 10:17:57 2014 -0600

----------------------------------------------------------------------
 CHANGES.txt                                             |  1 +
 .../cassandra/db/index/SecondaryIndexSearcher.java      |  2 +-
 .../db/index/composites/CompositesSearcher.java         |  1 +
 .../apache/cassandra/db/index/keys/KeysSearcher.java    |  1 +
 .../org/apache/cassandra/service/StorageService.java    | 12 ++++++++----
 5 files changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index dfbe5c6,4be97f1..94c89cb
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,8 -1,5 +1,9 @@@
 -1.2.16
 +2.0.6
 + * Improve nodetool cfhistograms formatting (CASSANDRA-6360)
 + * Expose bulk loading progress over JMX (CASSANDRA-4757)
 + * Correctly handle null with IF conditions and TTL (CASSANDRA-6623)
 +Merged from 1.2:
+  * Fix upgradesstables NPE for non-CF-based indexes (CASSANDRA-6645)
   * Fix partition and range deletes not triggering flush (CASSANDRA-6655)
  
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
index f3e993d,a8c1dde..e93efd1
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
@@@ -45,41 -43,15 +45,41 @@@ public abstract class SecondaryIndexSea
      /**
       * @return true this index is able to handle given clauses.
       */
 -    public abstract boolean isIndexing(List<IndexExpression> clause);
 -    
 -    protected boolean isIndexValueStale(ColumnFamily liveData, ByteBuffer indexedColumnName, ByteBuffer indexedValue)
 +    public boolean isIndexing(List<IndexExpression> clause)
      {
 -        IColumn liveColumn = liveData.getColumn(indexedColumnName);
 -        if (liveColumn == null || liveColumn.isMarkedForDelete())
 -            return true;
 -        
 -        ByteBuffer liveValue = liveColumn.value();
 -        return 0 != liveData.metadata().getValueValidator(indexedColumnName).compare(indexedValue, liveValue);
 +        return highestSelectivityPredicate(clause) != null;
 +    }
 +
 +    protected IndexExpression highestSelectivityPredicate(List<IndexExpression> clause)
 +    {
 +        IndexExpression best = null;
 +        int bestMeanCount = Integer.MAX_VALUE;
 +        Map<SecondaryIndex, Integer> candidates = new HashMap<>();
 +
 +        for (IndexExpression expression : clause)
 +        {
 +            // skip columns belonging to a different index type
 +            if (!columns.contains(expression.column_name))
 +                continue;
 +
 +            SecondaryIndex index = indexManager.getIndexForColumn(expression.column_name);
-             if (index == null || (expression.op != IndexOperator.EQ))
++            if (index == null || index.getIndexCfs() == null || expression.op != IndexOperator.EQ)
 +                continue;
 +            int columns = index.getIndexCfs().getMeanColumns();
 +            candidates.put(index, columns);
 +            if (columns < bestMeanCount)
 +            {
 +                best = expression;
 +                bestMeanCount = columns;
 +            }
 +        }
 +
 +        if (best == null)
 +            Tracing.trace("No applicable indexes found");
 +        else
 +            Tracing.trace("Candidate index mean cardinalities are {}. Scanning with {}.",
 +                          FBUtilities.toString(candidates), indexManager.getIndexForColumn(best.column_name).getIndexName());
 +
 +        return best;
      }
  }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
index aa35605,3974466..90e7089
--- a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
@@@ -78,8 -104,9 +78,9 @@@ public class CompositesSearcher extend
          // to each row matching that clause.
          // TODO: allow merge join instead of just one index + loop
          final IndexExpression primary = highestSelectivityPredicate(filter.getClause());
 -        final SecondaryIndex index = indexManager.getIndexForColumn(primary.column_name);
 +        final CompositesIndex index = (CompositesIndex)indexManager.getIndexForColumn(primary.column_name);
          assert index != null;
+         assert index.getIndexCfs() != null;
          final DecoratedKey indexKey = index.getIndexKeyFor(primary.value);
  
          if (logger.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b6913ee/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index 9a6b50f,94dd73d..26846e7
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -2297,8 -2314,11 +2297,10 @@@ public class StorageService extends Not
                  {
                      for (SecondaryIndex si : cfStore.indexManager.getIndexes())
                      {
-                         logger.info("adding secondary index {} to operation", si.getIndexName());
-                         valid.add(si.getIndexCfs());
 -                        if (si.getIndexCfs() != null)
 -                        {
++                        if (si.getIndexCfs() != null) {
+                             logger.info("adding secondary index {} to operation", si.getIndexName());
+                             valid.add(si.getIndexCfs());
+                         }
                      }
  
                  }
@@@ -2346,8 -2367,11 +2348,10 @@@
                  {
                      for(SecondaryIndex si : cfStore.indexManager.getIndexes())
                      {
-                         logger.info("adding secondary index {} to operation", si.getIndexName());
-                         valid.add(si.getIndexCfs());
 -                        if (si.getIndexCfs() != null)
 -                        {
++                        if (si.getIndexCfs() != null) {
+                             logger.info("adding secondary index {} to operation", si.getIndexName());
+                             valid.add(si.getIndexCfs());
+                         }
                      }
                  }
              }


[5/7] 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/43ad56bd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/43ad56bd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/43ad56bd

Branch: refs/heads/trunk
Commit: 43ad56bd496ed01b8153de3fe2209b211675120b
Parents: 3a82adb 0b6913e
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Feb 6 10:19:07 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Feb 6 10:19:07 2014 -0600

----------------------------------------------------------------------
 CHANGES.txt                                             |  1 +
 .../cassandra/db/index/SecondaryIndexSearcher.java      |  2 +-
 .../db/index/composites/CompositesSearcher.java         |  1 +
 .../apache/cassandra/db/index/keys/KeysSearcher.java    |  1 +
 .../org/apache/cassandra/service/StorageService.java    | 12 ++++++++----
 5 files changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


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

http://git-wip-us.apache.org/repos/asf/cassandra/blob/43ad56bd/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
index a508a15,e93efd1..70c3d6b
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexSearcher.java
@@@ -63,11 -59,11 +63,11 @@@ public abstract class SecondaryIndexSea
          for (IndexExpression expression : clause)
          {
              // skip columns belonging to a different index type
 -            if (!columns.contains(expression.column_name))
 +            if (!columns.contains(expression.column))
                  continue;
  
 -            SecondaryIndex index = indexManager.getIndexForColumn(expression.column_name);
 -            if (index == null || index.getIndexCfs() == null || expression.op != IndexOperator.EQ)
 +            SecondaryIndex index = indexManager.getIndexForColumn(expression.column);
-             if (index == null || !expression.operator.allowsIndexQuery())
++            if (index == null || index.getIndexCfs() == null || !expression.operator.allowsIndexQuery())
                  continue;
              int columns = index.getIndexCfs().getMeanColumns();
              candidates.put(index, columns);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/43ad56bd/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
index 7dba9b0,90e7089..b441ff1
--- a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
@@@ -78,8 -78,9 +78,9 @@@ public class CompositesSearcher extend
          // to each row matching that clause.
          // TODO: allow merge join instead of just one index + loop
          final IndexExpression primary = highestSelectivityPredicate(filter.getClause());
 -        final CompositesIndex index = (CompositesIndex)indexManager.getIndexForColumn(primary.column_name);
 +        final CompositesIndex index = (CompositesIndex)indexManager.getIndexForColumn(primary.column);
          assert index != null;
+         assert index.getIndexCfs() != null;
          final DecoratedKey indexKey = index.getIndexKeyFor(primary.value);
  
          if (logger.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/43ad56bd/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
index 2ed888f,5d82ba0..d491c93
--- a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
@@@ -65,8 -61,9 +65,9 @@@ public class KeysSearcher extends Secon
          // to each row matching that clause.
          // TODO: allow merge join instead of just one index + loop
          final IndexExpression primary = highestSelectivityPredicate(filter.getClause());
 -        final SecondaryIndex index = indexManager.getIndexForColumn(primary.column_name);
 +        final SecondaryIndex index = indexManager.getIndexForColumn(primary.column);
          assert index != null;
+         assert index.getIndexCfs() != null;
          final DecoratedKey indexKey = index.getIndexKeyFor(primary.value);
  
          if (logger.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/43ad56bd/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------


[6/7] git commit: Merge remote-tracking branch 'origin/cassandra-2.0' into cassandra-2.0

Posted by jb...@apache.org.
Merge remote-tracking branch 'origin/cassandra-2.0' into cassandra-2.0


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

Branch: refs/heads/cassandra-2.0
Commit: 862698cd546ebc3adc99b5c84cfaf0764d3e3e96
Parents: 0b6913e 45955e6
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Feb 6 10:19:43 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Feb 6 10:19:43 2014 -0600

----------------------------------------------------------------------
 CHANGES.txt | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


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


[7/7] git commit: merge

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


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

Branch: refs/heads/trunk
Commit: b4cd7b58e73261891649fbb30e5cc83989afc9ce
Parents: 43ad56b f97a981
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Feb 6 10:20:24 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Feb 6 10:20:24 2014 -0600

----------------------------------------------------------------------
 CHANGES.txt | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


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


[2/7] git commit: Fix upgradesstables NPE for non-CF-based indexes patch by Sergio Bossa; reviewed by jbellis for CASSANDRA-6645

Posted by jb...@apache.org.
Fix upgradesstables NPE for non-CF-based indexes
patch by Sergio Bossa; reviewed by jbellis for CASSANDRA-6645


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

Branch: refs/heads/trunk
Commit: 8b6d87b86b0134221dd15fb74e96a9a8ee5ff1d9
Parents: adcb713
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Feb 6 10:16:41 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Feb 6 10:16:41 2014 -0600

----------------------------------------------------------------------
 CHANGES.txt                                           |  2 ++
 .../db/index/composites/CompositesSearcher.java       |  3 ++-
 .../apache/cassandra/db/index/keys/KeysSearcher.java  |  3 ++-
 .../org/apache/cassandra/service/StorageService.java  | 14 ++++++++++----
 4 files changed, 16 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b6d87b8/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index cfdd148..4be97f1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,8 @@
 1.2.16
+ * Fix upgradesstables NPE for non-CF-based indexes (CASSANDRA-6645)
  * Fix partition and range deletes not triggering flush (CASSANDRA-6655)
 
+
 1.2.15
  * Move handling of migration event source to solve bootstrap race (CASSANDRA-6648)
  * Make sure compaction throughput value doesn't overflow with int math (CASSANDRA-6647)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b6d87b8/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
index 5ab1df6..3974466 100644
--- a/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/composites/CompositesSearcher.java
@@ -65,7 +65,7 @@ public class CompositesSearcher extends SecondaryIndexSearcher
                 continue;
 
             SecondaryIndex index = indexManager.getIndexForColumn(expression.column_name);
-            if (index == null || (expression.op != IndexOperator.EQ))
+            if (index == null || index.getIndexCfs() == null || (expression.op != IndexOperator.EQ))
                 continue;
             int columns = index.getIndexCfs().getMeanColumns();
             candidates.put(index, columns);
@@ -106,6 +106,7 @@ public class CompositesSearcher extends SecondaryIndexSearcher
         final IndexExpression primary = highestSelectivityPredicate(filter.getClause());
         final SecondaryIndex index = indexManager.getIndexForColumn(primary.column_name);
         assert index != null;
+        assert index.getIndexCfs() != null;
         final DecoratedKey indexKey = index.getIndexKeyFor(primary.value);
 
         if (logger.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b6d87b8/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java b/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
index bed6104..7e7595b 100644
--- a/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
+++ b/src/java/org/apache/cassandra/db/index/keys/KeysSearcher.java
@@ -61,7 +61,7 @@ public class KeysSearcher extends SecondaryIndexSearcher
                 continue;
 
             SecondaryIndex index = indexManager.getIndexForColumn(expression.column_name);
-            if (index == null || (expression.op != IndexOperator.EQ))
+            if (index == null || index.getIndexCfs() == null || (expression.op != IndexOperator.EQ))
                 continue;
             int columns = index.getIndexCfs().getMeanColumns();
             candidates.put(index, columns);
@@ -102,6 +102,7 @@ public class KeysSearcher extends SecondaryIndexSearcher
         final IndexExpression primary = highestSelectivityPredicate(filter.getClause());
         final SecondaryIndex index = indexManager.getIndexForColumn(primary.column_name);
         assert index != null;
+        assert index.getIndexCfs() != null;
         final DecoratedKey indexKey = index.getIndexKeyFor(primary.value);
 
         if (logger.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b6d87b8/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index fa43154..94dd73d 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2314,8 +2314,11 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
                 {
                     for (SecondaryIndex si : cfStore.indexManager.getIndexes())
                     {
-                        logger.info("adding secondary index {} to operation", si.getIndexName());
-                        valid.add(si.getIndexCfs());
+                        if (si.getIndexCfs() != null)
+                        {
+                            logger.info("adding secondary index {} to operation", si.getIndexName());
+                            valid.add(si.getIndexCfs());
+                        }
                     }
 
                 }
@@ -2364,8 +2367,11 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
                 {
                     for(SecondaryIndex si : cfStore.indexManager.getIndexes())
                     {
-                        logger.info("adding secondary index {} to operation", si.getIndexName());
-                        valid.add(si.getIndexCfs());
+                        if (si.getIndexCfs() != null)
+                        {
+                            logger.info("adding secondary index {} to operation", si.getIndexName());
+                            valid.add(si.getIndexCfs());
+                        }
                     }
                 }
             }