HBASE-15591 ServerCrashProcedure not yielding

This commit is contained in:
Jerry He 2016-04-10 17:02:39 -07:00
parent f7d44e929f
commit 80df1cb7b6
1 changed files with 14 additions and 3 deletions

View File

@ -208,6 +208,13 @@ implements ServerProcedureInterface {
case SERVER_CRASH_GET_REGIONS:
// If hbase:meta is not assigned, yield.
if (!isMetaAssignedQuickTest(env)) {
// isMetaAssignedQuickTest does not really wait. Let's delay a little before
// another round of execution.
long wait =
env.getMasterConfiguration().getLong(KEY_SHORT_WAIT_ON_META,
DEFAULT_SHORT_WAIT_ON_META);
wait = wait / 10;
Thread.sleep(wait);
throwProcedureYieldException("Waiting on hbase:meta assignment");
}
this.regionsOnCrashedServer =
@ -293,6 +300,10 @@ implements ServerProcedureInterface {
default:
throw new UnsupportedOperationException("unhandled state=" + state);
}
} catch (ProcedureYieldException e) {
LOG.warn("Failed serverName=" + this.serverName + ", state=" + state + "; retry "
+ e.getMessage());
throw e;
} catch (IOException e) {
LOG.warn("Failed serverName=" + this.serverName + ", state=" + state + "; retry", e);
} catch (InterruptedException e) {