Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.0 7497399d0 -> d828643f5


Create backup directories for commitlog archiving during startup

patch by Jan Karlsson, reviewed by jasobrown for CASSANDRA-8111


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

Branch: refs/heads/cassandra-2.0
Commit: d828643f555aac14be59e7f8b35ac67cb06da20b
Parents: 7497399
Author: Jason Brown <jasedbr...@gmail.com>
Authored: Tue Oct 14 06:31:20 2014 -0700
Committer: Jason Brown <jasedbr...@gmail.com>
Committed: Tue Oct 14 06:31:20 2014 -0700

----------------------------------------------------------------------
 CHANGES.txt                                         |  1 +
 .../cassandra/db/commitlog/CommitLogArchiver.java   | 16 ++++++++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/d828643f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 84bbe75..2faea63 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.11:
+ * Create backup directories for commitlog archiving during startup 
(CASSANDRA-8111)
  * Reduce totalBlockFor() for LOCAL_* consistency levels (CASSANDRA-8058)
  * Fix merging schemas with re-dropped keyspaces (CASSANDRA-7256)
  * Fix counters in supercolumns during live upgrades from 1.2 (CASSANDRA-7188)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d828643f/src/java/org/apache/cassandra/db/commitlog/CommitLogArchiver.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogArchiver.java 
b/src/java/org/apache/cassandra/db/commitlog/CommitLogArchiver.java
index f020182..e30443e 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogArchiver.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogArchiver.java
@@ -45,6 +45,7 @@ public class CommitLogArchiver
 {
     private static final Logger logger = 
LoggerFactory.getLogger(CommitLogArchiver.class);
     public static final SimpleDateFormat format = new 
SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
+    private static final String DELIMITER = ",";
     static
     {
         format.setTimeZone(TimeZone.getTimeZone("GMT"));
@@ -81,6 +82,17 @@ public class CommitLogArchiver
                 archiveCommand = 
commitlog_commands.getProperty("archive_command");
                 restoreCommand = 
commitlog_commands.getProperty("restore_command");
                 restoreDirectories = 
commitlog_commands.getProperty("restore_directories");
+                for (String dir : restoreDirectories.split(DELIMITER))
+                {
+                    File directory = new File(dir);
+                    if (!directory.exists())
+                    {
+                        if (!directory.mkdir())
+                        {
+                            throw new RuntimeException("Unable to create 
directory " + dir);
+                        }
+                    }
+                }
                 String targetTime = 
commitlog_commands.getProperty("restore_point_in_time");
                 precision = 
TimeUnit.valueOf(commitlog_commands.getProperty("precision", "MICROSECONDS"));
                 try
@@ -151,12 +163,12 @@ public class CommitLogArchiver
         if (Strings.isNullOrEmpty(restoreDirectories))
             return;
 
-        for (String dir : restoreDirectories.split(","))
+        for (String dir : restoreDirectories.split(DELIMITER))
         {
             File[] files = new File(dir).listFiles();
             if (files == null)
             {
-                throw new RuntimeException("Unable to list director " + dir);
+                throw new RuntimeException("Unable to list directory " + dir);
             }
             for (File fromFile : files)
             {

Reply via email to