You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2013/06/08 02:29:31 UTC

svn commit: r1490886 - in /hbase/trunk/hbase-server/src: main/java/org/apache/hadoop/hbase/backup/example/ main/java/org/apache/hadoop/hbase/master/cleaner/ main/java/org/apache/hadoop/hbase/master/snapshot/ main/java/org/apache/hadoop/hbase/replicatio...

Author: tedyu
Date: Sat Jun  8 00:29:31 2013
New Revision: 1490886

URL: http://svn.apache.org/r1490886
Log:
HBASE-8690 Reduce unnecessary getFileStatus hdfs calls in TTL hfile and hlog cleanners (Shaohui)


Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/example/LongTermArchivingHFileCleaner.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/BaseLogCleanerDelegate.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/CleanerChore.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/FileCleanerDelegate.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/HFileLinkCleaner.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotHFileCleaner.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotLogCleaner.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/master/ReplicationLogCleaner.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/example/TestZooKeeperTableArchiveClient.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotHFileCleaner.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotLogCleaner.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/example/LongTermArchivingHFileCleaner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/example/LongTermArchivingHFileCleaner.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/example/LongTermArchivingHFileCleaner.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/example/LongTermArchivingHFileCleaner.java Sat Jun  8 00:29:31 2013
@@ -48,11 +48,12 @@ public class LongTermArchivingHFileClean
   private FileSystem fs;
 
   @Override
