question: return the datanode descriptor for the given datanode . concode_field_sep PlaceHolder placeHolder concode_field_sep LocatedBlocks getBlockLocations concode_elem_sep long[] getStats concode_elem_sep NamenodeCommand startCheckpoint concode_elem_sep Server getRpcServer concode_elem_sep FSImage spyOnFsImage concode_elem_sep void enterSafeMode concode_elem_sep void setLeasePeriod concode_elem_sep Lease getLeaseForPath concode_elem_sep String getMkdirOpPath concode_elem_sep DelegationTokenSecretManager getDtSecretManager concode_elem_sep LeaseManager getLeaseManager concode_elem_sep String getLeaseHolderForPath concode_elem_sep boolean safeModeInitializedReplQueues concode_elem_sep FSEditLogOp createMkdirOp concode_elem_sep long getLeaseRenewalTime concode_elem_sep File getInProgressEditsFile concode_elem_sep boolean setReplication concode_elem_sep HeartbeatResponse sendHeartBeat concode_elem_sep void abortEditLogs concode_elem_sep JournalSet spyOnJournalSet concode_elem_sep boolean mkdirs concode_elem_sep void leaveSafeMode concode_elem_sep void saveNamespace concode_elem_sep HdfsFileStatus getFileInfo concode_elem_sep FSEditLog spyOnEditLog concode_elem_sep FSNamesystem getNamesystem concode_elem_sep ReentrantReadWriteLock spyOnFsLock concode_elem_sep long getSafeModeSafeBlocks
target: DatanodeDescriptor function ( final FSNamesystem arg0 , DatanodeID arg1 ) { arg0 . readLock ( ) ; try { return arg0 . getBlockManager ( ) . getDatanodeManager ( ) . getDatanode ( arg1 ) ; } finally { arg0 . readUnlock ( ) ; } }