Chao Sun created HDFS-13898:
-------------------------------
Summary: Throw retriable exception for getBlockLocations when
ObserverNameNode is in safemode
Key: HDFS-13898
URL: https://issues.apache.org/jira/browse/HDFS-13898
Project: Hadoop HDFS
Issue Type: Sub-task
Reporter: Chao Sun
When ObserverNameNode is in safe mode, {{getBlockLocations}} may throw safe
mode exception if the given file doesn't have any block yet.
{code}
try {
checkOperation(OperationCategory.READ);
res = FSDirStatAndListingOp.getBlockLocations(
dir, pc, srcArg, offset, length, true);
if (isInSafeMode()) {
for (LocatedBlock b : res.blocks.getLocatedBlocks()) {
// if safemode & no block locations yet then throw safemodeException
if ((b.getLocations() == null) || (b.getLocations().length == 0)) {
SafeModeException se = newSafemodeException(
"Zero blocklocations for " + srcArg);
if (haEnabled && haContext != null &&
haContext.getState().getServiceState() ==
HAServiceState.ACTIVE) {
throw new RetriableException(se);
} else {
throw se;
}
}
}
}
{code}
It only throws {{RetriableException}} for active NN so requests on observer may
just fail.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]