hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daryn Sharp (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-10183) Prevent race condition during class initialization
Date Mon, 21 Mar 2016 14:29:25 GMT

    [ https://issues.apache.org/jira/browse/HDFS-10183?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15204345#comment-15204345

Daryn Sharp commented on HDFS-10183:

My reading of the JLS and the footnotes seems to pretty clearly indicate memory barriers are
required.  I suspect HADOOP-11969 discovered a (hopefully fixes) jvm bug, so this patch is
probably cosmetic but certainly doesn't hurt anything.

> Prevent race condition during class initialization
> --------------------------------------------------
>                 Key: HDFS-10183
>                 URL: https://issues.apache.org/jira/browse/HDFS-10183
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 2.9.0
>            Reporter: Pavel Avgustinov
>            Assignee: Pavel Avgustinov
>            Priority: Minor
>             Fix For: 2.9.0
>         Attachments: HADOOP-12944.1.patch, HDFS-10183.2.patch
> In HADOOP-11969, [~busbey] tracked down a non-deterministic {{NullPointerException}}
to an oddity in the Java memory model: When multiple threads trigger the loading of a class
at the same time, one of them wins and creates the {{java.lang.Class}} instance; the others
block during this initialization, but once it is complete they may obtain a reference to the
{{Class}} which has non-{{final}} fields still containing their default (i.e. {{null}}) values.
This leads to runtime failures that are hard to debug or diagnose.
> HADOOP-11969 observed that {{ThreadLocal}} fields, by their very nature, are very likely
to be accessed from multiple threads, and thus the problem is particularly severe there. Consequently,
the patch removed all occurrences of the issue in the code base.
> Unfortunately, since then HDFS-7964 has [reverted one of the fixes during a refactoring|https://github.com/apache/hadoop/commit/2151716832ad14932dd65b1a4e47e64d8d6cd767#diff-0c2e9f7f9e685f38d1a11373b627cfa6R151],
and introduced a [new instance of the problem|https://github.com/apache/hadoop/commit/2151716832ad14932dd65b1a4e47e64d8d6cd767#diff-6334d0df7d9aefbccd12b21bb7603169R43].
> The attached patch addresses the issue by adding the missing {{final}} modifier in these
two cases.

This message was sent by Atlassian JIRA

View raw message