-  public boolean isFileDeletable(Path file) {
+  public boolean isFileDeletable(FileStatus fStat) {
     try {
       // if its a directory, then it can be deleted
-      if (!fs.isFile(file)) return true;
-
+      if (fStat.isDir()) return true;
+      
+      Path file = fStat.getPath();
       // check to see if
       FileStatus[] deleteStatus = FSUtils.listStatus(this.fs, file, null);
       // if the file doesn't exist, then it can be deleted (but should never
@@ -69,7 +70,7 @@ public class LongTermArchivingHFileClean
       LOG.debug("Archiver says to [" + (ret ? "delete" : "keep") + "] files for table:" + tableName);
       return ret;
     } catch (IOException e) {
-      LOG.error("Failed to lookup status of:" + file + ", keeping it just incase.", e);
+      LOG.error("Failed to lookup status of:" + fStat.getPath() + ", keeping it just incase.", e);
       return false;
     }
   }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/BaseLogCleanerDelegate.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/BaseLogCleanerDelegate.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/BaseLogCleanerDelegate.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/BaseLogCleanerDelegate.java Sat Jun  8 00:29:31 2013
@@ -18,6 +18,7 @@
 package org.apache.hadoop.hbase.master.cleaner;
 
 import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.BaseConfigurable;
 
@@ -40,19 +41,19 @@ import org.apache.hadoop.hbase.BaseConfi
 public abstract class BaseLogCleanerDelegate extends BaseConfigurable implements FileCleanerDelegate {
 
   @Override
-  public boolean isFileDeletable(Path file) {
-    return isLogDeletable(file);
+  public boolean isFileDeletable(FileStatus fStat) {
+    return isLogDeletable(fStat);
   }
 
   /**
    * Should the master delete the log or keep it?
    * <p>
-   * Implementing classes should override {@link #isFileDeletable(Path)} instead.
-   * @param filePath full path to log.
+   * Implementing classes should override {@link #isFileDeletable(FileStatus)} instead.
+   * @param fStat file status of the file
    * @return true if the log is deletable, false (default) if not
    */
   @Deprecated
-  public boolean isLogDeletable(Path filePath) {
+  public boolean isLogDeletable(FileStatus fStat) {
     return false;
   }
 }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/CleanerChore.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/CleanerChore.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/CleanerChore.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/CleanerChore.java Sat Jun  8 00:29:31 2013
@@ -122,7 +122,7 @@ public abstract class CleanerChore<T ext
       for (FileStatus file : files) {
         try {
           if (file.isDir()) checkAndDeleteDirectory(file.getPath());
-          else checkAndDelete(file.getPath());
+          else checkAndDelete(file);
         } catch (IOException e) {
           e = RemoteExceptionHandler.checkIOException(e);
           LOG.warn("Error while cleaning the logs", e);
@@ -173,7 +173,7 @@ public abstract class CleanerChore<T ext
         }
       }
       // otherwise we can just check the file
-      else if (!checkAndDelete(path)) {
+      else if (!checkAndDelete(child)) {
         canDeleteThis = false;
       }
     }
@@ -199,11 +199,12 @@ public abstract class CleanerChore<T ext
   /**
    * Run the given file through each of the cleaners to see if it should be deleted, deleting it if
    * necessary.
-   * @param filePath path of the file to check (and possibly delete)
+   * @param fStat path of the file to check (and possibly delete)
    * @throws IOException if cann't delete a file because of a filesystem issue
    * @throws IllegalArgumentException if the file is a directory and has children
    */
-  private boolean checkAndDelete(Path filePath) throws IOException, IllegalArgumentException {
+  private boolean checkAndDelete(FileStatus fStat) throws IOException, IllegalArgumentException {
+    Path filePath = fStat.getPath();
     // first check to see if the path is valid
     if (!validate(filePath)) {
       LOG.warn("Found a wrongly formatted file: " + filePath.getName() + " deleting it.");
@@ -223,7 +224,7 @@ public abstract class CleanerChore<T ext
         return false;
       }
 
-      if (!cleaner.isFileDeletable(filePath)) {
+      if (!cleaner.isFileDeletable(fStat)) {
         // this file is not deletable, then we are done
         if (LOG.isTraceEnabled()) {
           LOG.trace(filePath + " is not deletable according to:" + cleaner);

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/FileCleanerDelegate.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/FileCleanerDelegate.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/FileCleanerDelegate.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/FileCleanerDelegate.java Sat Jun  8 00:29:31 2013
@@ -19,7 +19,7 @@ package org.apache.hadoop.hbase.master.c
 
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.conf.Configurable;
-import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.hbase.Stoppable;
 
 /**
@@ -32,9 +32,8 @@ public interface FileCleanerDelegate ext
 
   /**
    * Should the master delete the file or keep it?
-   * @param file full path to the file to check
+   * @param fStat file status of the file to check
    * @return <tt>true</tt> if the file is deletable, <tt>false</tt> if not
    */
-  public boolean isFileDeletable(Path file);
-
+  public boolean isFileDeletable(FileStatus fStat);
 }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/HFileLinkCleaner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/HFileLinkCleaner.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/HFileLinkCleaner.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/HFileLinkCleaner.java Sat Jun  8 00:29:31 2013
@@ -25,6 +25,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 
@@ -48,9 +49,9 @@ public class HFileLinkCleaner extends Ba
   private FileSystem fs = null;
 
   @Override
-  public synchronized boolean isFileDeletable(Path filePath) {
+  public synchronized boolean isFileDeletable(FileStatus fStat) {
     if (this.fs == null) return false;
-
+    Path filePath = fStat.getPath();
     // HFile Link is always deletable
     if (HFileLink.isHFileLink(filePath)) return true;
 

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveHFileCleaner.java Sat Jun  8 00:29:31 2013
@@ -17,15 +17,11 @@
  */
 package org.apache.hadoop.hbase.master.cleaner;
 
-import java.io.IOException;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 
 /**
@@ -41,7 +37,6 @@ public class TimeToLiveHFileCleaner exte
   public static final long DEFAULT_TTL = 60000 * 5;
   // Configured time a hfile can be kept after it was moved to the archive
   private long ttl;
-  private FileSystem fs;
 
   @Override
   public void setConf(Configuration conf) {
@@ -50,45 +45,19 @@ public class TimeToLiveHFileCleaner exte
   }
 
   @Override
-  public boolean isFileDeletable(Path filePath) {
-    if (!instantiateFS()) {
-      return false;
-    }
-    long time = 0;
+  public boolean isFileDeletable(FileStatus fStat) {
     long currentTime = EnvironmentEdgeManager.currentTimeMillis();
-    try {
-      FileStatus fStat = fs.getFileStatus(filePath);
-      time = fStat.getModificationTime();
-    } catch (IOException e) {
-      LOG.error("Unable to get modification time of file " + filePath.getName()
-          + ", not deleting it.", e);
-      return false;
-    }
+    long time = fStat.getModificationTime();
     long life = currentTime - time;
     if (LOG.isTraceEnabled()) {
       LOG.trace("HFile life:" + life + ", ttl:" + ttl + ", current:" + currentTime + ", from: "
           + time);
     }
     if (life < 0) {
-      LOG.warn("Found a log (" + filePath + ") newer than current time (" + currentTime + " < "
-          + time + "), probably a clock skew");
+      LOG.warn("Found a hfile (" + fStat.getPath() + ") newer than current time (" + currentTime
+          + " < " + time + "), probably a clock skew");
       return false;
     }
     return life > ttl;
   }
-
-  /**
-   * setup the filesystem, if it hasn't been already
-   */
-  private synchronized boolean instantiateFS() {
-    if (this.fs == null) {
-      try {
-        this.fs = FileSystem.get(this.getConf());
-      } catch (IOException e) {
-        LOG.error("Couldn't instantiate the file system, not deleting file, just incase");
-        return false;
-      }
-    }
-    return true;
-  }
 }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/cleaner/TimeToLiveLogCleaner.java Sat Jun  8 00:29:31 2013
@@ -17,14 +17,12 @@
  */
 package org.apache.hadoop.hbase.master.cleaner;
 
-import java.io.IOException;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.conf.Configuration;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 
 /**
  * Log cleaner that uses the timestamp of the hlog to determine if it should
@@ -38,21 +36,18 @@ public class TimeToLiveLogCleaner extend
   private boolean stopped = false;
 
   @Override
-  public boolean isLogDeletable(Path filePath) {
-    long time = 0;
-    long currentTime = System.currentTimeMillis();
-    try {
-      FileStatus fStat = filePath.getFileSystem(this.getConf()).getFileStatus(filePath);
-      time = fStat.getModificationTime();
-    } catch (IOException e) {
-      LOG.error("Unable to get modification time of file " + filePath.getName() +
-      ", not deleting it.", e);
-      return false;
-    }
+  public boolean isLogDeletable(FileStatus fStat) {
+    long currentTime = EnvironmentEdgeManager.currentTimeMillis();
+    long time = fStat.getModificationTime();
     long life = currentTime - time;
+    
+    if (LOG.isTraceEnabled()) {
+      LOG.trace("Log life:" + life + ", ttl:" + ttl + ", current:" + currentTime + ", from: "
+          + time);
+    }
     if (life < 0) {
-      LOG.warn("Found a log newer than current time, " +
-          "probably a clock skew");
+      LOG.warn("Found a log (" + fStat.getPath() + ") newer than current time (" + currentTime
+          + " < " + time + "), probably a clock skew");
       return false;
     }
     return life > ttl;

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotHFileCleaner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotHFileCleaner.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotHFileCleaner.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotHFileCleaner.java Sat Jun  8 00:29:31 2013
@@ -25,6 +25,7 @@ import org.apache.commons.logging.LogFac
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.master.cleaner.BaseHFileCleanerDelegate;
@@ -54,12 +55,12 @@ public class SnapshotHFileCleaner extend
   private SnapshotFileCache cache;
 
   @Override
-  public synchronized boolean isFileDeletable(Path filePath) {
+  public synchronized boolean isFileDeletable(FileStatus fStat) {
     try {
-      return !cache.contains(filePath.getName());
+      return !cache.contains(fStat.getPath().getName());
     } catch (IOException e) {
-      LOG.error("Exception while checking if:" + filePath + " was valid, keeping it just in case.",
-        e);
+      LOG.error("Exception while checking if:" + fStat.getPath()
+          + " was valid, keeping it just in case.", e);
       return false;
     }
   }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotLogCleaner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotLogCleaner.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotLogCleaner.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotLogCleaner.java Sat Jun  8 00:29:31 2013
@@ -25,6 +25,7 @@ import org.apache.commons.logging.LogFac
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.master.cleaner.BaseLogCleanerDelegate;
@@ -53,13 +54,13 @@ public class SnapshotLogCleaner extends 
   private SnapshotFileCache cache;
 
   @Override
-  public synchronized boolean isFileDeletable(Path filePath) {
+  public synchronized boolean isFileDeletable(FileStatus fStat) {
     try {
       if (null == cache) return false;
-      return !cache.contains(filePath.getName());
+      return !cache.contains(fStat.getPath().getName());
     } catch (IOException e) {
-      LOG.error("Exception while checking if:" + filePath + " was valid, keeping it just in case.",
-        e);
+      LOG.error("Exception while checking if:" + fStat.getPath()
+          + " was valid, keeping it just in case.", e);
       return false;
     }
   }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/master/ReplicationLogCleaner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/master/ReplicationLogCleaner.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/master/ReplicationLogCleaner.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/master/ReplicationLogCleaner.java Sat Jun  8 00:29:31 2013
@@ -22,6 +22,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.Abortable;
 import org.apache.hadoop.hbase.HConstants;
@@ -55,7 +56,7 @@ public class ReplicationLogCleaner exten
 
 
   @Override
-  public boolean isLogDeletable(Path filePath) {
+  public boolean isLogDeletable(FileStatus fStat) {
 
     try {
       if (!replicationState.getState()) {
@@ -71,7 +72,7 @@ public class ReplicationLogCleaner exten
     if (this.getConf() == null) {
       return true;
     }
-    String log = filePath.getName();
+    String log = fStat.getPath().getName();
     // If we saw the hlog previously, let's consider it's still used
     // At some point in the future we will refresh the list and it will be gone
     if (this.hlogs.contains(log)) {

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/example/TestZooKeeperTableArchiveClient.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/example/TestZooKeeperTableArchiveClient.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/example/TestZooKeeperTableArchiveClient.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/backup/example/TestZooKeeperTableArchiveClient.java Sat Jun  8 00:29:31 2013
@@ -343,7 +343,7 @@ public class TestZooKeeperTableArchiveCl
         if (counter[0] >= expected) finished.countDown();
         return ret;
       }
-    }).when(delegateSpy).isFileDeletable(Mockito.any(Path.class));
+    }).when(delegateSpy).isFileDeletable(Mockito.any(FileStatus.class));
     cleaners.set(0, delegateSpy);
 
     return finished;

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.java Sat Jun  8 00:29:31 2013
@@ -25,6 +25,7 @@ import java.io.IOException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
@@ -139,13 +140,15 @@ public class TestCleanerChore {
     Path parent = new Path(testDir, "parent");
     Path file = new Path(parent, "someFile");
     fs.mkdirs(parent);
+    assertTrue("Test parent didn't get created.", fs.exists(parent));
     // touch a new file
     fs.create(file).close();
     assertTrue("Test file didn't get created.", fs.exists(file));
-
+    
+    FileStatus fStat = fs.getFileStatus(parent);
     chore.chore();
     // make sure we never checked the directory
-    Mockito.verify(spy, Mockito.never()).isFileDeletable(parent);
+    Mockito.verify(spy, Mockito.never()).isFileDeletable(fStat);
     Mockito.reset(spy);
   }
 
@@ -212,7 +215,7 @@ public class TestCleanerChore {
         FSUtils.logFileSystemState(fs, testDir, LOG);
         return (Boolean) invocation.callRealMethod();
       }
-    }).when(spy).isFileDeletable(Mockito.any(Path.class));
+    }).when(spy).isFileDeletable(Mockito.any(FileStatus.class));
 
     // run the chore
     chore.chore();
@@ -221,7 +224,7 @@ public class TestCleanerChore {
     assertTrue("Added file unexpectedly deleted", fs.exists(addedFile));
     assertTrue("Parent directory deleted unexpectedly", fs.exists(parent));
     assertFalse("Original file unexpectedly retained", fs.exists(file));
-    Mockito.verify(spy, Mockito.times(1)).isFileDeletable(Mockito.any(Path.class));
+    Mockito.verify(spy, Mockito.times(1)).isFileDeletable(Mockito.any(FileStatus.class));
     Mockito.reset(spy);
   }
 
@@ -270,7 +273,7 @@ public class TestCleanerChore {
         FSUtils.logFileSystemState(fs, testDir, LOG);
         return (Boolean) invocation.callRealMethod();
       }
-    }).when(spy).isFileDeletable(Mockito.any(Path.class));
+    }).when(spy).isFileDeletable(Mockito.any(FileStatus.class));
 
     // attempt to delete the directory, which
     if (chore.checkAndDeleteDirectory(parent)) {
@@ -282,7 +285,7 @@ public class TestCleanerChore {
     assertTrue("Added file unexpectedly deleted", fs.exists(racyFile));
     assertTrue("Parent directory deleted unexpectedly", fs.exists(parent));
     assertFalse("Original file unexpectedly retained", fs.exists(file));
-    Mockito.verify(spy, Mockito.times(1)).isFileDeletable(Mockito.any(Path.class));
+    Mockito.verify(spy, Mockito.times(1)).isFileDeletable(Mockito.any(FileStatus.class));
   }
 
   private static class AllValidPaths extends CleanerChore<BaseHFileCleanerDelegate> {
@@ -301,14 +304,14 @@ public class TestCleanerChore {
 
   public static class AlwaysDelete extends BaseHFileCleanerDelegate {
     @Override
-    public boolean isFileDeletable(Path file) {
+    public boolean isFileDeletable(FileStatus fStat) {
       return true;
     }
   }
 
   public static class NeverDelete extends BaseHFileCleanerDelegate {
     @Override
-    public boolean isFileDeletable(Path file) {
+    public boolean isFileDeletable(FileStatus fStat) {
       return false;
     }
   }

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.java Sat Jun  8 00:29:31 2013
@@ -75,7 +75,7 @@ public class TestHFileCleaner {
     conf.setLong(TimeToLiveHFileCleaner.TTL_CONF_KEY, 100);
     cleaner.setConf(conf);
     assertTrue("File not set deletable - check mod time:" + getFileStats(file, fs)
-        + " with create time:" + createTime, cleaner.isFileDeletable(file));
+        + " with create time:" + createTime, cleaner.isFileDeletable(fs.getFileStatus(file)));
   }
 
   /**

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotHFileCleaner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotHFileCleaner.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotHFileCleaner.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotHFileCleaner.java Sat Jun  8 00:29:31 2013
@@ -84,6 +84,6 @@ public class TestSnapshotHFileCleaner {
     fs.createNewFile(new Path(archivedHfileDir, hfile));
 
     // make sure that the file isn't deletable
-    assertFalse(cleaner.isFileDeletable(new Path(hfile)));
+    assertFalse(cleaner.isFileDeletable(fs.getFileStatus(refFile)));
   }
-}
\ No newline at end of file
+}

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotLogCleaner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotLogCleaner.java?rev=1490886&r1=1490885&r2=1490886&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotLogCleaner.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/snapshot/TestSnapshotLogCleaner.java Sat Jun  8 00:29:31 2013
@@ -80,6 +80,6 @@ public class TestSnapshotLogCleaner {
     fs.create(logFile);
 
     // make sure that the file isn't deletable
-    assertFalse(cleaner.isFileDeletable(logFile));
+    assertFalse(cleaner.isFileDeletable(fs.getFileStatus(logFile)));
   }
-}
\ No newline at end of file
+}