Browse Source

HDFS-13359. DataXceiver hung due to the lock in FsDatasetImpl#getBlockInputStream. Contributed by Yiqun Lin.

Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
Yiqun Lin 5 years ago
parent
commit
8a77a224c7

+ 1 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java

@@ -794,7 +794,7 @@ class FsDatasetImpl implements FsDatasetSpi<FsVolumeImpl> {
       long seekOffset) throws IOException {
       long seekOffset) throws IOException {
 
 
     ReplicaInfo info;
     ReplicaInfo info;
-    synchronized(this) {
+    try (AutoCloseableLock lock = datasetLock.acquire()) {
       info = volumeMap.get(b.getBlockPoolId(), b.getLocalBlock());
       info = volumeMap.get(b.getBlockPoolId(), b.getLocalBlock());
     }
     }