You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sv...@apache.org on 2017/03/02 12:16:02 UTC

[01/10] brooklyn-server git commit: attempt to fix non-det failures by forcing a persist

Repository: brooklyn-server
Updated Branches:
  refs/heads/master 340fdc9b5 -> b3397aaf0


attempt to fix non-det failures by forcing a persist


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

Branch: refs/heads/master
Commit: 7503519b89fd78b828c53261b29391994848f790
Parents: 49f8a2f
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Feb 16 09:09:33 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Mar 1 08:54:54 2017 +0000

----------------------------------------------------------------------
 .../brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java    | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/7503519b/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java b/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
index b1f0430..3ae2155 100644
--- a/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
+++ b/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
@@ -121,6 +121,7 @@ public class CleanOrphanedLocationsIntegrationTest extends AbstractCleanOrphaned
         PersistenceExceptionHandler persistenceExceptionHandler = PersistenceExceptionHandlerImpl.builder().build();
         ((RebindManagerImpl) rebindManager).setPeriodicPersistPeriod(Duration.ONE_SECOND);
         rebindManager.setPersister(persister, persistenceExceptionHandler);
+        ((RebindManagerImpl) rebindManager).forcePersistNow();
     }
 
     @Test


[10/10] brooklyn-server git commit: Closes #560

Posted by sv...@apache.org.
Closes #560

Attempted non-determinate test fixes

