You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/10/19 03:00:00 UTC

[13/16] git commit: code review comments addressed, tests all passing, hurrah

code review comments addressed, tests all passing, hurrah


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/7ccf3ad3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/7ccf3ad3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/7ccf3ad3

Branch: refs/heads/master
Commit: 7ccf3ad38aa89bbbb1bc3d453517e5236d659888
Parents: c0d0775
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Oct 18 13:52:38 2014 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Oct 18 19:33:56 2014 +0100

----------------------------------------------------------------------
 .../entity/rebind/BasicEntityRebindSupport.java |  3 ++-
 .../location/basic/SshMachineLocation.java      |  5 ----
 .../internal/LocalLocationManager.java          | 14 +++++-----
 .../usage/LocationUsageTrackingTest.java        |  6 ++++-
 .../src/main/webapp/assets/tpl/apps/param.html  |  2 +-
 .../main/java/brooklyn/util/net/Networking.java | 27 ++++++++++++--------
 6 files changed, 31 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7ccf3ad3/core/src/main/java/brooklyn/entity/rebind/BasicEntityRebindSupport.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/BasicEntityRebindSupport.java b/core/src/main/java/brooklyn/entity/rebind/BasicEntityRebindSupport.java
index 02ba317..5018320 100644
--- a/core/src/main/java/brooklyn/entity/rebind/BasicEntityRebindSupport.java
+++ b/core/src/main/java/brooklyn/entity/rebind/BasicEntityRebindSupport.java
@@ -161,7 +161,8 @@ public class BasicEntityRebindSupport extends AbstractBrooklynObjectRebindSuppor
                 }
                 
                 try {
-                    // XXX
+                    // TODO don't start feeds here necessarily, if we're in RO mode for instance
+                    // (should refactor enrichers and policies and apply to them)
                     feed.start();
                 } catch (Exception e) {
                     rebindContext.getExceptionHandler().onRebindFailed(BrooklynObjectType.ENTITY, entity, e);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7ccf3ad3/core/src/main/java/brooklyn/location/basic/SshMachineLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/basic/SshMachineLocation.java b/core/src/main/java/brooklyn/location/basic/SshMachineLocation.java
index 2bf81f9..e12348e 100644
--- a/core/src/main/java/brooklyn/location/basic/SshMachineLocation.java
+++ b/core/src/main/java/brooklyn/location/basic/SshMachineLocation.java
@@ -222,11 +222,6 @@ public class SshMachineLocation extends AbstractLocation implements MachineLocat
         usedPorts = (usedPorts != null) ? Sets.newLinkedHashSet(usedPorts) : Sets.<Integer>newLinkedHashSet();
     }
 
