You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by li...@apache.org on 2013/06/12 20:35:59 UTC

svn commit: r1492339 - in /hbase/branches/0.89-fb/src: main/java/org/apache/hadoop/hbase/client/ClientLocalScanner.java test/java/org/apache/hadoop/hbase/client/TestClientLocalScanner.java

Author: liyin
Date: Wed Jun 12 18:35:59 2013
New Revision: 1492339

URL: http://svn.apache.org/r1492339
Log:
[HBASE-8185] Fixing 'ClientLocalScanner without creating Hardlinks' to not delete the hardlinks.

Author: manukranthk

Summary: Fixing ClientLocalScanner's 'without hardlinks' case to not delete the hardlinks. Earlier, these hardlinks used to be deleted since they are created by the ClientLocalScanner itself. But in this approach the hardlinks should be assumed to be created externally and so they cannot be deleted.

Test Plan: Unit test.

Reviewers: rshroff, shaneh

Reviewed By: rshroff

CC: hbase-eng@

Differential Revision: https://phabricator.fb.com/D842232

Task ID: 2483974

Modified:
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/ClientLocalScanner.java
    hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/client/TestClientLocalScanner.java

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/ClientLocalScanner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/ClientLocalScanner.java?rev=1492339&r1=1492338&r2=1492339&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/ClientLocalScanner.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/ClientLocalScanner.java Wed Jun 12 18:35:59 2013
@@ -220,7 +220,7 @@ public class ClientLocalScanner extends 
   protected void closeCurrentScanner() {
     try {
       for (Store store : stores.values()) {
-        store.close(true);
+        store.close(areHardlinksCreated);
       }
       stores.clear();
       if (currentScanner != null) {

Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/client/TestClientLocalScanner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/client/TestClientLocalScanner.java?rev=1492339&r1=1492338&r2=1492339&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/client/TestClientLocalScanner.java (original)
+++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/client/TestClientLocalScanner.java Wed Jun 12 18:35:59 2013
@@ -33,15 +33,18 @@ import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.HServerAddress;
+import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.filter.BinaryComparator;
 import org.apache.hadoop.hbase.filter.CompareFilter;
 import org.apache.hadoop.hbase.filter.Filter;
 import org.apache.hadoop.hbase.filter.RowFilter;
 import org.apache.hadoop.hbase.filter.WhileMatchFilter;
+import org.apache.hadoop.hbase.regionserver.Store;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.InjectionEvent;
 import org.apache.hadoop.hbase.util.InjectionHandler;
@@ -267,14 +270,26 @@ public class TestClientLocalScanner {
     ResultScanner scanner = t.getLocalScanner(scan);
     assertTrue(fs.exists(folder));
     assertTrue(fs.listStatus(folder).length > 0);
-    fs.delete(folder, true);
+    scanner.close();
+
+    Path rootdir = new Path(TEST_UTIL.getConfiguration().get("hbase.rootdir"));
+    HRegionInfo info = t.getRegionsInfo().keySet().iterator().next();
+    HColumnDescriptor family = info.getTableDesc().getFamily(FAMILY);
+    Path tableDir = HTableDescriptor.getTableDir(rootdir, info.getTableDesc().getName());
+    Path homedir = Store.getStoreHomedir(tableDir, info.getEncodedName(), family.getName());
+
+    assertTrue(fs.exists(homedir));
+    int files = fs.listStatus(homedir).length;
 
     scanner = t.getLocalScanner(scan, false);
     assertTrue(compareScanners(tmpTable.getScanner(scan),
         scanner));
-    assertTrue(!fs.exists(folder));
-    scanner.close();
+    assertTrue(fs.exists(folder));
+    assertTrue(fs.listStatus(folder).length <= 0);
     scanner.close();
+
+    assertTrue(fs.exists(homedir));
+    assertTrue(fs.listStatus(homedir).length == files);
   }
 
   public Scan getScan(int caching, int batching,