Return-Path: X-Original-To: apmail-hadoop-hdfs-issues-archive@minotaur.apache.org Delivered-To: apmail-hadoop-hdfs-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id EACBACE03 for ; Thu, 3 May 2012 23:41:12 +0000 (UTC) Received: (qmail 38949 invoked by uid 500); 3 May 2012 23:41:11 -0000 Delivered-To: apmail-hadoop-hdfs-issues-archive@hadoop.apache.org Received: (qmail 38913 invoked by uid 500); 3 May 2012 23:41:11 -0000 Mailing-List: contact hdfs-issues-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hdfs-issues@hadoop.apache.org Delivered-To: mailing list hdfs-issues@hadoop.apache.org Received: (qmail 38867 invoked by uid 99); 3 May 2012 23:41:11 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 03 May 2012 23:41:11 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 03 May 2012 23:41:09 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 9905042FC97 for ; Thu, 3 May 2012 23:40:48 +0000 (UTC) Date: Thu, 3 May 2012 23:40:48 +0000 (UTC) From: "Tsz Wo (Nicholas), SZE (JIRA)" To: hdfs-issues@hadoop.apache.org Message-ID: <7829697.24592.1336088448628.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Resolved] (HDFS-566) INode.permissions should be marked as volatile to avoid synchronization problems MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HDFS-566?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Tsz Wo (Nicholas), SZE resolved HDFS-566. ----------------------------------------- Resolution: Fixed Just have committed 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