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 2016/09/01 19:31:28 UTC
hbase git commit: HBASE-16527 IOExceptions from DFS client still can
cause CatalogJanitor to delete referenced files (Vladimir Rodionov)
Repository: hbase
Updated Branches:
refs/heads/master e30a66b94 -> a1cd601ad
HBASE-16527 IOExceptions from DFS client still can cause CatalogJanitor to delete referenced files (Vladimir Rodionov)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a1cd601a
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a1cd601a
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a1cd601a
Branch: refs/heads/master
Commit: a1cd601ad7199ea91e9f9b5e462c24d6681bc870
Parents: e30a66b
Author: tedyu <yu...@gmail.com>
Authored: Thu Sep 1 12:31:20 2016 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Thu Sep 1 12:31:20 2016 -0700
----------------------------------------------------------------------
.../hadoop/hbase/master/CatalogJanitor.java | 20 ++++++++++----------
.../hbase/regionserver/HRegionFileSystem.java | 15 ++++++++++++---
2 files changed, 22 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/a1cd601a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
index 476c796..bff85cb 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
@@ -404,27 +404,27 @@ public class CatalogJanitor extends ScheduledChore {
return new Pair<Boolean, Boolean>(Boolean.FALSE, Boolean.FALSE);
}
} catch (IOException ioe) {
- LOG.warn("Error trying to determine if daughter region exists, " +
+ LOG.error("Error trying to determine if daughter region exists, " +
"assuming exists and has references", ioe);
return new Pair<Boolean, Boolean>(Boolean.TRUE, Boolean.TRUE);
}
+ boolean references = false;
+ HTableDescriptor parentDescriptor = getTableDescriptor(parent.getTable());
try {
regionFs = HRegionFileSystem.openRegionFromFileSystem(
this.services.getConfiguration(), fs, tabledir, daughter, true);
+
+ for (HColumnDescriptor family: parentDescriptor.getFamilies()) {
+ if ((references = regionFs.hasReferences(family.getNameAsString()))) {
+ break;
+ }
+ }
} catch (IOException e) {
- LOG.warn("Error trying to determine referenced files from : " + daughter.getEncodedName()
+ LOG.error("Error trying to determine referenced files from : " + daughter.getEncodedName()
+ ", to: " + parent.getEncodedName() + " assuming has references", e);
return new Pair<Boolean, Boolean>(Boolean.TRUE, Boolean.TRUE);
}
-
- boolean references = false;
- HTableDescriptor parentDescriptor = getTableDescriptor(parent.getTable());
- for (HColumnDescriptor family: parentDescriptor.getFamilies()) {
- if ((references = regionFs.hasReferences(family.getNameAsString()))) {
- break;
- }
- }
return new Pair<Boolean, Boolean>(Boolean.TRUE, Boolean.valueOf(references));
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/a1cd601a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java
index 995b111..508b4a7 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java
@@ -252,9 +252,18 @@ public class HRegionFileSystem {
* @throws IOException
*/
public boolean hasReferences(final String familyName) throws IOException {
- FileStatus[] files = FSUtils.listStatus(fs, getStoreDir(familyName),
- new FSUtils.ReferenceFileFilter(fs));
- return files != null && files.length > 0;
+ FileStatus[] files = FSUtils.listStatus(fs, getStoreDir(familyName));
+ if (files != null) {
+ for(FileStatus stat: files) {
+ if(stat.isDirectory()) {
+ continue;
+ }
+ if(StoreFileInfo.isReference(stat.getPath())) {
+ return true;
+ }
+ }
+ }
+ return false;
}
/**