Prompted by the following (from https://builds.apache.org/job/brooklyn-server-pull-requests/1730/ ):

```
Test Result (3 failures / +3)

org.apache.brooklyn.launcher.CleanOrphanedLocationsIntegrationTest.testCleanedCopiedPersistedState
org.apache.brooklyn.launcher.CleanOrphanedLocationsIntegrationTest.testSelectionWithOrphanedLocationsInData
org.apache.brooklyn.launcher.BrooklynLauncherTest.testErrorsCaughtByApiAndRestApiWorks
```

The first two have been observed in several places, and might be fixed by the first commit here.  The second one is less frequent but the second commit here might help and should improve logging.


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

Branch: refs/heads/master
Commit: b3397aaf08e0ba1d43cc989699850e2892f41c78
Parents: 340fdc9 0cfc27b
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Thu Mar 2 14:15:52 2017 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Mar 2 14:15:52 2017 +0200

----------------------------------------------------------------------
 .../catalog/internal/BasicBrooklynCatalog.java  |  2 +-
 .../impl/DeleteOrphanedStateTransformer.java    |  8 ++---
 .../brooklyn/util/core/file/ArchiveUtils.java   | 29 ++++++++++++++--
 .../brooklyn/util/core/osgi/BundleMaker.java    | 35 +++++++++-----------
 .../brooklyn/launcher/common/BasicLauncher.java |  6 ++--
 .../brooklyn/launcher/BrooklynLauncher.java     |  2 +-
 .../brooklyn/launcher/BrooklynWebServer.java    | 12 ++++++-
 .../brooklyn/launcher/BrooklynLauncherTest.java |  2 +-
 .../CleanOrphanedLocationsIntegrationTest.java  | 27 +++++++++++++--
 .../brooklyn/launcher/WebAppRunnerTest.java     | 34 ++++++++-----------
 .../util/javalang/LoadedClassLoader.java        | 10 +++++-
 .../apache/brooklyn/util/net/Networking.java    |  8 +++--
 .../java/org/apache/brooklyn/util/os/Os.java    |  2 +-
 13 files changed, 118 insertions(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b3397aaf/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------


[06/10] brooklyn-server git commit: a retry and extra logging when bind exception happens

Posted by sv...@apache.org.
a retry and extra logging when bind exception happens

to fix non-det test failures on server, due to bind conflicts


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

Branch: refs/heads/master
Commit: 80322eb15bb91b543584e643496d08f2e4f92039
Parents: 7503519
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Feb 16 09:32:01 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Mar 1 08:54:55 2017 +0000

----------------------------------------------------------------------
 .../apache/brooklyn/launcher/common/BasicLauncher.java |  4 +++-
 .../org/apache/brooklyn/launcher/BrooklynLauncher.java |  2 +-
 .../apache/brooklyn/launcher/BrooklynWebServer.java    | 13 ++++++++++++-
 .../apache/brooklyn/launcher/BrooklynLauncherTest.java |  2 +-
 .../java/org/apache/brooklyn/util/net/Networking.java  |  6 ++++++
 5 files changed, 23 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/80322eb1/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java
----------------------------------------------------------------------
diff --git a/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java b/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java
index 7b16184..d098c1d 100644
--- a/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java
+++ b/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java
@@ -46,7 +46,6 @@ import org.apache.brooklyn.core.catalog.internal.CatalogInitialization;
 import org.apache.brooklyn.core.entity.Attributes;
 import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.entity.StartableApplication;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.entity.trait.Startable;
 import org.apache.brooklyn.core.internal.BrooklynProperties;
 import org.apache.brooklyn.core.mgmt.EntityManagementUtils;
@@ -426,7 +425,10 @@ public class BasicLauncher<T extends BasicLauncher<T>> {
         CatalogInitialization catInit = ((ManagementContextInternal)managementContext).getCatalogInitialization();
 
         markCatalogStartingUp(catInit);
+        
+        // note: web console is started by subclass overriding this method
         startingUp();
+        
         initCamp();
         handlePersistence();
         populateCatalog(catInit);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/80322eb1/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java
----------------------------------------------------------------------
diff --git a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java
index 67ad368..1dea657 100644
--- a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java
+++ b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynLauncher.java
@@ -326,7 +326,7 @@ public class BrooklynLauncher extends BasicLauncher<BrooklynLauncher> {
             webServer.start();
 
         } catch (Exception e) {
-            LOG.warn("Failed to start Brooklyn web-console (rethrowing): " + Exceptions.collapseText(e));
+            LOG.warn("Failed to start Brooklyn web-console (rethrowing) on "+bindAddress+" (port constraint "+port+"): " + Exceptions.collapseText(e));
             throw new FatalRuntimeException("Failed to start Brooklyn web-console: " + Exceptions.collapseText(e), e);
         }
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/80322eb1/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
----------------------------------------------------------------------
diff --git a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
index 1377e41..e5c6b15 100644
--- a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
+++ b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.launcher;
 
 import java.io.File;
 import java.io.InputStream;
+import java.net.BindException;
 import java.net.InetAddress;
 import java.net.URI;
 import java.security.KeyPair;
@@ -82,6 +83,8 @@ import org.apache.brooklyn.util.os.Os;
 import org.apache.brooklyn.util.stream.Streams;
 import org.apache.brooklyn.util.text.Identifiers;
 import org.apache.brooklyn.util.text.Strings;
+import org.apache.brooklyn.util.time.Duration;
+import org.apache.brooklyn.util.time.Time;
 import org.apache.brooklyn.util.web.ContextHandlerCollectionHotSwappable;
 import org.eclipse.jetty.http.HttpVersion;
 import org.eclipse.jetty.jaas.JAASLoginService;
@@ -447,7 +450,15 @@ public class BrooklynWebServer {
         rootContext.setTempDirectory(Os.mkdirs(new File(webappTempDir, "war-root")));
 
         server.setHandler(handlers);
-        server.start();
+        try {
+            server.start();
+        } catch (BindException e) {
+            // port discovery routines may take some time to clear, e.g. 250ms for SO_TIMEOUT
+            // tests fail because of this; see if adding a delay improves things
+            log.warn("Initial server start-up failed binding (retrying after a delay): "+e);
+            Time.sleep(Duration.millis(500));
+            server.start();
+        }
         //reinit required because some webapps (eg grails) might wipe our language extension bindings
         BrooklynInitialization.reinitAll();
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/80322eb1/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java
----------------------------------------------------------------------
diff --git a/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java b/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java
index c3db7ad..72f389e 100644
--- a/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java
+++ b/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java
@@ -293,7 +293,7 @@ public class BrooklynLauncherTest {
                 }))
                 .installSecurityFilter(false)
                 .start();
-        // such an error should be thrown, then caught in this calling thread
+        // 'deliberate-exception' error above should be thrown, then caught in this calling thread
         ManagementContext mgmt = launcher.getServerDetails().getManagementContext();
         Assert.assertFalse( ((ManagementContextInternal)mgmt).errors().isEmpty() );
         Assert.assertTrue( ((ManagementContextInternal)mgmt).errors().get(0).toString().contains("deliberate"), ""+((ManagementContextInternal)mgmt).errors() );

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/80322eb1/utils/common/src/main/java/org/apache/brooklyn/util/net/Networking.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/net/Networking.java b/utils/common/src/main/java/org/apache/brooklyn/util/net/Networking.java
index 4e97d5c..028b3c8 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/net/Networking.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/net/Networking.java
@@ -103,12 +103,14 @@ public class Networking {
                 ss = new ServerSocket();
                 ss.setSoTimeout(250);
                 ss.setReuseAddress(true);
+                if (!ss.getReuseAddress()) { logReuseAddressNotSupported(); }
                 ss.bind(new InetSocketAddress(localAddress, port));
 
                 // Check UDP port
                 ds = new DatagramSocket(null);
                 ds.setSoTimeout(250);
                 ds.setReuseAddress(true);
+                if (!ds.getReuseAddress()) { logReuseAddressNotSupported(); }
                 ds.bind(new InetSocketAddress(localAddress, port));
             } catch (IOException e) {
                 if (log.isTraceEnabled()) log.trace("Failed binding to " + localAddress + " : " + port, e);
@@ -176,6 +178,10 @@ public class Networking {
         }
     }
 
+    private static void logReuseAddressNotSupported() {
+        log.debug("Socket reuse-address not supported on this platform; port discovery may mis-report available ports");
+    }
+    
     /**
      * Bind to the specified IP, but let the OS pick a port.
      * If the operation fails we know it's not because of


[03/10] brooklyn-server git commit: make a test more flexible about which port it uses

Posted by sv...@apache.org.
make a test more flexible about which port it uses


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

Branch: refs/heads/master
Commit: 0cea488186cf6a797c9be836e6269f862d7923c6
Parents: 3eb74a5
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Feb 18 01:35:48 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Mar 1 08:54:55 2017 +0000

----------------------------------------------------------------------
 .../brooklyn/launcher/WebAppRunnerTest.java     | 26 +++++++++-----------
 1 file changed, 11 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0cea4881/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
----------------------------------------------------------------------
diff --git a/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java b/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
index a53ea95..8c5baa7 100644
--- a/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
+++ b/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
@@ -28,9 +28,9 @@ import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.internal.BrooklynProperties;
 import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
 import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
-import org.apache.brooklyn.test.HttpTestUtils;
 import org.apache.brooklyn.test.support.TestResourceUnavailableException;
 import org.apache.brooklyn.util.collections.MutableMap;
+import org.apache.brooklyn.util.http.HttpAsserts;
 import org.apache.brooklyn.util.net.Networking;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -92,24 +92,22 @@ public class WebAppRunnerTest {
     }
 
     public static void assertBrooklynEventuallyAt(String url) {
-        HttpTestUtils.assertContentEventuallyContainsText(url, "Brooklyn Web Console");
+        HttpAsserts.assertContentEventuallyContainsText(url, "Brooklyn Web Console");
     }
 
     @Test
     public void testStartSecondaryWar() throws Exception {
         TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), "/hello-world.war");
 
-        if (!Networking.isPortAvailable(8090))
-            fail("Another process is using port 8090 which is required for this test.");
         BrooklynWebServer server = createWebServer(
-            MutableMap.of("port", 8090, "war", "brooklyn.war", "wars", MutableMap.of("hello", "hello-world.war")) );
+            MutableMap.of("port", "8091+", "war", "brooklyn.war", "wars", MutableMap.of("hello", "hello-world.war")) );
         assertNotNull(server);
         
         try {
             server.start();
 
-            assertBrooklynEventuallyAt("http://localhost:8090/");
-            HttpTestUtils.assertContentEventuallyContainsText("http://localhost:8090/hello",
+            assertBrooklynEventuallyAt("http://localhost:"+server.getActualPort()+"/");
+            HttpAsserts.assertContentEventuallyContainsText("http://localhost:"+server.getActualPort()+"/hello",
                 "This is the home page for a sample application");
 
         } finally {
@@ -121,17 +119,15 @@ public class WebAppRunnerTest {
     public void testStartSecondaryWarAfter() throws Exception {
         TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), "/hello-world.war");
 
-        if (!Networking.isPortAvailable(8090))
-            fail("Another process is using port 8090 which is required for this test.");
-        BrooklynWebServer server = createWebServer(MutableMap.of("port", 8090, "war", "brooklyn.war"));
+        BrooklynWebServer server = createWebServer(MutableMap.of("port", "8091+", "war", "brooklyn.war"));
         assertNotNull(server);
         
         try {
             server.start();
             server.deploy("/hello", "hello-world.war");
 
-            assertBrooklynEventuallyAt("http://localhost:8090/");
-            HttpTestUtils.assertContentEventuallyContainsText("http://localhost:8090/hello",
+            assertBrooklynEventuallyAt("http://localhost:"+server.getActualPort()+"/");
+            HttpAsserts.assertContentEventuallyContainsText("http://localhost:"+server.getActualPort()+"/hello",
                 "This is the home page for a sample application");
 
         } finally {
@@ -154,9 +150,9 @@ public class WebAppRunnerTest {
             details.getWebServer().deploy("/hello2", "hello-world.war");
 
             assertBrooklynEventuallyAt(details.getWebServerUrl());
-            HttpTestUtils.assertContentEventuallyContainsText(details.getWebServerUrl()+"hello", "This is the home page for a sample application");
-            HttpTestUtils.assertContentEventuallyContainsText(details.getWebServerUrl()+"hello2", "This is the home page for a sample application");
-            HttpTestUtils.assertHttpStatusCodeEventuallyEquals(details.getWebServerUrl()+"hello0", 404);
+            HttpAsserts.assertContentEventuallyContainsText(details.getWebServerUrl()+"hello", "This is the home page for a sample application");
+            HttpAsserts.assertContentEventuallyContainsText(details.getWebServerUrl()+"hello2", "This is the home page for a sample application");
+            HttpAsserts.assertHttpStatusCodeEventuallyEquals(details.getWebServerUrl()+"hello0", 404);
 
         } finally {
             details.getWebServer().stop();


[08/10] brooklyn-server git commit: another web-runner fix

Posted by sv...@apache.org.
another web-runner fix


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

Branch: refs/heads/master
Commit: 0cfc27b188cd333b5991183b48693f82f7a8c154
Parents: 1f30e25
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Feb 18 14:15:27 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Mar 1 09:00:33 2017 +0000

----------------------------------------------------------------------
 .../java/org/apache/brooklyn/launcher/WebAppRunnerTest.java  | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0cfc27b1/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
----------------------------------------------------------------------
diff --git a/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java b/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
index 8c5baa7..766fce5 100644
--- a/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
+++ b/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
@@ -19,7 +19,6 @@
 package org.apache.brooklyn.launcher;
 
 import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.fail;
 
 import java.util.List;
 import java.util.Map;
@@ -31,7 +30,6 @@ import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
 import org.apache.brooklyn.test.support.TestResourceUnavailableException;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.http.HttpAsserts;
-import org.apache.brooklyn.util.net.Networking;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.annotations.AfterMethod;
@@ -78,14 +76,12 @@ public class WebAppRunnerTest {
     
     @Test
     public void testStartWar1() throws Exception {
-        if (!Networking.isPortAvailable(8090))
-            fail("Another process is using port 8090 which is required for this test.");
-        BrooklynWebServer server = createWebServer(MutableMap.of("port", 8090));
+        BrooklynWebServer server = createWebServer(MutableMap.of("port", "8091+"));
         assertNotNull(server);
         
         try {
             server.start();
-            assertBrooklynEventuallyAt("http://localhost:8090/");
+            assertBrooklynEventuallyAt("http://localhost:"+server.getActualPort()+"/");
         } finally {
             server.stop();
         }


[04/10] brooklyn-server git commit: clean up method name

Posted by sv...@apache.org.
clean up method name


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

Branch: refs/heads/master
Commit: 33761161af4fe9fcf69509da88bff34b3b8cdb4f
Parents: 73c69c6
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Feb 18 13:11:14 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Mar 1 08:54:55 2017 +0000

----------------------------------------------------------------------
 .../core/catalog/internal/BasicBrooklynCatalog.java       |  2 +-
 .../apache/brooklyn/util/javalang/LoadedClassLoader.java  | 10 +++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/33761161/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
index d6f7fc8..1e5573a 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
@@ -1053,7 +1053,7 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
         log.debug("Adding manual catalog item to "+mgmt+": "+type);
         checkNotNull(type, "type");
         if (manualAdditionsCatalog==null) loadManualAdditionsCatalog();
-        manualAdditionsClasses.addClass(type);
+        manualAdditionsClasses.registerClass(type);
         CatalogItem<?, ?> result = manualAdditionsCatalog.classpath.addCatalogEntry(type);
         
         // Clear spec-cache (in-case overwriting)

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/33761161/utils/common/src/main/java/org/apache/brooklyn/util/javalang/LoadedClassLoader.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/LoadedClassLoader.java b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/LoadedClassLoader.java
index d88a787..69c1b3e 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/LoadedClassLoader.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/LoadedClassLoader.java
@@ -36,10 +36,18 @@ public class LoadedClassLoader extends ClassLoader {
         return result;
     }
 
-    public void addClass(Class<?> clazz) {
+    public void registerClass(Class<?> clazz) {
         loadedClasses.put(clazz.getName(), clazz);
     }
     
+    /** @deprecated since 0.11.0 because there is a private superclass method with the same signature;
+     *  use {@link #registerClass(Class)} instead to avoid confusion
+     */
+    @Deprecated 
+    public void addClass(Class<?> clazz) {
+        registerClass(clazz);
+    }
+    
     // TODO could also add resources
     
 }


[07/10] brooklyn-server git commit: tidy of BundleMaker and associated items to support creating ZIPs

Posted by sv...@apache.org.
tidy of BundleMaker and associated items to support creating ZIPs


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

Branch: refs/heads/master
Commit: b5cb107386c703e7c2e679a2c7d4f7c7d8fe16ec
Parents: 3376116
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Feb 18 13:45:06 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Mar 1 09:00:33 2017 +0000

----------------------------------------------------------------------
 .../brooklyn/util/core/file/ArchiveUtils.java   | 29 ++++++++++++++--
 .../brooklyn/util/core/osgi/BundleMaker.java    | 35 +++++++++-----------
 .../java/org/apache/brooklyn/util/os/Os.java    |  2 +-
 3 files changed, 44 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b5cb1073/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveUtils.java b/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveUtils.java
index b10d7ae..ae01aeb 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveUtils.java
@@ -21,15 +21,19 @@ package org.apache.brooklyn.util.core.file;
 import static java.lang.String.format;
 
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.util.EnumSet;
+import java.util.Enumeration;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.collections.MutableMap;
@@ -42,7 +46,10 @@ import org.apache.brooklyn.util.javalang.StackTraceSimplifier;
 import org.apache.brooklyn.util.net.Urls;
 import org.apache.brooklyn.util.os.Os;
 import org.apache.brooklyn.util.ssh.BashCommands;
+import org.apache.brooklyn.util.stream.Streams;
 import org.apache.brooklyn.util.text.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Preconditions;
@@ -347,4 +354,22 @@ public class ArchiveUtils {
         }
     }
 
