You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/04/04 01:20:33 UTC

svn commit: r1584462 - /logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java

Author: mattsicker
Date: Thu Apr  3 23:20:32 2014
New Revision: 1584462

URL: http://svn.apache.org/r1584462
Log:
Add note to fix double-checked locking.

Modified:
    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java

Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java?rev=1584462&r1=1584461&r2=1584462&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java Thu Apr  3 23:20:32 2014
@@ -112,6 +112,8 @@ public abstract class ConfigurationFacto
      * @return the ConfigurationFactory.
      */
     public static ConfigurationFactory getInstance() {
+        // FIXME: double-checked locking is unsafe
+        // http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
         if (factories == null) {
             synchronized(TEST_PREFIX) {
                 if (factories == null) {



Re: svn commit: r1584462 - /logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java

Posted by Matt Sicker <bo...@gmail.com>.
Will do. Couldn't this be done better by not using a double-checked locking
mechanism and volatile? Or would the initialisation-on-demand holder not
work here?


On 3 April 2014 18:58, Ralph Goers <ra...@dslextreme.com> wrote:

> Please revert this.  Double-checked locking is thread-safe so long as the
> variable is declared volatile.
>
> Ralph
>
> On Apr 3, 2014, at 4:20 PM, mattsicker@apache.org wrote:
>
> > Author: mattsicker
> > Date: Thu Apr  3 23:20:32 2014
> > New Revision: 1584462
> >
> > URL: http://svn.apache.org/r1584462
> > Log:
> > Add note to fix double-checked locking.
> >
> > Modified:
> >
>  logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
> >
> > Modified:
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
> > URL:
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java?rev=1584462&r1=1584461&r2=1584462&view=diff
> >
> ==============================================================================
> > ---
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
> (original)
> > +++
> logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
> Thu Apr  3 23:20:32 2014
> > @@ -112,6 +112,8 @@ public abstract class ConfigurationFacto
> >      * @return the ConfigurationFactory.
> >      */
> >     public static ConfigurationFactory getInstance() {
> > +        // FIXME: double-checked locking is unsafe
> > +        //
> http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
> >         if (factories == null) {
> >             synchronized(TEST_PREFIX) {
> >                 if (factories == null) {
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-dev-help@logging.apache.org
>
>


-- 
Matt Sicker <bo...@gmail.com>

Re: svn commit: r1584462 - /logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java

Posted by Ralph Goers <ra...@dslextreme.com>.
Please revert this.  Double-checked locking is thread-safe so long as the variable is declared volatile.

Ralph

On Apr 3, 2014, at 4:20 PM, mattsicker@apache.org wrote:

> Author: mattsicker
> Date: Thu Apr  3 23:20:32 2014
> New Revision: 1584462
> 
> URL: http://svn.apache.org/r1584462
> Log:
> Add note to fix double-checked locking.
> 
> Modified:
>    logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
> 
> Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
> URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java?rev=1584462&r1=1584461&r2=1584462&view=diff
> ==============================================================================
> --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java (original)
> +++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java Thu Apr  3 23:20:32 2014
> @@ -112,6 +112,8 @@ public abstract class ConfigurationFacto
>      * @return the ConfigurationFactory.
>      */
>     public static ConfigurationFactory getInstance() {
> +        // FIXME: double-checked locking is unsafe
> +        // http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
>         if (factories == null) {
>             synchronized(TEST_PREFIX) {
>                 if (factories == null) {
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org