You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2017/12/15 12:49:28 UTC
cassandra git commit: Remove initialDirectories from CFS
Repository: cassandra
Updated Branches:
refs/heads/trunk 92d4f7b48 -> 8b9b72deb
Remove initialDirectories from CFS
Patch by marcuse; reviewed by Paulo Motta for CASSANDRA-13928
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8b9b72de
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8b9b72de
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8b9b72de
Branch: refs/heads/trunk
Commit: 8b9b72deb4bf5f1c13c7f55bd11102c147160eab
Parents: 92d4f7b
Author: Marcus Eriksson <ma...@apache.org>
Authored: Mon Oct 9 13:51:34 2017 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Fri Dec 15 13:48:20 2017 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/db/ColumnFamilyStore.java | 59 ++------------------
src/java/org/apache/cassandra/db/Keyspace.java | 2 +-
.../compaction/CompactionStrategyManager.java | 15 -----
.../cassandra/db/lifecycle/LogTransaction.java | 2 +-
.../cassandra/tools/StandaloneSSTableUtil.java | 2 +-
6 files changed, 8 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b9b72de/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9217382..6834bfd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
4.0
+ * Remove initialDirectories from CFS (CASSANDRA-13928)
* Fix trivial log format error (CASSANDRA-14015)
* Allow sstabledump to do a json object per partition (CASSANDRA-13848)
* Add option to optimise merkle tree comparison across replicas (CASSANDRA-3200)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b9b72de/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 1f7ba87..c12b474 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -90,44 +90,6 @@ import static org.apache.cassandra.utils.Throwables.maybeFail;
public class ColumnFamilyStore implements ColumnFamilyStoreMBean
{
- // 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.
- * 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)
- {
- assert newDirectories != null;
-
- Set<Directories.DataDirectory> existing = Sets.newHashSet(initialDirectories);
-
- List<Directories.DataDirectory> replacementList = Lists.newArrayList(initialDirectories);
- for (Directories.DataDirectory directory: newDirectories)
- {
- if (!existing.contains(directory))
- {
- replacementList.add(directory);
- }
- }
-
- Directories.DataDirectory[] replacementArray = new Directories.DataDirectory[replacementList.size()];
- replacementList.toArray(replacementArray);
- initialDirectories = replacementArray;
- }
-
- public static Directories.DataDirectory[] getInitialDirectories()
- {
- Directories.DataDirectory[] src = initialDirectories;
- return Arrays.copyOf(src, src.length);
- }
-
private static final Logger logger = LoggerFactory.getLogger(ColumnFamilyStore.class);
/*
@@ -245,7 +207,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
private final CompactionStrategyManager compactionStrategyManager;
- private volatile Directories directories;
+ private final Directories directories;
public final TableMetrics metric;
public volatile long sampleLatencyNanos;
@@ -278,7 +240,6 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
cfs.crcCheckChance = new DefaultValue(metadata().params.crcCheckChance);
compactionStrategyManager.maybeReload(metadata());
- directories = compactionStrategyManager.getDirectories();
scheduleFlush();
@@ -412,6 +373,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
this.keyspace = keyspace;
this.metadata = metadata;
+ this.directories = directories;
name = columnFamilyName;
minCompactionThreshold = new DefaultValue<>(metadata.get().params.compaction.minCompactionThreshold());
maxCompactionThreshold = new DefaultValue<>(metadata.get().params.compaction.maxCompactionThreshold());
@@ -437,22 +399,9 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
data.addInitialSSTables(sstables);
}
- /**
- * When creating a CFS offline we change the default logic needed by CASSANDRA-8671
- * and link the passed directories to be picked up by the compaction strategy
- */
- if (offline)
- this.directories = directories;
- else
- this.directories = new Directories(metadata.get(), Directories.dataDirectories);
-
-
// compaction strategy should be created after the CFS has been prepared
compactionStrategyManager = new CompactionStrategyManager(this);
- // Since compaction can re-define data dir we need to reinit directories
- this.directories = compactionStrategyManager.getDirectories();
-
if (maxCompactionThreshold.value() <= 0 || minCompactionThreshold.value() <=0)
{
logger.warn("Disabling compaction strategy by setting compaction thresholds to 0 is deprecated, set the compaction option 'enabled' to 'false' instead.");
@@ -612,7 +561,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
TableMetadataRef metadata,
boolean loadSSTables)
{
- Directories directories = new Directories(metadata.get(), initialDirectories);
+ Directories directories = new Directories(metadata.get());
return createColumnFamilyStore(keyspace, columnFamily, metadata, directories, loadSSTables, true, false);
}
@@ -648,7 +597,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
*/
public static void scrubDataDirectories(TableMetadata metadata) throws StartupException
{
- Directories directories = new Directories(metadata, initialDirectories);
+ Directories directories = new Directories(metadata);
Set<File> cleanedDirectories = new HashSet<>();
// clear ephemeral snapshots that were not properly cleared last session (CASSANDRA-7357)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b9b72de/src/java/org/apache/cassandra/db/Keyspace.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Keyspace.java b/src/java/org/apache/cassandra/db/Keyspace.java
index c3e649a..df1ba39 100644
--- a/src/java/org/apache/cassandra/db/Keyspace.java
+++ b/src/java/org/apache/cassandra/db/Keyspace.java
@@ -304,7 +304,7 @@ public class Keyspace
*/
public static void clearSnapshot(String snapshotName, String keyspace)
{
- List<File> snapshotDirs = Directories.getKSChildDirectories(keyspace, ColumnFamilyStore.getInitialDirectories());
+ List<File> snapshotDirs = Directories.getKSChildDirectories(keyspace);
Directories.clearSnapshot(snapshotName, snapshotDirs);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b9b72de/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
index 8a01ba9..d520d8f 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
@@ -560,21 +560,6 @@ public class CompactionStrategyManager implements INotificationConsumer
return shouldDefragment;
}
- public Directories getDirectories()
- {
- maybeReloadDiskBoundaries();
- readLock.lock();
- try
- {
- assert repaired.get(0).getClass().equals(unrepaired.get(0).getClass());
- return repaired.get(0).getDirectories();
- }
- finally
- {
- readLock.unlock();
- }
- }
-
private void handleFlushNotification(Iterable<SSTableReader> added)
{
// If reloaded, SSTables will be placed in their correct locations
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b9b72de/src/java/org/apache/cassandra/db/lifecycle/LogTransaction.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/lifecycle/LogTransaction.java b/src/java/org/apache/cassandra/db/lifecycle/LogTransaction.java
index d92cfc7..d38c324 100644
--- a/src/java/org/apache/cassandra/db/lifecycle/LogTransaction.java
+++ b/src/java/org/apache/cassandra/db/lifecycle/LogTransaction.java
@@ -428,7 +428,7 @@ class LogTransaction extends Transactional.AbstractTransactional implements Tran
*/
static boolean removeUnfinishedLeftovers(TableMetadata metadata)
{
- return removeUnfinishedLeftovers(new Directories(metadata, ColumnFamilyStore.getInitialDirectories()).getCFDirectories());
+ return removeUnfinishedLeftovers(new Directories(metadata).getCFDirectories());
}
@VisibleForTesting
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8b9b72de/src/java/org/apache/cassandra/tools/StandaloneSSTableUtil.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/StandaloneSSTableUtil.java b/src/java/org/apache/cassandra/tools/StandaloneSSTableUtil.java
index 3a6be63..9a7847a 100644
--- a/src/java/org/apache/cassandra/tools/StandaloneSSTableUtil.java
+++ b/src/java/org/apache/cassandra/tools/StandaloneSSTableUtil.java
@@ -84,7 +84,7 @@ public class StandaloneSSTableUtil
private static void listFiles(Options options, TableMetadata metadata, OutputHandler handler) throws IOException
{
- Directories directories = new Directories(metadata, ColumnFamilyStore.getInitialDirectories());
+ Directories directories = new Directories(metadata);
for (File dir : directories.getCFDirectories())
{
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org