+    public static void extractZip(final ZipFile zip, final String targetFolder) {
+        new File(targetFolder).mkdir();
+        Enumeration<? extends ZipEntry> zipFileEntries = zip.entries();
+        while (zipFileEntries.hasMoreElements()) {
+            ZipEntry entry = (ZipEntry) zipFileEntries.nextElement();
+            File destFile = new File(targetFolder, entry.getName());
+            destFile.getParentFile().mkdirs();
+
+            if (!entry.isDirectory()) {
+                try (InputStream in=zip.getInputStream(entry); OutputStream out=new FileOutputStream(destFile)) {
+                    Streams.copy(in, out);
+                } catch (IOException e) {
+                    throw Exceptions.propagate(e);
+                }
+            }
+        }
+    }
+    
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b5cb1073/core/src/main/java/org/apache/brooklyn/util/core/osgi/BundleMaker.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/osgi/BundleMaker.java b/core/src/main/java/org/apache/brooklyn/util/core/osgi/BundleMaker.java
index 2be2612..1cdcff8 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/osgi/BundleMaker.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/osgi/BundleMaker.java
@@ -33,6 +33,8 @@ import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 import java.util.zip.ZipOutputStream;
 
+import javax.annotation.Nonnull;
+
 import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
 import org.apache.brooklyn.util.collections.MutableMap;
