YARN-6647. RM can crash during transitionToStandby due to InterruptedException. Contributed by Bibin A Chundatt

(cherry picked from commit a2c7a73e33)
This commit is contained in:
Jason Lowe 2017-11-28 11:10:18 -06:00
parent 8bf74f325a
commit a4f1e3036d
1 changed files with 29 additions and 13 deletions

View File

@ -82,16 +82,23 @@ public class RMDelegationTokenSecretManager extends
return new RMDelegationTokenIdentifier();
}
private boolean shouldIgnoreException(Exception e) {
return !running && e.getCause() instanceof InterruptedException;
}
@Override
protected void storeNewMasterKey(DelegationKey newKey) {
try {
LOG.info("storing master key with keyID " + newKey.getKeyId());
rm.getRMContext().getStateStore().storeRMDTMasterKey(newKey);
} catch (Exception e) {
LOG.error("Error in storing master key with KeyID: " + newKey.getKeyId());
if (!shouldIgnoreException(e)) {
LOG.error(
"Error in storing master key with KeyID: " + newKey.getKeyId());
ExitUtil.terminate(1, e);
}
}
}
@Override
protected void removeStoredMasterKey(DelegationKey key) {
@ -99,10 +106,12 @@ public class RMDelegationTokenSecretManager extends
LOG.info("removing master key with keyID " + key.getKeyId());
rm.getRMContext().getStateStore().removeRMDTMasterKey(key);
} catch (Exception e) {
if (!shouldIgnoreException(e)) {
LOG.error("Error in removing master key with KeyID: " + key.getKeyId());
ExitUtil.terminate(1, e);
}
}
}
@Override
protected void storeNewToken(RMDelegationTokenIdentifier identifier,
@ -113,11 +122,13 @@ public class RMDelegationTokenSecretManager extends
rm.getRMContext().getStateStore().storeRMDelegationToken(identifier,
renewDate);
} catch (Exception e) {
if (!shouldIgnoreException(e)) {
LOG.error("Error in storing RMDelegationToken with sequence number: "
+ identifier.getSequenceNumber());
ExitUtil.terminate(1, e);
}
}
}
@Override
protected void updateStoredToken(RMDelegationTokenIdentifier id,
@ -127,11 +138,13 @@ public class RMDelegationTokenSecretManager extends
+ id.getSequenceNumber());
rm.getRMContext().getStateStore().updateRMDelegationToken(id, renewDate);
} catch (Exception e) {
LOG.error("Error in updating persisted RMDelegationToken" +
" with sequence number: " + id.getSequenceNumber());
if (!shouldIgnoreException(e)) {
LOG.error("Error in updating persisted RMDelegationToken"
+ " with sequence number: " + id.getSequenceNumber());
ExitUtil.terminate(1, e);
}
}
}
@Override
protected void removeStoredToken(RMDelegationTokenIdentifier ident)
@ -141,11 +154,14 @@ public class RMDelegationTokenSecretManager extends
+ ident.getSequenceNumber());
rm.getRMContext().getStateStore().removeRMDelegationToken(ident);
} catch (Exception e) {
LOG.error("Error in removing RMDelegationToken with sequence number: "
if (!shouldIgnoreException(e)) {
LOG.error(
"Error in removing RMDelegationToken with sequence number: "
+ ident.getSequenceNumber());
ExitUtil.terminate(1, e);
}
}
}
@Private
@VisibleForTesting