Details
-
Sub-task
-
Status: Patch Available
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
My colleague report that the following code segment has wrong parameter passed when create RemoteLocation instance at RouterRpcClient#invokeConcurrent (Collection<T>, RemoteMethod, boolean, long, Class<R>).
if (standby) { // Call the objectGetter to all NNs (including standby) for (final FederationNamenodeContext nn : namenodes) { String nnId = nn.getNamenodeId(); final List<FederationNamenodeContext> nnList = Collections.singletonList(nn); T nnLocation = location; if (location instanceof RemoteLocation) { nnLocation = (T)new RemoteLocation(nsId, nnId, location.getDest()); <-- wrong parameter passed. } orderedLocations.add(nnLocation); callables.add( () -> { transferThreadLocalContext(originCall, originContext); return invokeMethod(ugi, nnList, proto, m, paramList); }); } }