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 <[email protected]> Authored: Mon Oct 9 13:51:34 2017 +0200 Committer: Marcus Eriksson <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
