Details
Description
When client call getAdditionalDatanode method, it will initialize GetAdditionalDatanodeRequestProto and send RPC request to Router/namenode. However, if we call getAdditionalDatanode method with null extendedBlock parameter, it will set GetAdditionalDatanodeRequestProto's blk field with null, which will cause NullPointerException. The code show as follow.
// code placeholder
GetAdditionalDatanodeRequestProto req = GetAdditionalDatanodeRequestProto
.newBuilder()
.setSrc(src)
.setFileId(fileId)
.setBlk(PBHelperClient.convert(blk))
.addAllExistings(PBHelperClient.convert(existings))
.addAllExistingStorageUuids(Arrays.asList(existingStorageIDs))
.addAllExcludes(PBHelperClient.convert(excludes))
.setNumAdditionalNodes(numAdditionalNodes)
.setClientName(clientName)
.build();