Uploaded image for project: 'Hadoop HDFS'
  1. Hadoop HDFS
  2. HDFS-14618

Incorrect synchronization of ArrayList field (ArrayList is thread-unsafe).

    XMLWordPrintableJSON

    Details

    • Hadoop Flags:
      Reviewed
    • Flags:
      Patch

      Description

      I submitted a CR for this issue at:

      https://github.com/apache/hadoop/pull/1030

      The field timedOutItems (an ArrayList, i.e., not thread safe):

      https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/PendingReconstructionBlocks.java#L70

      is protected by synchronization on itself (timedOutItems):

      https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/PendingReconstructionBlocks.java#L167-L168

      https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/PendingReconstructionBlocks.java#L267-L268

      https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/PendingReconstructionBlocks.java#L178

      However, in one place:

      https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/PendingReconstructionBlocks.java#L133-L135

      it is (trying to be) protected by synchronized using pendingReconstructions — but this cannot protect timedOutItems.

      Synchronized on different objects does not ensure mutual exclusion with the other locations.

      I.e., 2 code locations, one synchronized by pendingReconstructions and the other by timedOutItems can still executed concurrently.

      This CR adds the synchronized on timedOutItems.

      Note that this CR keeps the synchronized on pendingReconstructions, which is needed for a different purpose (protect pendingReconstructions)

        Attachments

        1. race.patch
          0.9 kB
          Paul Ward

          Issue Links

            Activity

              People

              • Assignee:
                paulward24 Paul Ward
                Reporter:
                paulward24 Paul Ward
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: