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 2012/09/05 23:41:16 UTC
[3/3] git commit: add SecondaryIndex.reload API patch by Sam
Tunnicliffe; reviewed by jbellis for CASSANDRA-4581
add SecondaryIndex.reload API
patch by Sam Tunnicliffe; reviewed by jbellis for CASSANDRA-4581
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2cd73633
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2cd73633
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2cd73633
Branch: refs/heads/cassandra-1.1
Commit: 2cd73633bd441697979e9bfe4af0ca20527c6a89
Parents: ec1c64a
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Sep 5 16:08:27 2012 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Sep 5 16:24:24 2012 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/db/index/SecondaryIndex.java | 8 ++++++++
.../cassandra/db/index/SecondaryIndexManager.java | 7 ++++---
.../apache/cassandra/db/index/keys/KeysIndex.java | 6 ++++++
.../cassandra/db/SecondaryIndexColumnSizeTest.java | 13 +++++++++++--
5 files changed, 30 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2cd73633/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 75e856c..04fa0bf 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.1.5
+ * add SecondaryIndex.reload API (CASSANDRA-4581)
* use millis + atomicint for commitlog segment creation instead of
nanotime, which has issues under some hypervisors (CASSANDRA-4601)
* fix FD leak in slice queries (CASSANDRA-4571)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2cd73633/src/java/org/apache/cassandra/db/index/SecondaryIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndex.java b/src/java/org/apache/cassandra/db/index/SecondaryIndex.java
index 3732086..8d734ff 100644
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndex.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndex.java
@@ -66,6 +66,14 @@ public abstract class SecondaryIndex
public abstract void init();
/**
+ * Reload an existing index following a change to its configuration,
+ * or that of the indexed column(s). Differs from init() in that we expect
+ * expect new resources (such as CFS for a KEYS index) to be created by
+ * init() but not here
+ */
+ public abstract void reload() throws IOException;
+
+ /**
* Validates the index_options passed in the ColumnDef
* @throws ConfigurationException
*/
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2cd73633/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
index 7258835..15064c7 100644
--- a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java
@@ -99,10 +99,11 @@ public class SecondaryIndexManager
if (cdef.getIndexType() != null && !indexedColumnNames.contains(cdef.name))
addIndexedColumn(cdef);
- for (ColumnFamilyStore cfs : getIndexesBackedByCfs())
+ Set<SecondaryIndex> reloadedIndexes = Collections.newSetFromMap(new IdentityHashMap<SecondaryIndex, Boolean>());
+ for (SecondaryIndex index : indexesByColumn.values())
{
- cfs.metadata.reloadSecondaryIndexMetadata(baseCfs.metadata);
- cfs.reload();
+ if (reloadedIndexes.add(index))
+ index.reload();
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2cd73633/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java b/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java
index 3ee782b..bbdedce 100644
--- a/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java
+++ b/src/java/org/apache/cassandra/db/index/keys/KeysIndex.java
@@ -181,4 +181,10 @@ public class KeysIndex extends PerColumnSecondaryIndex
{
return indexCfs.getMemtableDataSize();
}
+
+ public void reload() throws IOException
+ {
+ indexCfs.metadata.reloadSecondaryIndexMetadata(baseCfs.metadata);
+ indexCfs.reload();
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2cd73633/test/unit/org/apache/cassandra/db/SecondaryIndexColumnSizeTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/SecondaryIndexColumnSizeTest.java b/test/unit/org/apache/cassandra/db/SecondaryIndexColumnSizeTest.java
index 89479e9..645131b 100644
--- a/test/unit/org/apache/cassandra/db/SecondaryIndexColumnSizeTest.java
+++ b/test/unit/org/apache/cassandra/db/SecondaryIndexColumnSizeTest.java
@@ -137,7 +137,11 @@ public class SecondaryIndexColumnSizeTest
public void deleteFromIndex(DecoratedKey<?> key, List<IColumn> indexedColumnsInRow)
{
}
-
+
+ @Override
+ public void reload()
+ {
+ }
}
@@ -210,6 +214,11 @@ public class SecondaryIndexColumnSizeTest
@Override
public void updateColumn(DecoratedKey valueKey, ByteBuffer rowKey, IColumn col) throws IOException
{
- }
+ }
+
+ @Override
+ public void reload()
+ {
+ }
}
}