Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2546A1814F for ; Fri, 4 Dec 2015 13:29:07 +0000 (UTC) Received: (qmail 15051 invoked by uid 500); 4 Dec 2015 13:28:54 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 15017 invoked by uid 500); 4 Dec 2015 13:28:54 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 15006 invoked by uid 99); 4 Dec 2015 13:28:54 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Dec 2015 13:28:54 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id A7E2EE0C69; Fri, 4 Dec 2015 13:28:53 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: marcuse@apache.org To: commits@cassandra.apache.org Message-Id: <22bfe213de8845e3986b8e195c2e934e@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: cassandra git commit: Fix issue with data dir migration on upgrade Date: Fri, 4 Dec 2015 13:28:53 +0000 (UTC) Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 1e978df3a -> d0da9e761 Fix issue with data dir migration on upgrade Patch by Stefania; reviewed by marcuse for CASSANDRA-10788 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d0da9e76 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d0da9e76 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d0da9e76 Branch: refs/heads/cassandra-3.0 Commit: d0da9e7612e6fb94fea8298a88215783a8125311 Parents: 1e978df Author: Stefania Alborghetti Authored: Wed Dec 2 09:45:34 2015 +0800 Committer: Marcus Eriksson Committed: Fri Dec 4 14:22:26 2015 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../org/apache/cassandra/db/SystemKeyspace.java | 10 +++++--- .../apache/cassandra/db/SystemKeyspaceTest.java | 27 ++++++++++++++++++-- 3 files changed, 33 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/d0da9e76/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 2527c43..520afff 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.1 + * Fix issue with datadir migration on upgrade (CASSANDRA-10788) * Fix bug with range tombstones on reverse queries and test coverage for AbstractBTreePartition (CASSANDRA-10059) * Remove 64k limit on collection elements (CASSANDRA-10374) http://git-wip-us.apache.org/repos/asf/cassandra/blob/d0da9e76/src/java/org/apache/cassandra/db/SystemKeyspace.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/SystemKeyspace.java b/src/java/org/apache/cassandra/db/SystemKeyspace.java index 83c8c1c..8a27c9d 100644 --- a/src/java/org/apache/cassandra/db/SystemKeyspace.java +++ b/src/java/org/apache/cassandra/db/SystemKeyspace.java @@ -1324,14 +1324,18 @@ public final class SystemKeyspace Iterable dirs = Arrays.asList(DatabaseDescriptor.getAllDataFileLocations()); for (String dataDir : dirs) { - logger.trace("Checking directory {} for old files", dataDir); + logger.trace("Checking {} for old files", dataDir); File dir = new File(dataDir); assert dir.exists() : dir + " should have been created by startup checks"; - for (File ksdir : dir.listFiles((d, n) -> d.isDirectory())) + for (File ksdir : dir.listFiles((d, n) -> new File(d, n).isDirectory())) { - for (File cfdir : ksdir.listFiles((d, n) -> d.isDirectory())) + logger.trace("Checking {} for old files", ksdir); + + for (File cfdir : ksdir.listFiles((d, n) -> new File(d, n).isDirectory())) { + logger.trace("Checking {} for old files", cfdir); + if (Descriptor.isLegacyFile(cfdir)) { FileUtils.deleteRecursive(cfdir); http://git-wip-us.apache.org/repos/asf/cassandra/blob/d0da9e76/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java b/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java index 9fc3503..d770610 100644 --- a/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java +++ b/test/unit/org/apache/cassandra/db/SystemKeyspaceTest.java @@ -153,6 +153,29 @@ public class SystemKeyspaceTest } @Test + public void testMigrateEmptyDataDirs() throws IOException + { + File dataDir = Paths.get(DatabaseDescriptor.getAllDataFileLocations()[0]).toFile(); + if (new File(dataDir, "Emptykeyspace1").exists()) + FileUtils.deleteDirectory(new File(dataDir, "Emptykeyspace1")); + assertTrue(new File(dataDir, "Emptykeyspace1").mkdirs()); + assertEquals(0, numLegacyFiles()); + SystemKeyspace.migrateDataDirs(); + assertEquals(0, numLegacyFiles()); + + assertTrue(new File(dataDir, "Emptykeyspace1/table1").mkdirs()); + assertEquals(0, numLegacyFiles()); + SystemKeyspace.migrateDataDirs(); + assertEquals(0, numLegacyFiles()); + + assertTrue(new File(dataDir, "Emptykeyspace1/wrong_file").createNewFile()); + assertEquals(0, numLegacyFiles()); + SystemKeyspace.migrateDataDirs(); + assertEquals(0, numLegacyFiles()); + + } + + @Test public void testMigrateDataDirs_2_1() throws IOException { testMigrateDataDirs("2.1"); @@ -185,9 +208,9 @@ public class SystemKeyspaceTest for (String dataDir : dirs) { File dir = new File(dataDir); - for (File ksdir : dir.listFiles((d, n) -> d.isDirectory())) + for (File ksdir : dir.listFiles((d, n) -> new File(d, n).isDirectory())) { - for (File cfdir : ksdir.listFiles((d, n) -> d.isDirectory())) + for (File cfdir : ksdir.listFiles((d, n) -> new File(d, n).isDirectory())) { if (Descriptor.isLegacyFile(cfdir)) {