Hadoop Common
  1. Hadoop Common
  2. HADOOP-8406

CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.0-alpha
    • Fix Version/s: 2.0.2-alpha
    • Component/s: io
    • Labels:
      None
    • Target Version/s:
    • Hadoop Flags:
      Reviewed

      Description

      CompressionCodecFactory defines CODEC_PROVIDERS as:

        private static final ServiceLoader<CompressionCodec> CODEC_PROVIDERS =
          ServiceLoader.load(CompressionCodec.class);
      

      but this is a lazy collection which is thread-unsafe to iterate. We either need to synchronize when we iterate over it, or we need to materialize it during class-loading time by copying to a non-lazy collection

        Activity

        Hide
        Todd Lipcon added a comment -

        In practice I'm seeing this cause an occasional failure of the first HDFS saveNamespace operation if there are many storage directories configured, because all of the saver threads start and call this function at about the same time.

        Show
        Todd Lipcon added a comment - In practice I'm seeing this cause an occasional failure of the first HDFS saveNamespace operation if there are many storage directories configured, because all of the saver threads start and call this function at about the same time.
        Hide
        Todd Lipcon added a comment -

        Attached patch synchronizes the iteration over this list.

        I didn't add a unit test because it would be nearly impossible to write one that failed reliably, since it only affects the very first call after the class has been classloaded.

        Show
        Todd Lipcon added a comment - Attached patch synchronizes the iteration over this list. I didn't add a unit test because it would be nearly impossible to write one that failed reliably, since it only affects the very first call after the class has been classloaded.
        Hide
        Eli Collins added a comment -

        +1 pending jenkins

        Show
        Eli Collins added a comment - +1 pending jenkins
        Hide
        Hadoop QA added a comment -

        -1 overall. Here are the results of testing the latest attachment
        http://issues.apache.org/jira/secure/attachment/12527752/hadoop-8406.txt
        against trunk revision .

        +1 @author. The patch does not contain any @author tags.

        -1 tests included. The patch doesn't appear to include any new or modified tests.
        Please justify why no new tests are needed for this patch.
        Also please list what manual steps were performed to verify this patch.

        +1 javac. The applied patch does not increase the total number of javac compiler warnings.

        +1 javadoc. The javadoc tool did not generate any warning messages.

        +1 eclipse:eclipse. The patch built with eclipse:eclipse.

        +1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.

        +1 release audit. The applied patch does not increase the total number of release audit warnings.

        -1 core tests. The patch failed these unit tests in hadoop-common-project/hadoop-common:

        org.apache.hadoop.fs.viewfs.TestViewFsTrash

        +1 contrib tests. The patch passed contrib unit tests.

        Test results: https://builds.apache.org/job/PreCommit-HADOOP-Build/999//testReport/
        Console output: https://builds.apache.org/job/PreCommit-HADOOP-Build/999//console

        This message is automatically generated.

        Show
        Hadoop QA added a comment - -1 overall. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12527752/hadoop-8406.txt against trunk revision . +1 @author. The patch does not contain any @author tags. -1 tests included. The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch. +1 javac. The applied patch does not increase the total number of javac compiler warnings. +1 javadoc. The javadoc tool did not generate any warning messages. +1 eclipse:eclipse. The patch built with eclipse:eclipse. +1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings. +1 release audit. The applied patch does not increase the total number of release audit warnings. -1 core tests. The patch failed these unit tests in hadoop-common-project/hadoop-common: org.apache.hadoop.fs.viewfs.TestViewFsTrash +1 contrib tests. The patch passed contrib unit tests. Test results: https://builds.apache.org/job/PreCommit-HADOOP-Build/999//testReport/ Console output: https://builds.apache.org/job/PreCommit-HADOOP-Build/999//console This message is automatically generated.
        Hide
        Todd Lipcon added a comment -

        Failure is a known bad test. I'll commit this momentarily.

        Show
        Todd Lipcon added a comment - Failure is a known bad test. I'll commit this momentarily.
        Hide
        Todd Lipcon added a comment -

        Committed to branch-2 and trunk.

        Show
        Todd Lipcon added a comment - Committed to branch-2 and trunk.
        Hide
        Hudson added a comment -

        Integrated in Hadoop-Hdfs-trunk-Commit #2331 (See https://builds.apache.org/job/Hadoop-Hdfs-trunk-Commit/2331/)
        HADOOP-8406. CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe. Contributed by Todd Lipcon. (Revision 1339476)

        Result = SUCCESS
        todd : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1339476
        Files :

        • /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
        • /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java
        Show
        Hudson added a comment - Integrated in Hadoop-Hdfs-trunk-Commit #2331 (See https://builds.apache.org/job/Hadoop-Hdfs-trunk-Commit/2331/ ) HADOOP-8406 . CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe. Contributed by Todd Lipcon. (Revision 1339476) Result = SUCCESS todd : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1339476 Files : /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java
        Hide
        Hudson added a comment -

        Integrated in Hadoop-Common-trunk-Commit #2257 (See https://builds.apache.org/job/Hadoop-Common-trunk-Commit/2257/)
        HADOOP-8406. CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe. Contributed by Todd Lipcon. (Revision 1339476)

        Result = SUCCESS
        todd : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1339476
        Files :

        • /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
        • /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java
        Show
        Hudson added a comment - Integrated in Hadoop-Common-trunk-Commit #2257 (See https://builds.apache.org/job/Hadoop-Common-trunk-Commit/2257/ ) HADOOP-8406 . CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe. Contributed by Todd Lipcon. (Revision 1339476) Result = SUCCESS todd : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1339476 Files : /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java
        Hide
        Hudson added a comment -

        Integrated in Hadoop-Mapreduce-trunk-Commit #2274 (See https://builds.apache.org/job/Hadoop-Mapreduce-trunk-Commit/2274/)
        HADOOP-8406. CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe. Contributed by Todd Lipcon. (Revision 1339476)

        Result = ABORTED
        todd : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1339476
        Files :

        • /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
        • /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java
        Show
        Hudson added a comment - Integrated in Hadoop-Mapreduce-trunk-Commit #2274 (See https://builds.apache.org/job/Hadoop-Mapreduce-trunk-Commit/2274/ ) HADOOP-8406 . CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe. Contributed by Todd Lipcon. (Revision 1339476) Result = ABORTED todd : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1339476 Files : /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java
        Hide
        Hudson added a comment -

        Integrated in Hadoop-Hdfs-trunk #1048 (See https://builds.apache.org/job/Hadoop-Hdfs-trunk/1048/)
        HADOOP-8406. CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe. Contributed by Todd Lipcon. (Revision 1339476)

        Result = SUCCESS
        todd : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1339476
        Files :

        • /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
        • /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java
        Show
        Hudson added a comment - Integrated in Hadoop-Hdfs-trunk #1048 (See https://builds.apache.org/job/Hadoop-Hdfs-trunk/1048/ ) HADOOP-8406 . CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe. Contributed by Todd Lipcon. (Revision 1339476) Result = SUCCESS todd : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1339476 Files : /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java
        Hide
        Hudson added a comment -

        Integrated in Hadoop-Mapreduce-trunk #1082 (See https://builds.apache.org/job/Hadoop-Mapreduce-trunk/1082/)
        HADOOP-8406. CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe. Contributed by Todd Lipcon. (Revision 1339476)

        Result = SUCCESS
        todd : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1339476
        Files :

        • /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
        • /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java
        Show
        Hudson added a comment - Integrated in Hadoop-Mapreduce-trunk #1082 (See https://builds.apache.org/job/Hadoop-Mapreduce-trunk/1082/ ) HADOOP-8406 . CompressionCodecFactory.CODEC_PROVIDERS iteration is thread-unsafe. Contributed by Todd Lipcon. (Revision 1339476) Result = SUCCESS todd : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1339476 Files : /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java

          People

          • Assignee:
            Todd Lipcon
            Reporter:
            Todd Lipcon
          • Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development