@@ -60,16 +62,22 @@ public class BundleMaker {
     private ResourceUtils resources;
     private Class<?> optionalDefaultClassForLoading;
 
-    public BundleMaker(Framework f, ResourceUtils resources) {
+    /** Constructor for use when not expecting to use with a framework */
+    public BundleMaker(@Nonnull ResourceUtils resources) {
+        this.resources = resources;
+    }
+    
+    public BundleMaker(@Nonnull Framework f, @Nonnull ResourceUtils resources) {
         this.framework = f;
         this.resources = resources;
     }
     
-    public BundleMaker(ManagementContext mgmt) {
+    public BundleMaker(@Nonnull ManagementContext mgmt) {
         this( ((LocalManagementContext)mgmt).getOsgiManager().get().getFramework(), ResourceUtils.create() );
     }
 
-    /** if set, this will be used to resolve relative classpath fragments */
+    /** if set, this will be used to resolve relative classpath fragments;
+     * the {@link ResourceUtils} supplied in the constructor must also be with respect to the given class */
     public void setDefaultClassForLoading(Class<?> optionalDefaultClassForLoading) {
         this.optionalDefaultClassForLoading = optionalDefaultClassForLoading;
     }
@@ -91,24 +99,13 @@ public class BundleMaker {
                 path = "classpath:"+path;
             }
             
-            InputStream min;
-            try {
-                min = resources.getResourceFromUrl(Urls.mergePaths(path, MANIFEST_PATH));
-            } catch (RuntimeException e) {
-                Exceptions.propagateIfFatal(e);
-                IOException ioe = Exceptions.getFirstThrowableOfType(e, IOException.class);
-                if (ioe != null && ioe.toString().contains("not found on classpath")) {
-                    min = null;
-                } else {
-                    throw e;
-                }
-            }
-            if (min==null) {
-                zout = new JarOutputStream(new FileOutputStream(f));
-                addUrlItemRecursively(zout, path, path, Predicates.alwaysTrue());
-            } else {
+            if (resources.doesUrlExist(Urls.mergePaths(path, MANIFEST_PATH))) {
+                InputStream min = resources.getResourceFromUrl(Urls.mergePaths(path, MANIFEST_PATH));
                 zout = new JarOutputStream(new FileOutputStream(f), new Manifest(min));
                 addUrlItemRecursively(zout, path, path, Predicates.not(Predicates.equalTo(MANIFEST_PATH)));
+            } else {
+                zout = new JarOutputStream(new FileOutputStream(f));
+                addUrlItemRecursively(zout, path, path, Predicates.alwaysTrue());
             }
             
             Streams.closeQuietly(zout);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b5cb1073/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java b/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java
index 27a2c70..bd28558 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java
@@ -553,7 +553,7 @@ public class Os {
 
     /** creates a temp dir which will be deleted on exit */
     public static File newTempDir(String prefix) {
-        String sanitizedPrefix = (prefix==null ? "" : prefix + "-");
+        String sanitizedPrefix = (prefix==null ? "" : Strings.makeValidFilename(prefix) + "-");
         String tmpParent = tmp();
         
         //With lots of stale temp dirs it is possible to have 


[05/10] brooklyn-server git commit: PR comments, do explicit setReuseAddress(false)

Posted by sv...@apache.org.
PR comments, do explicit setReuseAddress(false)


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

Branch: refs/heads/master
Commit: 3eb74a5667a20f1092b4d426a1d327e5a97d68f7
Parents: 80322eb
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Feb 18 00:54:59 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Mar 1 08:54:55 2017 +0000

----------------------------------------------------------------------
 .../apache/brooklyn/launcher/BrooklynWebServer.java   |  3 +--
 .../java/org/apache/brooklyn/util/net/Networking.java | 14 ++++++--------
 2 files changed, 7 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3eb74a56/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
----------------------------------------------------------------------
diff --git a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
index e5c6b15..b85e79d 100644
--- a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
+++ b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
@@ -453,8 +453,7 @@ public class BrooklynWebServer {
         try {
             server.start();
         } catch (BindException e) {
-            // port discovery routines may take some time to clear, e.g. 250ms for SO_TIMEOUT
-            // tests fail because of this; see if adding a delay improves things
+            // retry once just in case it was some fluke or race
             log.warn("Initial server start-up failed binding (retrying after a delay): "+e);
             Time.sleep(Duration.millis(500));
             server.start();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3eb74a56/utils/common/src/main/java/org/apache/brooklyn/util/net/Networking.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/net/Networking.java b/utils/common/src/main/java/org/apache/brooklyn/util/net/Networking.java
index 028b3c8..79e3739 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/net/Networking.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/net/Networking.java
@@ -66,6 +66,10 @@ public class Networking {
     public static final int MIN_PORT_NUMBER = 1;
     public static final int MAX_PORT_NUMBER = 65535;
 
+    // set this `false` because not all routines that want a port will be as forgiving as reuse_address is;
+    // in some cases it might be preferable for this to be true, if needed we can expand API
+    public static final Boolean SET_REUSE_ADDRESS = false;
+
     // based on http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address
     // but updated to allow leading zeroes
     public static final String VALID_IP_ADDRESS_REGEX = "^((0*[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}(0*[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";
@@ -102,15 +106,13 @@ public class Networking {
                 // Check TCP port
                 ss = new ServerSocket();
                 ss.setSoTimeout(250);
-                ss.setReuseAddress(true);
-                if (!ss.getReuseAddress()) { logReuseAddressNotSupported(); }
+                if (SET_REUSE_ADDRESS!=null) { ss.setReuseAddress(SET_REUSE_ADDRESS); }
                 ss.bind(new InetSocketAddress(localAddress, port));
 
                 // Check UDP port
                 ds = new DatagramSocket(null);
                 ds.setSoTimeout(250);
-                ds.setReuseAddress(true);
-                if (!ds.getReuseAddress()) { logReuseAddressNotSupported(); }
+                if (SET_REUSE_ADDRESS!=null) { ss.setReuseAddress(SET_REUSE_ADDRESS); }
                 ds.bind(new InetSocketAddress(localAddress, port));
             } catch (IOException e) {
                 if (log.isTraceEnabled()) log.trace("Failed binding to " + localAddress + " : " + port, e);
@@ -178,10 +180,6 @@ public class Networking {
         }
     }
 
-    private static void logReuseAddressNotSupported() {
-        log.debug("Socket reuse-address not supported on this platform; port discovery may mis-report available ports");
-    }
-    
     /**
      * Bind to the specified IP, but let the OS pick a port.
      * If the operation fails we know it's not because of


[09/10] brooklyn-server git commit: copy resources to a folder and use that for cleaning orphans

Posted by sv...@apache.org.
copy resources to a folder and use that for cleaning orphans


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

Branch: refs/heads/master
Commit: 1f30e25c7fa4e702f5fd7bee2d19d4b8f30815aa
Parents: b5cb107
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Feb 18 13:20:35 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Mar 1 09:00:33 2017 +0000

----------------------------------------------------------------------
 .../CleanOrphanedLocationsIntegrationTest.java  | 24 +++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1f30e25c/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java b/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
index 0348892..4d59735 100644
--- a/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
+++ b/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.launcher;
 
 import java.io.File;
 import java.util.Set;
+import java.util.zip.ZipFile;
 
 import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.api.mgmt.ha.HighAvailabilityMode;
@@ -41,6 +42,10 @@ import org.apache.brooklyn.core.server.BrooklynServerPaths;
 import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
 import org.apache.brooklyn.test.Asserts;
 import org.apache.brooklyn.util.collections.MutableSet;
+import org.apache.brooklyn.util.core.ResourceUtils;
+import org.apache.brooklyn.util.core.file.ArchiveUtils;
+import org.apache.brooklyn.util.core.osgi.BundleMaker;
+import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.brooklyn.util.javalang.JavaClassNames;
 import org.apache.brooklyn.util.os.Os;
 import org.apache.brooklyn.util.time.Duration;
@@ -67,13 +72,26 @@ public class CleanOrphanedLocationsIntegrationTest extends AbstractCleanOrphaned
     private Set<ManagementContext> mgmts;
     private ManagementContext mgmt;
 
+    private String copyResourcePathToTempPath(String resourcePath) {
+        BundleMaker bm = new BundleMaker(ResourceUtils.create(this));
+        bm.setDefaultClassForLoading(CleanOrphanedLocationsIntegrationTest.class);
+        File jar = bm.createJarFromClasspathDir(resourcePath);
+        File output = Os.newTempDir("brooklyn-test-resouce-from-"+resourcePath);
+        try {
+            ArchiveUtils.extractZip(new ZipFile(jar), output.getAbsolutePath());
+            return output.getAbsolutePath();
+        } catch (Exception e) {
+            throw Exceptions.propagate(e);
+        }
+    }
+    
     @BeforeMethod(alwaysRun = true)
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        persistenceDirWithOrphanedLocations = getClass().getResource(PERSISTED_STATE_PATH_WITH_ORPHANED_LOCATIONS).getFile();
-        persistenceDirWithoutOrphanedLocations = getClass().getResource(PERSISTED_STATE_PATH_WITHOUT_ORPHANED_LOCATIONS).getFile();
-        persistenceDirWithMultipleLocationsOccurrence = getClass().getResource(PERSISTED_STATE_PATH_WITH_MULTIPLE_LOCATIONS_OCCURRENCE).getFile();
+        persistenceDirWithOrphanedLocations = copyResourcePathToTempPath(PERSISTED_STATE_PATH_WITH_ORPHANED_LOCATIONS);
+        persistenceDirWithoutOrphanedLocations = copyResourcePathToTempPath(PERSISTED_STATE_PATH_WITHOUT_ORPHANED_LOCATIONS);
+        persistenceDirWithMultipleLocationsOccurrence = copyResourcePathToTempPath(PERSISTED_STATE_PATH_WITH_MULTIPLE_LOCATIONS_OCCURRENCE);
 
         destinationDir = Os.newTempDir(getClass());
         


[02/10] brooklyn-server git commit: more logging for orphaned bug

Posted by sv...@apache.org.
more logging for orphaned bug


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

Branch: refs/heads/master
Commit: 73c69c628c2444f4c8f5d0857333a17db40df31e
Parents: 0cea488
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Feb 18 12:55:22 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Mar 1 08:54:55 2017 +0000

----------------------------------------------------------------------
 .../transformer/impl/DeleteOrphanedStateTransformer.java     | 8 ++++----
 .../org/apache/brooklyn/launcher/common/BasicLauncher.java   | 2 +-
 .../launcher/CleanOrphanedLocationsIntegrationTest.java      | 2 ++
 3 files changed, 7 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/73c69c62/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/transformer/impl/DeleteOrphanedStateTransformer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/transformer/impl/DeleteOrphanedStateTransformer.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/transformer/impl/DeleteOrphanedStateTransformer.java
index e92750d..04fdef5 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/transformer/impl/DeleteOrphanedStateTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/transformer/impl/DeleteOrphanedStateTransformer.java
@@ -91,10 +91,10 @@ public class DeleteOrphanedStateTransformer extends CompoundTransformer {
         Set<String> enrichersToDelete = Sets.difference(input.getEnrichers().keySet(), enrichersToKeep.keySet());
         Set<String> policiesToDelete = Sets.difference(input.getPolicies().keySet(), policiesToKeep.keySet());
         Set<String> feedsToDelete = Sets.difference(input.getFeeds().keySet(), feedsToKeep.keySet());
-        LOG.info("Deleting {} orphaned location{}: {}", new Object[] {locsToDelete.size(), Strings.s(locsToDelete.size()), locsToDelete});
-        LOG.info("Deleting {} orphaned enricher{}: {}", new Object[] {enrichersToDelete.size(), Strings.s(enrichersToDelete.size()), enrichersToDelete});
-        LOG.info("Deleting {} orphaned polic{}: {}", new Object[] {policiesToDelete.size(), (policiesToDelete.size() == 1 ? "y" : "ies"), policiesToDelete});
-        LOG.info("Deleting {} orphaned feed{}: {}", new Object[] {feedsToDelete.size(), Strings.s(feedsToDelete.size()), feedsToDelete});
+        LOG.info("Deleting {} orphaned location{} (of {}): {}", new Object[] {locsToDelete.size(), Strings.s(locsToDelete.size()), input.getLocations().size(), locsToDelete});
+        LOG.info("Deleting {} orphaned enricher{} (of {}): {}", new Object[] {enrichersToDelete.size(), Strings.s(enrichersToDelete.size()), input.getEnrichers().size(), enrichersToDelete});
+        LOG.info("Deleting {} orphaned polic{} (of {}): {}", new Object[] {policiesToDelete.size(), (policiesToDelete.size() == 1 ? "y" : "ies"), input.getPolicies().size(), policiesToDelete});
+        LOG.info("Deleting {} orphaned feed{} (of {}): {}", new Object[] {feedsToDelete.size(), Strings.s(feedsToDelete.size()), input.getFeeds().size(), feedsToDelete});
         
         return BrooklynMementoRawData.builder()
                 .brooklynVersion(input.getBrooklynVersion())

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/73c69c62/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java
----------------------------------------------------------------------
diff --git a/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java b/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java
index d098c1d..5b157a3 100644
--- a/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java
+++ b/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java
@@ -371,7 +371,7 @@ public class BasicLauncher<T extends BasicLauncher<T>> {
             
             ManagementPlaneSyncRecord planeState = managementContext.getHighAvailabilityManager().loadManagementPlaneSyncRecord(true);
             
-            LOG.info("Persisting state to "+destinationDir+(destinationLocationSpec!=null ? " @ "+destinationLocationSpec : ""));
+            LOG.info("Copying persisted state to "+destinationDir+(destinationLocationSpec!=null ? " @ "+destinationLocationSpec : ""));
             PersistenceObjectStore destinationObjectStore = BrooklynPersistenceUtils.newPersistenceObjectStore(
                 managementContext, destinationLocationSpec, destinationDir);
             BrooklynPersistenceUtils.writeMemento(managementContext, memento, destinationObjectStore);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/73c69c62/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java b/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
index 3ae2155..0348892 100644
--- a/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
+++ b/launcher/src/test/java/org/apache/brooklyn/launcher/CleanOrphanedLocationsIntegrationTest.java
@@ -41,6 +41,7 @@ import org.apache.brooklyn.core.server.BrooklynServerPaths;
 import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
 import org.apache.brooklyn.test.Asserts;
 import org.apache.brooklyn.util.collections.MutableSet;
+import org.apache.brooklyn.util.javalang.JavaClassNames;
 import org.apache.brooklyn.util.os.Os;
 import org.apache.brooklyn.util.time.Duration;
 import org.slf4j.Logger;
@@ -147,6 +148,7 @@ public class CleanOrphanedLocationsIntegrationTest extends AbstractCleanOrphaned
 
     @Test
     public void testCleanedCopiedPersistedState() throws Exception {
+        LOG.info(JavaClassNames.niceClassAndMethod()+" taking persistence from "+persistenceDirWithOrphanedLocations);
         BrooklynLauncher launcher = BrooklynLauncher.newInstance()
                 .webconsole(false)
                 .brooklynProperties(OsgiManager.USE_OSGI, false)