You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by hu...@apache.org on 2018/02/22 00:02:20 UTC
hbase git commit: HBASE-19391 Calling
HRegion#initializeRegionInternals from a region replica can still re-create a
region directory
Repository: hbase
Updated Branches:
refs/heads/master 13223c217 -> a0900857c
HBASE-19391 Calling HRegion#initializeRegionInternals from a region replica can still re-create a region directory
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a0900857
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a0900857
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a0900857
Branch: refs/heads/master
Commit: a0900857c7d58e03a39794e96224bf6213307ce7
Parents: 13223c2
Author: Esteban Gutierrez <es...@apache.org>
Authored: Wed Feb 21 15:28:50 2018 -0800
Committer: huaxiangsun <hu...@gmail.com>
Committed: Wed Feb 21 15:56:36 2018 -0800
----------------------------------------------------------------------
.../hbase/regionserver/HRegionFileSystem.java | 29 ++++++++++----------
1 file changed, 15 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/a0900857/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 6ad3f1a..3c2d392 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
@@ -969,28 +969,29 @@ public class HRegionFileSystem {
public static HRegionFileSystem createRegionOnFileSystem(final Configuration conf,
final FileSystem fs, final Path tableDir, final RegionInfo regionInfo) throws IOException {
HRegionFileSystem regionFs = new HRegionFileSystem(conf, fs, tableDir, regionInfo);
- Path regionDir = regionFs.getRegionDir();
- if (fs.exists(regionDir)) {
- LOG.warn("Trying to create a region that already exists on disk: " + regionDir);
- throw new IOException("The specified region already exists on disk: " + regionDir);
- }
+ // We only create a .regioninfo and the region directory if this is the default region replica
+ if (regionInfo.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {
+ Path regionDir = regionFs.getRegionDir();
+ if (fs.exists(regionDir)) {
+ LOG.warn("Trying to create a region that already exists on disk: " + regionDir);
+ throw new IOException("The specified region already exists on disk: " + regionDir);
+ }
- // Create the region directory
- if (!createDirOnFileSystem(fs, conf, regionDir)) {
- LOG.warn("Unable to create the region directory: " + regionDir);
- throw new IOException("Unable to create region directory: " + regionDir);
- }
+ // Create the region directory
+ if (!createDirOnFileSystem(fs, conf, regionDir)) {
+ LOG.warn("Unable to create the region directory: " + regionDir);
+ throw new IOException("Unable to create region directory: " + regionDir);
+ }
- // Write HRI to a file in case we need to recover hbase:meta
- // Only primary replicas should write region info
- if (regionInfo.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {
+ // Write HRI to a file in case we need to recover hbase:meta
regionFs.writeRegionInfoOnFilesystem(false);
+ return regionFs;
} else {
if (LOG.isDebugEnabled())
LOG.debug("Skipping creation of .regioninfo file for " + regionInfo);
}
- return regionFs;
+ return null;
}
/**