in src/fbs/meta/Utils.h [78:122]
static bool retryable(const Status &status) {
auto code = status.code();
switch (StatusCode::typeOf(code)) {
case StatusCodeType::Common:
return false;
case StatusCodeType::Meta:
switch (code) {
case MetaCode::kNotFound:
case MetaCode::kNotEmpty:
case MetaCode::kNotDirectory:
case MetaCode::kTooManySymlinks:
case MetaCode::kIsDirectory:
case MetaCode::kExists:
case MetaCode::kNoPermission:
case MetaCode::kInconsistent:
case MetaCode::kNotFile:
case MetaCode::kBadFileSystem:
case MetaCode::kInvalidFileLayout:
case MetaCode::kFileHasHole:
case MetaCode::kNameTooLong:
case MetaCode::kRequestCanceled:
case MetaCode::kFoundBug:
return false;
case MetaCode::kOTruncFailed:
case MetaCode::kMoreChunksToRemove:
case MetaCode::kBusy:
case MetaCode::kInodeIdAllocFailed:
return true;
default:
return code < MetaCode::kNotRetryable;
}
case StatusCodeType::StorageClient:
switch (code) {
case StorageClientCode::kChunkNotFound:
case StorageClientCode::kChecksumMismatch:
case StorageClientCode::kReadOnlyServer:
case StorageClientCode::kFoundBug:
return false;
default:
return true;
}
default:
return code != RPCCode::kInvalidMethodID;
}
}