Repository: cassandra
Updated Branches:
  refs/heads/trunk 6ef817a51 -> c20f6b374


Followup to CASSANDRA-8671 - additional data directories

Patch by Blake Eggleston; reviewed by marcuse for CASSANDRA-10518


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

Branch: refs/heads/trunk
Commit: e1fb18a00b598431f52b88d12e2eddbe07233e88
Parents: f3143e6
Author: Blake Eggleston <bdeggles...@gmail.com>
Authored: Thu Oct 15 14:14:37 2015 +0200
Committer: Marcus Eriksson <marc...@apache.org>
Committed: Fri Oct 16 12:30:59 2015 +0200

----------------------------------------------------------------------
 src/java/org/apache/cassandra/db/ColumnFamilyStore.java | 12 ++++++++----
 .../db/compaction/AbstractCompactionStrategy.java       |  6 +++++-
 2 files changed, 13 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e1fb18a0/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 062eb0a..4c9fc55 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -84,12 +84,17 @@ import static 
org.apache.cassandra.utils.Throwables.maybeFail;
 
 public class ColumnFamilyStore implements ColumnFamilyStoreMBean
 {
-    // the directories used to load sstables on cfs instantiation
+    // The directories which will be searched for sstables on cfs 
instantiation.
     private static volatile Directories.DataDirectory[] initialDirectories = 
Directories.dataDirectories;
 
     /**
-     * a hook to add additional directories to initialDirectories.
+     * A hook to add additional directories to initialDirectories.
      * Any additional directories should be added prior to ColumnFamilyStore 
instantiation on startup
+     *
+     * Since the directories used by a given table are determined by the 
compaction strategy,
+     * it's possible for sstables to be written to directories specified 
outside of cassandra.yaml.
+     * By adding additional directories to initialDirectories, sstables in 
these extra locations are
+     * made discoverable on sstable instantiation.
      */
     public static synchronized void 
addInitialDirectories(Directories.DataDirectory[] newDirectories)
     {
@@ -363,7 +368,6 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
 
         this.keyspace = keyspace;
         this.metadata = metadata;
-        this.directories = directories;
         name = columnFamilyName;
         minCompactionThreshold = new 
DefaultValue<>(metadata.params.compaction.minCompactionThreshold());
         maxCompactionThreshold = new 
DefaultValue<>(metadata.params.compaction.maxCompactionThreshold());
@@ -388,7 +392,7 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
 
         // compaction strategy should be created after the CFS has been 
prepared
         compactionStrategyManager = new CompactionStrategyManager(this);
-        this.directories = this.compactionStrategyManager.getDirectories();
+        this.directories = compactionStrategyManager.getDirectories();
 
         if (maxCompactionThreshold.value() <= 0 || 
minCompactionThreshold.value() <=0)
         {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e1fb18a0/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java 
b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
index 721fd70..ae8839e 100644
--- 
a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
+++ 
b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
@@ -78,6 +78,8 @@ public abstract class AbstractCompactionStrategy
     protected boolean uncheckedTombstoneCompaction;
     protected boolean disableTombstoneCompactions = false;
 
+    private final Directories directories;
+
     /**
      * pause/resume/getNextBackgroundTask must synchronize.  This guarantees 
that after pause completes,
      * no new tasks will be generated; or put another way, pause can't run 
until in-progress tasks are
@@ -117,11 +119,13 @@ public abstract class AbstractCompactionStrategy
             tombstoneCompactionInterval = 
DEFAULT_TOMBSTONE_COMPACTION_INTERVAL;
             uncheckedTombstoneCompaction = 
DEFAULT_UNCHECKED_TOMBSTONE_COMPACTION_OPTION;
         }
+
+        directories = new Directories(cfs.metadata, 
Directories.dataDirectories);
     }
 
     public Directories getDirectories()
     {
-        return cfs.getDirectories();
+        return directories;
     }
 
     /**

Reply via email to