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

LeaseRenewer throw java.util.ConcurrentModificationException when timeout

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.1.0, 2.0.0-alpha
    • 1.1.3, 0.23.10, 2.1.1-beta
    • None
    • None
    • Reviewed

    Description

      In LeaseRenewer, when renew() throw SocketTimeoutException, c.abort() will remove one dfsclient from dfsclients. Here will throw a ConcurrentModificationException because dfsclients changed after the iterator created by "for(DFSClient c : dfsclients)":

      Exception in thread "org.apache.hadoop.hdfs.LeaseRenewer$1@75fa1077" java.util.ConcurrentModificationException
      at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
      at java.util.AbstractList$Itr.next(AbstractList.java:343)
      at org.apache.hadoop.hdfs.LeaseRenewer.run(LeaseRenewer.java:406)
      at org.apache.hadoop.hdfs.LeaseRenewer.access$600(LeaseRenewer.java:69)
      at org.apache.hadoop.hdfs.LeaseRenewer$1.run(LeaseRenewer.java:273)
      at java.lang.Thread.run(Thread.java:662)

      Attachments

        1. HDFS-5028.patch
          0.8 kB
          yunjiong zhao
        2. HDFS-5028-branch-1.1.patch
          0.7 kB
          yunjiong zhao

        Activity

          People

            zhaoyunjiong yunjiong zhao
            zhaoyunjiong yunjiong zhao
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: