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