address PR review comments
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/6938922d Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/6938922d Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/6938922d Branch: refs/heads/master Commit: 6938922da2a5e1d9327219e91c219edbbeebe1c0 Parents: b157ff8 Author: Alex Heneveld <[email protected]> Authored: Thu Apr 27 15:31:37 2017 +0100 Committer: Alex Heneveld <[email protected]> Committed: Thu Apr 27 15:31:37 2017 +0100 ---------------------------------------------------------------------- .../java/org/apache/brooklyn/api/typereg/ManagedBundle.java | 3 +++ .../mgmt/persist/BrooklynMementoPersisterToObjectStore.java | 6 +++++- .../core/mgmt/persist/BrooklynPersistenceUtils.java | 2 +- .../core/mgmt/persist/FileBasedStoreObjectAccessor.java | 3 +-- .../apache/brooklyn/core/mgmt/rebind/RebindContextImpl.java | 9 +-------- .../apache/brooklyn/core/mgmt/rebind/RebindIteration.java | 4 +--- 6 files changed, 12 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6938922d/api/src/main/java/org/apache/brooklyn/api/typereg/ManagedBundle.java ---------------------------------------------------------------------- diff --git a/api/src/main/java/org/apache/brooklyn/api/typereg/ManagedBundle.java b/api/src/main/java/org/apache/brooklyn/api/typereg/ManagedBundle.java index 9fe7e8a..4f975b7 100644 --- a/api/src/main/java/org/apache/brooklyn/api/typereg/ManagedBundle.java +++ b/api/src/main/java/org/apache/brooklyn/api/typereg/ManagedBundle.java @@ -24,6 +24,9 @@ import org.apache.brooklyn.api.objs.BrooklynObject; /** Describes an OSGi bundle which Brooklyn manages, including persisting */ public interface ManagedBundle extends BrooklynObject, Rebindable, OsgiBundleWithUrl { + /** A URL-like thing that we can register with the OSGi framework + * to uniquely identify this bundle-instance. + * This typically includes the unique {@link #getId()} of this item. */ String getOsgiUniqueUrl(); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6938922d/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java index ccafcc3..e8bb5fc 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java @@ -704,7 +704,7 @@ public class BrooklynMementoPersisterToObjectStore implements BrooklynMementoPer private void addPersistContentIfManagedBundle(final BrooklynObjectType type, final String id, List<ListenableFuture<?>> futures, final PersistenceExceptionHandler exceptionHandler) { if (type==BrooklynObjectType.MANAGED_BUNDLE) { if (mgmt==null) { - throw new IllegalStateException("Cannot persist bundles without a mangaement context"); + throw new IllegalStateException("Cannot persist bundles without a management context"); } final ManagedBundle mb = ((ManagementContextInternal)mgmt).getOsgiManager().get().getManagedBundles().get(id); if (mb==null) { @@ -719,6 +719,10 @@ public class BrooklynMementoPersisterToObjectStore implements BrooklynMementoPer futures.add( executor.submit(new Runnable() { @Override public void run() { + if (((BasicManagedBundle)mb).getTempLocalFileWhenJustUploaded()==null) { + // someone else persisted this (race) + return; + } persist(type.getSubPathName(), type, id+".jar", com.google.common.io.Files.asByteSource(f), exceptionHandler); ((BasicManagedBundle)mb).setTempLocalFileWhenJustUploaded(null); f.delete(); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6938922d/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynPersistenceUtils.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynPersistenceUtils.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynPersistenceUtils.java index 0899ed1..ca63cce 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynPersistenceUtils.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynPersistenceUtils.java @@ -195,7 +195,7 @@ public class BrooklynPersistenceUtils { OsgiManager osgi = ((LocalManagementContext)mgmt).getOsgiManager().orNull(); if (osgi!=null) { for (ManagedBundle instance: osgi.getManagedBundles().values()) { - result.catalogItem(instance.getId(), serializer.toString(newObjectMemento(instance))); + result.bundle(instance.getId(), serializer.toString(newObjectMemento(instance))); } } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6938922d/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedStoreObjectAccessor.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedStoreObjectAccessor.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedStoreObjectAccessor.java index 1800a05..2028c43 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedStoreObjectAccessor.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/FileBasedStoreObjectAccessor.java @@ -32,7 +32,6 @@ import org.slf4j.LoggerFactory; import com.google.common.base.Charsets; import com.google.common.base.MoreObjects; -import com.google.common.base.Preconditions; import com.google.common.io.ByteSource; import com.google.common.io.Files; @@ -80,7 +79,7 @@ public class FileBasedStoreObjectAccessor implements PersistenceObjectStore.Stor @Override public void put(String val) { - Preconditions.checkNotNull(val, "Illegal attempt to write a null string"); + if (val==null) val = ""; put(ByteSource.wrap(val.getBytes(Charsets.UTF_8))); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6938922d/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindContextImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindContextImpl.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindContextImpl.java index cc301c9..1e9cbba 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindContextImpl.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindContextImpl.java @@ -89,10 +89,7 @@ public class RebindContextImpl implements RebindContext { catalogItems.put(id, catalogItem); } - public void registerBundle(String id, ManagedBundle bundle) { - bundles.put(id, bundle); - } - + // we don't track register/unregister of bundles; it isn't needed as it happens so early public void installBundle(ManagedBundle bundle, InputStream zipInput) { ((LocalManagementContext)mgmt).getOsgiManager().get().installUploadedBundle(bundle, zipInput, true); } @@ -113,10 +110,6 @@ public class RebindContextImpl implements RebindContext { catalogItems.remove(item.getId()); } - public void unregisterBundle(ManagedBundle bundle) { - bundles.remove(bundle.getId()); - } - public void clearCatalogItems() { catalogItems.clear(); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6938922d/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java index 5ed1dd5..34c795c 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java @@ -328,10 +328,8 @@ public abstract class RebindIteration { logRebindingDebug("RebindManager installing bundles: {}", mementoManifest.getBundleIds()); for (ManagedBundleMemento bundleM : mementoManifest.getBundles().values()) { logRebindingDebug("RebindManager installing bundle {}", bundleM.getId()); - try { - InputStream in = bundleM.getJarContent().openStream(); + try (InputStream in = bundleM.getJarContent().openStream()) { rebindContext.installBundle(instantiator.newManagedBundle(bundleM), in); - in.close(); } catch (Exception e) { exceptionHandler.onCreateFailed(BrooklynObjectType.MANAGED_BUNDLE, bundleM.getId(), bundleM.getSymbolicName(), e); }
