hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tsz Wo (Nicholas), SZE (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HDFS-566) INode.permissions should be marked as volatile to avoid synchronization problems
Date Wed, 02 May 2012 23:15:52 GMT

     [ https://issues.apache.org/jira/browse/HDFS-566?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Tsz Wo (Nicholas), SZE updated HDFS-566:

    Assignee: Tsz Wo (Nicholas), SZE

I am going to remove "synchronized" from INode.updatePermissionStatus(..) via HDFS-3350.
> INode.permissions should be marked as volatile to avoid synchronization problems
> --------------------------------------------------------------------------------
>                 Key: HDFS-566
>                 URL: https://issues.apache.org/jira/browse/HDFS-566
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: name-node
>    Affects Versions: 0.21.0
>            Reporter: Steve Loughran
>            Assignee: Tsz Wo (Nicholas), SZE
>            Priority: Minor
> Looking at INode, I can see that the long permissions field is updated in the synchronized
updatePermissions, read in other non-synchronized contexts
> I believe that to avoid race conditions and other synchronisation problems, the field
should be marked {{volatile}}
> # The Java language specification declares that {{long}} and {{double}} can be written
as two 32-bit writes, unless the field is {{volatile}} http://java.sun.com/docs/books/jls/second_edition/html/memory.doc.html#28733
> # The JVM is free to re-order accesses to non-volatile data; reads of the permission
may pick up out of date values
> # Volatile data may be cached/optimised out, changes may not propagate
> I don't think its enough to make the write operation synchronised, as the reads are still
unsynchronized, and in other threads can pick up values midway through the update, or cache
the value.
> It's a simple fix: declare permissions as  {{volatile}}.
> {code}
> private volatile long permissions;
> {code}

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message