-    @Override
-    public void init() {
-        super.init();
-    }
-
     private final transient Object poolCacheMutex = new Object();
     private LoadingCache<Map<String, ?>, Pool<SshTool>> getSshPoolCache() {
         synchronized (poolCacheMutex) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7ccf3ad3/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java b/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
index f1da114..e48f57e 100644
--- a/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
+++ b/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
@@ -262,7 +262,7 @@ public class LocalLocationManager implements LocationManagerInternal {
 
         if (hasBeenReplaced) {
             // we are unmanaging an old instance after having replaced it
-            unmanageNonRecursiveOnlyClearItsFields(loc, mode);
+            unmanageNonRecursiveClearItsFields(loc, mode);
             
             if (mode==ManagementTransitionMode.REBINDING_NO_LONGER_PRIMARY) {
                 // when migrating away, these all need to be called
@@ -276,9 +276,10 @@ public class LocalLocationManager implements LocationManagerInternal {
 
         } else if (mode==ManagementTransitionMode.REBINDING_DESTROYED || mode==ManagementTransitionMode.REBINDING_NO_LONGER_PRIMARY) {
             // we are unmanaging an instance whose primary management is elsewhere (either we were secondary, or we are being demoted)
-            unmanageNonRecursive(loc, mode);
+            unmanageNonRecursiveRemoveFromRecords(loc, mode);
             managementContext.getRebindManager().getChangeListener().onUnmanaged(loc);
             if (managementContext.gc != null) managementContext.gc.onUnmanaged(loc);
+            unmanageNonRecursiveClearItsFields(loc, mode);
             
         } else if (mode==ManagementTransitionMode.DESTROYING) {
             // we are unmanaging an instance either because it is being destroyed (primary), 
@@ -288,7 +289,7 @@ public class LocalLocationManager implements LocationManagerInternal {
             // Need to store all child entities as onManagementStopping removes a child from the parent entity
             recursively(loc, new Predicate<AbstractLocation>() { public boolean apply(AbstractLocation it) {
                 if (shouldSkipUnmanagement(it)) return false;
-                boolean result = unmanageNonRecursive(it, mode);
+                boolean result = unmanageNonRecursiveRemoveFromRecords(it, mode);
                 if (result) {
                     ManagementTransitionMode mode = getLastManagementTransitionMode(it.getId());
                     if (mode==null) {
@@ -300,6 +301,7 @@ public class LocalLocationManager implements LocationManagerInternal {
                     if (!mode.isReadOnly()) recordLocationEvent(it, Lifecycle.DESTROYED);
                     if (managementContext.gc != null) managementContext.gc.onUnmanaged(it);
                 }
+                unmanageNonRecursiveClearItsFields(loc, mode);
                 return result;
             } });
             
@@ -369,7 +371,7 @@ public class LocalLocationManager implements LocationManagerInternal {
         return true;
     }
 
-    private synchronized void unmanageNonRecursiveOnlyClearItsFields(Location loc, ManagementTransitionMode mode) {
+    private synchronized void unmanageNonRecursiveClearItsFields(Location loc, ManagementTransitionMode mode) {
         if (mode==ManagementTransitionMode.DESTROYING) {
             ((AbstractLocation)loc).setParent(null, true);
         } else {
@@ -384,9 +386,7 @@ public class LocalLocationManager implements LocationManagerInternal {
      * Should ensure that the location is no longer managed anywhere, remove from all lists.
      * Returns true if the location has been removed from management; if it was not previously managed (anything else throws exception) 
      */
-    private synchronized boolean unmanageNonRecursive(Location loc, ManagementTransitionMode mode) {
-        unmanageNonRecursiveOnlyClearItsFields(loc, mode);
-        
+    private synchronized boolean unmanageNonRecursiveRemoveFromRecords(Location loc, ManagementTransitionMode mode) {
         Object old = locationsById.remove(loc.getId());
         locationTypes.remove(loc.getId());
         locationModesById.remove(loc.getId());

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7ccf3ad3/software/base/src/test/java/brooklyn/management/usage/LocationUsageTrackingTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/management/usage/LocationUsageTrackingTest.java b/software/base/src/test/java/brooklyn/management/usage/LocationUsageTrackingTest.java
index 1b12ee4..c390b04 100644
--- a/software/base/src/test/java/brooklyn/management/usage/LocationUsageTrackingTest.java
+++ b/software/base/src/test/java/brooklyn/management/usage/LocationUsageTrackingTest.java
@@ -37,6 +37,8 @@ import brooklyn.location.NoMachinesAvailableException;
 import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
 import brooklyn.location.basic.SshMachineLocation;
 import brooklyn.management.usage.LocationUsage.LocationEvent;
+import brooklyn.util.time.Duration;
+import brooklyn.util.time.Time;
 
 import com.google.common.base.Predicates;
 import com.google.common.collect.ImmutableList;
@@ -86,7 +88,7 @@ public class LocationUsageTrackingTest extends BrooklynAppUnitTestSupport {
         long preStop = System.currentTimeMillis();
         app.stop();
         long postStop = System.currentTimeMillis();
-
+        
         Set<LocationUsage> usages2 = mgmt.getUsageManager().getLocationUsage(Predicates.alwaysTrue());
         LocationUsage usage2 = Iterables.getOnlyElement(usages2);
         List<LocationEvent> events2 = usage2.getEvents();
@@ -102,6 +104,8 @@ public class LocationUsageTrackingTest extends BrooklynAppUnitTestSupport {
     }
     
     public static class DynamicLocalhostMachineProvisioningLocation extends LocalhostMachineProvisioningLocation {
+        private static final long serialVersionUID = 4822009936654077946L;
+
         @Override
         public SshMachineLocation obtain(Map<?, ?> flags) throws NoMachinesAvailableException {
             System.out.println("called DynamicLocalhostMachineProvisioningLocation.obtain");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7ccf3ad3/usage/jsgui/src/main/webapp/assets/tpl/apps/param.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/apps/param.html b/usage/jsgui/src/main/webapp/assets/tpl/apps/param.html
index 78ac02b..8a25271 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/apps/param.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/apps/param.html
@@ -28,7 +28,7 @@ under the License.
     <td><div id="selector-container" class="input-medium param-value"></div></td>
     <% } else { %>
     <td><!--  use 1 line textarea so it can be resized -->
-      <textarea class="input-medium param-value" style="height: 18px;"><%= _.escape(defaultValue) %></textarea>
+      <textarea class="input-medium param-value" style="height: 18px;"><%- defaultValue %></textarea>
     </td>
     <% } %>    
 </tr>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7ccf3ad3/utils/common/src/main/java/brooklyn/util/net/Networking.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/net/Networking.java b/utils/common/src/main/java/brooklyn/util/net/Networking.java
index 98cdb85..67dd1c6 100644
--- a/utils/common/src/main/java/brooklyn/util/net/Networking.java
+++ b/utils/common/src/main/java/brooklyn/util/net/Networking.java
@@ -65,17 +65,8 @@ public class Networking {
     public static InetAddress ANY_NIC = getInetAddressWithFixedName(0, 0, 0, 0);
     public static InetAddress LOOPBACK = getInetAddressWithFixedName(127, 0, 0, 1);
         
-    private static boolean loggedLocalhostNotAvailable = false;
     public static boolean isPortAvailable(int port) {
-        try {
-            return isPortAvailable(InetAddress.getByName("localhost"), port);
-        } catch (UnknownHostException e) {
-            if (!loggedLocalhostNotAvailable) {
-                loggedLocalhostNotAvailable = true;
-                log.warn("localhost unavailable during port availability check for "+port+": "+e+"; ignoring, but this may be a sign of network misconfiguration");
-            }
-            return isPortAvailable(null, port);
-        }
+        return isPortAvailable(ANY_NIC, port);
     }
     public static boolean isPortAvailable(InetAddress localAddress, int port) {
         if (port < MIN_PORT_NUMBER || port > MAX_PORT_NUMBER) {
@@ -120,7 +111,21 @@ public class Networking {
         
         if (localAddress==null || ANY_NIC.equals(localAddress)) {
             // sometimes 0.0.0.0 can be bound to even if 127.0.0.1 has the port as in use; check 127.0.0.1 if 0.0.0.0 was requested
-            return isPortAvailable(LOOPBACK, port);
+            Enumeration<NetworkInterface> nis = null;
+            try {
+                nis = NetworkInterface.getNetworkInterfaces();
+            } catch (SocketException e) {
+                throw Exceptions.propagate(e);
+            }
+            while (nis.hasMoreElements()) {
+                NetworkInterface ni = nis.nextElement();
+                Enumeration<InetAddress> as = ni.getInetAddresses();
+                while (as.hasMoreElements()) {
+                    InetAddress a = as.nextElement();
+                    if (!isPortAvailable(a, port))
+                        return false;
+                }
+            }
         }
         
         return true;