You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2014/01/14 14:26:54 UTC
svn commit: r1558033 - in
/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver:
HRegion.java HRegionFileSystem.java
Author: mbertozzi
Date: Tue Jan 14 13:26:54 2014
New Revision: 1558033
URL: http://svn.apache.org/r1558033
Log:
HBASE-10332 Missing .regioninfo file during daughter open processing
Modified:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=1558033&r1=1558032&r2=1558033&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java Tue Jan 14 13:26:54 2014
@@ -4385,11 +4385,14 @@ public class HRegion implements HeapSize
* @throws IOException
*/
HRegion createDaughterRegionFromSplits(final HRegionInfo hri) throws IOException {
+ // Move the files from the temporary .splits to the final /table/region directory
+ fs.commitDaughterRegion(hri);
+
+ // Create the daughter HRegion instance
HRegion r = HRegion.newHRegion(this.fs.getTableDir(), this.getLog(), fs.getFileSystem(),
this.getBaseConf(), hri, this.getTableDesc(), rsServices);
r.readRequestsCount.set(this.getReadRequestsCount() / 2);
r.writeRequestsCount.set(this.getWriteRequestsCount() / 2);
- fs.commitDaughterRegion(hri);
return r;
}
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java?rev=1558033&r1=1558032&r2=1558033&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java Tue Jan 14 13:26:54 2014
@@ -483,8 +483,16 @@ public class HRegionFileSystem {
Path commitDaughterRegion(final HRegionInfo regionInfo) throws IOException {
Path regionDir = new Path(this.tableDir, regionInfo.getEncodedName());
Path daughterTmpDir = this.getSplitsDir(regionInfo);
- if (fs.exists(daughterTmpDir) && !rename(daughterTmpDir, regionDir)) {
- throw new IOException("Unable to rename " + daughterTmpDir + " to " + regionDir);
+ if (fs.exists(daughterTmpDir)) {
+ // Write HRI to a file in case we need to recover hbase:meta
+ Path regionInfoFile = new Path(daughterTmpDir, REGION_INFO_FILE);
+ byte[] regionInfoContent = getRegionInfoFileContent(regionInfo);
+ writeRegionInfoFileContent(conf, fs, regionInfoFile, regionInfoContent);
+
+ // Move the daughter temp dir to the table dir
+ if (!rename(daughterTmpDir, regionDir)) {
+ throw new IOException("Unable to rename " + daughterTmpDir + " to " + regionDir);
+ }
}
return regionDir;
}