HBASE-16985 TestClusterId failed due to wrong hbase rootdir
Signed-off-by: Michael Stack <stack@apache.org>
This commit is contained in:
parent
1e322e68a5
commit
e929156f96
|
@ -575,17 +575,7 @@ public class HRegionServer extends HasThread implements
|
|||
|
||||
useZKForAssignment = ConfigUtil.useZKForAssignment(conf);
|
||||
|
||||
// Set 'fs.defaultFS' to match the filesystem on hbase.rootdir else
|
||||
// underlying hadoop hdfs accessors will be going against wrong filesystem
|
||||
// (unless all is set to defaults).
|
||||
FSUtils.setFsDefault(this.conf, FSUtils.getRootDir(this.conf));
|
||||
// Get fs instance used by this RS. Do we use checksum verification in the hbase? If hbase
|
||||
// checksum verification enabled, then automatically switch off hdfs checksum verification.
|
||||
boolean useHBaseChecksum = conf.getBoolean(HConstants.HBASE_CHECKSUM_VERIFICATION, true);
|
||||
this.fs = new HFileSystem(this.conf, useHBaseChecksum);
|
||||
this.rootDir = FSUtils.getRootDir(this.conf);
|
||||
this.tableDescriptors = new FSTableDescriptors(
|
||||
this.conf, this.fs, this.rootDir, !canUpdateTableDescriptor(), false);
|
||||
initializeFileSystem();
|
||||
|
||||
service = new ExecutorService(getServerName().toShortString());
|
||||
spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());
|
||||
|
@ -638,6 +628,20 @@ public class HRegionServer extends HasThread implements
|
|||
choreService.scheduleChore(compactedFileDischarger);
|
||||
}
|
||||
|
||||
private void initializeFileSystem() throws IOException {
|
||||
// Set 'fs.defaultFS' to match the filesystem on hbase.rootdir else
|
||||
// underlying hadoop hdfs accessors will be going against wrong filesystem
|
||||
// (unless all is set to defaults).
|
||||
FSUtils.setFsDefault(this.conf, FSUtils.getRootDir(this.conf));
|
||||
// Get fs instance used by this RS. Do we use checksum verification in the hbase? If hbase
|
||||
// checksum verification enabled, then automatically switch off hdfs checksum verification.
|
||||
boolean useHBaseChecksum = conf.getBoolean(HConstants.HBASE_CHECKSUM_VERIFICATION, true);
|
||||
this.fs = new HFileSystem(this.conf, useHBaseChecksum);
|
||||
this.rootDir = FSUtils.getRootDir(this.conf);
|
||||
this.tableDescriptors = new FSTableDescriptors(
|
||||
this.conf, this.fs, this.rootDir, !canUpdateTableDescriptor(), false);
|
||||
}
|
||||
|
||||
protected void setInitLatch(CountDownLatch latch) {
|
||||
this.initLatch = latch;
|
||||
}
|
||||
|
@ -1362,6 +1366,7 @@ public class HRegionServer extends HasThread implements
|
|||
protected void handleReportForDutyResponse(final RegionServerStartupResponse c)
|
||||
throws IOException {
|
||||
try {
|
||||
boolean updateRootDir = false;
|
||||
for (NameStringPair e : c.getMapEntriesList()) {
|
||||
String key = e.getName();
|
||||
// The hostname the master sees us as.
|
||||
|
@ -1385,11 +1390,20 @@ public class HRegionServer extends HasThread implements
|
|||
continue;
|
||||
}
|
||||
String value = e.getValue();
|
||||
if (key.equals(HConstants.HBASE_DIR)) {
|
||||
if (value != null && !value.equals(conf.get(HConstants.HBASE_DIR))) {
|
||||
updateRootDir = true;
|
||||
}
|
||||
}
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.info("Config from master: " + key + "=" + value);
|
||||
}
|
||||
this.conf.set(key, value);
|
||||
}
|
||||
if (updateRootDir) {
|
||||
// initialize file system by the config fs.defaultFS and hbase.rootdir from master
|
||||
initializeFileSystem();
|
||||
}
|
||||
|
||||
// hack! Maps DFSClient => RegionServer for logs. HDFS made this
|
||||
// config param for task trackers, but we can piggyback off of it.
|
||||
|
|
Loading…
Reference in New Issue