Repository: brooklyn-server
Updated Branches:
  refs/heads/master af4576d09 -> cbec083b1


Fix usage of AtomicBooleas CAS idiom


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/08432bec
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/08432bec
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/08432bec

Branch: refs/heads/master
Commit: 08432bec90209d20d2ac5efd21417ba32640a781
Parents: 82511c3
Author: Andrew Donald Kennedy <[email protected]>
Authored: Thu Jun 16 08:17:24 2016 +0100
Committer: Andrew Donald Kennedy <[email protected]>
Committed: Thu Jun 16 09:10:50 2016 +0100

----------------------------------------------------------------------
 .../core/internal/BrooklynInitialization.java   | 23 +++++++------
 .../brooklyn/core/location/PortRanges.java      | 21 +++++-------
 .../mgmt/internal/LocalManagementContext.java   | 36 +++++++++-----------
 .../core/mgmt/persist/FileBasedObjectStore.java | 26 ++++++--------
 .../brooklyn/entity/java/JavaAppUtils.java      | 31 +++++++----------
 5 files changed, 61 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/08432bec/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynInitialization.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynInitialization.java
 
b/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynInitialization.java
index 6dc825d..c7bc9b7 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynInitialization.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynInitialization.java
@@ -61,21 +61,22 @@ public class BrooklynInitialization {
      * 
      */
     
-    public synchronized static void initAll() {
-        if (done.get()) return;
-        initTypeCoercionStandardAdapters();
-        initSecureKeysBouncyCastleProvider();
-        initNetworking();
-        initPortRanges();
-        initLegacyLanguageExtensions();
-        done.set(true);
+    public static void initAll() {
+        if (done.compareAndSet(false, true)) {
+            initTypeCoercionStandardAdapters();
+            initSecureKeysBouncyCastleProvider();
+            initNetworking();
+            initPortRanges();
+            initLegacyLanguageExtensions();
+        }
     }
 
     @SuppressWarnings("deprecation")
     public synchronized static void reinitAll() {
-        done.set(false);
-        org.apache.brooklyn.util.core.BrooklynLanguageExtensions.reinit();
-        initAll();
+        if (done.compareAndSet(true, false)) {
+            org.apache.brooklyn.util.core.BrooklynLanguageExtensions.reinit();
+            initAll();
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/08432bec/core/src/main/java/org/apache/brooklyn/core/location/PortRanges.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/location/PortRanges.java 
b/core/src/main/java/org/apache/brooklyn/core/location/PortRanges.java
index 4265e36..ca4c2e4 100644
--- a/core/src/main/java/org/apache/brooklyn/core/location/PortRanges.java
+++ b/core/src/main/java/org/apache/brooklyn/core/location/PortRanges.java
@@ -22,23 +22,22 @@ import static 
com.google.common.base.Preconditions.checkArgument;
 
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import org.apache.brooklyn.api.location.PortRange;
-import org.apache.brooklyn.util.core.flags.TypeCoercions;
-import org.apache.brooklyn.util.text.StringEscapes.JavaStringEscapes;
-
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.primitives.Ints;
 
+import org.apache.brooklyn.api.location.PortRange;
+import org.apache.brooklyn.util.core.flags.TypeCoercions;
+import org.apache.brooklyn.util.text.StringEscapes.JavaStringEscapes;
+
 public class PortRanges {
 
     public static final int MAX_PORT = 65535;
@@ -246,13 +245,12 @@ public class PortRanges {
         }
     }
 
-    private static AtomicBoolean initialized = new AtomicBoolean(false); 
+    private static AtomicBoolean initialized = new AtomicBoolean(false);
+
     /** performs the language extensions required for this project */
     @SuppressWarnings("rawtypes")
     public static void init() {
-        if (initialized.get()) return;
-        synchronized (initialized) {
-            if (initialized.get()) return;
+        if (initialized.compareAndSet(false, true)) {
             TypeCoercions.registerAdapter(Integer.class, PortRange.class, new 
Function<Integer,PortRange>() {
                 public PortRange apply(Integer x) { return fromInteger(x); }
             });
@@ -262,12 +260,11 @@ public class PortRanges {
             TypeCoercions.registerAdapter(Iterable.class, PortRange.class, new 
Function<Iterable,PortRange>() {
                 public PortRange apply(Iterable x) { return fromIterable(x); }
             });
-            initialized.set(true);
         }
     }
-    
+
     static {
         init();
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/08432bec/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java
 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java
index 0731b84..b1bf856 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java
@@ -318,26 +318,24 @@ public class LocalManagementContext extends 
AbstractManagementContext {
     
     @Override
     public void terminate() {
-        synchronized (terminated) {
-            if (terminated.getAndSet(true)) {
-                log.trace("Already terminated management context "+this);
-                // no harm in doing it twice, but it makes logs ugly!
-                return;
-            }
-            log.debug("Terminating management context "+this);
-            
-            INSTANCES.remove(this);
-            super.terminate();
-            if (osgiManager!=null) {
-                osgiManager.stop();
-                osgiManager = null;
-            }
-            if (usageManager != null) usageManager.terminate();
-            if (execution != null) execution.shutdownNow();
-            if (gc != null) gc.shutdownNow();
-            
-            log.debug("Terminated management context "+this);
+        if (terminated.getAndSet(true)) {
+            log.trace("Already terminated management context "+this);
+            // no harm in doing it twice, but it makes logs ugly!
+            return;
         }
+        log.debug("Terminating management context "+this);
+
+        INSTANCES.remove(this);
+        super.terminate();
+        if (osgiManager!=null) {
+            osgiManager.stop();
+            osgiManager = null;
+        }
+        if (usageManager != null) usageManager.terminate();
+        if (execution != null) execution.shutdownNow();
+        if (gc != null) gc.shutdownNow();
+
+        log.debug("Terminated management context "+this);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/08432bec/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedObjectStore.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedObjectStore.java
 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedObjectStore.java
index 980b416..e5fb831 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedObjectStore.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedObjectStore.java
@@ -94,25 +94,19 @@ public class FileBasedObjectStore implements 
PersistenceObjectStore {
     }
     
     public void prepareForMasterUse() {
-        if (doneFirstContentiousWrite.get())
-            return;
-        synchronized (this) {
-            if (doneFirstContentiousWrite.get())
-                return;
-            try {
-                if (deferredBackupNeeded) {
-                    // defer backup and path creation until first write
-                    // this way if node is standby or auto, the backup is not 
created superfluously
+        if (doneFirstContentiousWrite.getAndSet(true)) return;
+        try {
+            if (deferredBackupNeeded) {
+                // defer backup and path creation until first write
+                // this way if node is standby or auto, the backup is not 
created superfluously
 
-                    File backup = backupDirByCopying(basedir);
-                    log.info("Persistence deferred backup, directory 
"+basedir+" backed up to "+backup.getAbsolutePath());
+                File backup = backupDirByCopying(basedir);
+                log.info("Persistence deferred backup, directory "+basedir+" 
backed up to "+backup.getAbsolutePath());
 
-                    deferredBackupNeeded = false;
-                }
-            } catch (Exception e) {
-                throw Exceptions.propagate(e);
+                deferredBackupNeeded = false;
             }
-            doneFirstContentiousWrite.getAndSet(true);
+        } catch (Exception e) {
+            throw Exceptions.propagate(e);
         }
     }
     

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/08432bec/software/base/src/main/java/org/apache/brooklyn/entity/java/JavaAppUtils.java
----------------------------------------------------------------------
diff --git 
a/software/base/src/main/java/org/apache/brooklyn/entity/java/JavaAppUtils.java 
b/software/base/src/main/java/org/apache/brooklyn/entity/java/JavaAppUtils.java
index ef161ea..374bb62 100644
--- 
a/software/base/src/main/java/org/apache/brooklyn/entity/java/JavaAppUtils.java
+++ 
b/software/base/src/main/java/org/apache/brooklyn/entity/java/JavaAppUtils.java
@@ -235,26 +235,21 @@ public class JavaAppUtils {
 
     /** Setup renderer hints for the MXBean attributes. */
     public static void init() {
-        if (initialized.get()) return;
-        synchronized (initialized) {
-            if (initialized.get()) return;
+        if (initialized.getAndSet(true)) return;
 
-            RendererHints.register(UsesJavaMXBeans.USED_HEAP_MEMORY, 
RendererHints.displayValue(ByteSizeStrings.metric()));
-            RendererHints.register(UsesJavaMXBeans.INIT_HEAP_MEMORY, 
RendererHints.displayValue(ByteSizeStrings.metric()));
-            RendererHints.register(UsesJavaMXBeans.MAX_HEAP_MEMORY, 
RendererHints.displayValue(ByteSizeStrings.metric()));
-            RendererHints.register(UsesJavaMXBeans.COMMITTED_HEAP_MEMORY, 
RendererHints.displayValue(ByteSizeStrings.metric()));
-            RendererHints.register(UsesJavaMXBeans.NON_HEAP_MEMORY_USAGE, 
RendererHints.displayValue(ByteSizeStrings.metric()));
-            RendererHints.register(UsesJavaMXBeans.TOTAL_PHYSICAL_MEMORY_SIZE, 
RendererHints.displayValue(ByteSizeStrings.metric()));
-            RendererHints.register(UsesJavaMXBeans.FREE_PHYSICAL_MEMORY_SIZE, 
RendererHints.displayValue(ByteSizeStrings.metric()));
+        RendererHints.register(UsesJavaMXBeans.USED_HEAP_MEMORY, 
RendererHints.displayValue(ByteSizeStrings.metric()));
+        RendererHints.register(UsesJavaMXBeans.INIT_HEAP_MEMORY, 
RendererHints.displayValue(ByteSizeStrings.metric()));
+        RendererHints.register(UsesJavaMXBeans.MAX_HEAP_MEMORY, 
RendererHints.displayValue(ByteSizeStrings.metric()));
+        RendererHints.register(UsesJavaMXBeans.COMMITTED_HEAP_MEMORY, 
RendererHints.displayValue(ByteSizeStrings.metric()));
+        RendererHints.register(UsesJavaMXBeans.NON_HEAP_MEMORY_USAGE, 
RendererHints.displayValue(ByteSizeStrings.metric()));
+        RendererHints.register(UsesJavaMXBeans.TOTAL_PHYSICAL_MEMORY_SIZE, 
RendererHints.displayValue(ByteSizeStrings.metric()));
+        RendererHints.register(UsesJavaMXBeans.FREE_PHYSICAL_MEMORY_SIZE, 
RendererHints.displayValue(ByteSizeStrings.metric()));
 
-            RendererHints.register(UsesJavaMXBeans.START_TIME, 
RendererHints.displayValue(Time.toDateString()));
-            RendererHints.register(UsesJavaMXBeans.UP_TIME, 
RendererHints.displayValue(Duration.millisToStringRounded()));
-            RendererHints.register(UsesJavaMXBeans.PROCESS_CPU_TIME, 
RendererHints.displayValue(Duration.millisToStringRounded()));
-            
RendererHints.register(UsesJavaMXBeans.PROCESS_CPU_TIME_FRACTION_LAST, 
RendererHints.displayValue(MathFunctions.percent(4)));
-            
RendererHints.register(UsesJavaMXBeans.PROCESS_CPU_TIME_FRACTION_IN_WINDOW, 
RendererHints.displayValue(MathFunctions.percent(4)));
-
-            initialized.set(true);
-        }
+        RendererHints.register(UsesJavaMXBeans.START_TIME, 
RendererHints.displayValue(Time.toDateString()));
+        RendererHints.register(UsesJavaMXBeans.UP_TIME, 
RendererHints.displayValue(Duration.millisToStringRounded()));
+        RendererHints.register(UsesJavaMXBeans.PROCESS_CPU_TIME, 
RendererHints.displayValue(Duration.millisToStringRounded()));
+        RendererHints.register(UsesJavaMXBeans.PROCESS_CPU_TIME_FRACTION_LAST, 
RendererHints.displayValue(MathFunctions.percent(4)));
+        
RendererHints.register(UsesJavaMXBeans.PROCESS_CPU_TIME_FRACTION_IN_WINDOW, 
RendererHints.displayValue(MathFunctions.percent(4)));
     }
 
     static {

Reply via email to