You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jm...@apache.org on 2013/02/13 19:12:23 UTC

svn commit: r1445788 - in /hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase: master/HMaster.java master/snapshot/manage/SnapshotManager.java snapshot/SnapshotDescriptionUtils.java

Author: jmhsieh
Date: Wed Feb 13 18:12:23 2013
New Revision: 1445788

URL: http://svn.apache.org/r1445788
Log:
HBASE-7240 Cleanup old snapshots on start (Jesse Yates)


Modified:
    hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
    hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/manage/SnapshotManager.java
    hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java

Modified: hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1445788&r1=1445787&r2=1445788&view=diff
==============================================================================
--- hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Wed Feb 13 18:12:23 2013
@@ -595,6 +595,7 @@ Server {
     // create the snapshot monitor
     // TODO should this be config based?
     this.snapshotManager = new SnapshotManager(this, zooKeeper, this.executorService);
+    snapshotManager.start();
   }
 
   /**

Modified: hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/manage/SnapshotManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/manage/SnapshotManager.java?rev=1445788&r1=1445787&r2=1445788&view=diff
==============================================================================
--- hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/manage/SnapshotManager.java (original)
+++ hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/manage/SnapshotManager.java Wed Feb 13 18:12:23 2013
@@ -81,6 +81,23 @@ public class SnapshotManager implements 
   }
 
   /**
+   * Start running the manager.
+   * <p>
+   * <ol>
+   * <li>Cleans up any snapshots in the snapshot/.tmp directory that were left from failed
+   * snapshot/export attempts</li>
+   * </ol>
+   * @throws IOException if we can't reach the filesystem
+   */
+  public void start() throws IOException {
+    // cleanup any existing snapshots.
+    Path tmpdir = SnapshotDescriptionUtils.getWorkingSnapshotDir(rootDir);
+    if (master.getMasterFileSystem().getFileSystem().delete(tmpdir, true)) {
+      LOG.warn("Couldn't delete working snapshot directory: " + tmpdir);
+    }
+  }
+
+  /**
    * @return <tt>true</tt> if there is a snapshot currently being taken, <tt>false</tt> otherwise
    */
   public boolean isTakingSnapshot() {

Modified: hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java?rev=1445788&r1=1445787&r2=1445788&view=diff
==============================================================================
--- hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java (original)
+++ hbase/branches/hbase-7290/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java Wed Feb 13 18:12:23 2013
@@ -233,14 +233,23 @@ public class SnapshotDescriptionUtils {
   }
 
   /**
+   * Get the general working directory for snapshots - where they are built, where they are
+   * temporarily copied on export, etc.
+   * @param rootDir root directory of the HBase installation
+   * @return Path to the snapshot tmp directory, relative to the passed root directory
+   */
+  public static Path getWorkingSnapshotDir(final Path rootDir) {
+    return new Path(getSnapshotsDir(rootDir), SNAPSHOT_TMP_DIR_NAME);
+  }
+
+  /**
    * Get the directory to build a snapshot, before it is finalized
    * @param snapshot snapshot that will be built
    * @param rootDir root directory of the hbase installation
    * @return {@link Path} where one can build a snapshot
    */
   public static Path getWorkingSnapshotDir(SnapshotDescription snapshot, final Path rootDir) {
-    return getCompletedSnapshotDir(new Path(getSnapshotsDir(rootDir), SNAPSHOT_TMP_DIR_NAME),
-      snapshot.getName());
+    return getCompletedSnapshotDir(getWorkingSnapshotDir(rootDir), snapshot.getName());
   }
 
   /**
@@ -250,8 +259,7 @@ public class SnapshotDescriptionUtils {
    * @return {@link Path} where one can build a snapshot
    */
   public static Path getWorkingSnapshotDir(String snapshotName, final Path rootDir) {
-    return getCompletedSnapshotDir(new Path(getSnapshotsDir(rootDir), SNAPSHOT_TMP_DIR_NAME),
-      snapshotName);
+    return getCompletedSnapshotDir(getWorkingSnapshotDir(rootDir), snapshotName);
   }
 
   /**