HDFS-14610. HashMap is not thread safe. Field storageMap is typically synchronized by storageMap. However, in one place, field storageMap is not protected with synchronized. (#1015)

(cherry picked from commit d8bac50e12d243ef8fd2c7e0ce5c9997131dee74)
(cherry picked from commit 76a91359475444cb6d415e5056430c0e743b88ee)
This commit is contained in:
paulward24 2019-07-01 13:54:49 -07:00 committed by Wei-Chiu Chuang
parent 122b02e288
commit d95dd33ea1

View File

@ -451,8 +451,11 @@ private void updateStorageStats(StorageReport[] reports, long cacheCapacity,
this.volumeFailureSummary = volumeFailureSummary; this.volumeFailureSummary = volumeFailureSummary;
for (StorageReport report : reports) { for (StorageReport report : reports) {
DatanodeStorageInfo storage = DatanodeStorageInfo storage = null;
storageMap.get(report.getStorage().getStorageID()); synchronized (storageMap) {
storage =
storageMap.get(report.getStorage().getStorageID());
}
if (checkFailedStorages) { if (checkFailedStorages) {
failedStorageInfos.remove(storage); failedStorageInfos.remove(storage);
} }