HBASE-10332 Missing .regioninfo file during daughter open processing
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1558033 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
086b0ebcb6
commit
4970f6f3dd
|
@ -4385,11 +4385,14 @@ public class HRegion implements HeapSize { // , Writable{
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
HRegion createDaughterRegionFromSplits(final HRegionInfo hri) 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(),
|
HRegion r = HRegion.newHRegion(this.fs.getTableDir(), this.getLog(), fs.getFileSystem(),
|
||||||
this.getBaseConf(), hri, this.getTableDesc(), rsServices);
|
this.getBaseConf(), hri, this.getTableDesc(), rsServices);
|
||||||
r.readRequestsCount.set(this.getReadRequestsCount() / 2);
|
r.readRequestsCount.set(this.getReadRequestsCount() / 2);
|
||||||
r.writeRequestsCount.set(this.getWriteRequestsCount() / 2);
|
r.writeRequestsCount.set(this.getWriteRequestsCount() / 2);
|
||||||
fs.commitDaughterRegion(hri);
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -483,9 +483,17 @@ public class HRegionFileSystem {
|
||||||
Path commitDaughterRegion(final HRegionInfo regionInfo) throws IOException {
|
Path commitDaughterRegion(final HRegionInfo regionInfo) throws IOException {
|
||||||
Path regionDir = new Path(this.tableDir, regionInfo.getEncodedName());
|
Path regionDir = new Path(this.tableDir, regionInfo.getEncodedName());
|
||||||
Path daughterTmpDir = this.getSplitsDir(regionInfo);
|
Path daughterTmpDir = this.getSplitsDir(regionInfo);
|
||||||
if (fs.exists(daughterTmpDir) && !rename(daughterTmpDir, 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);
|
throw new IOException("Unable to rename " + daughterTmpDir + " to " + regionDir);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return regionDir;
|
return regionDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue