Uploaded image for project: 'Brooklyn'
  1. Brooklyn
  2. BROOKLYN-296

Adding catalog item with invalid location causes rebind error

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • 0.9.0
    • None

    Description

      One can deploy an invalid catalog item (that references a non-existing location). Unfortunately when you next restart the Brooklyn server, it will fail with a rebind error!

      There are two things we should perhaps do for this:
      1. Don't allow the initial catalog item to be added (giving a nice error message about it);
      2. Allow rebind to continue, with just a warning (e.g. in case the error comes about because someone has subsequently explicitly deleted the required lcoation definition).

      For example, add the catalog item below:

      brooklyn.catalog:
        version: 1.0.0
        items:
        - id: entity-with-location
          item:
            type: org.apache.brooklyn.entity.machine.MachineEntity
            location: location-does-not-exist
      

      When adding it, you'll see a sensible warning like that below (but it will still add it):

      2016-06-08 21:30:41,776 WARN  o.a.b.r.t.CatalogTransformer [brooklyn-jetty-server-8082-qtp1308106248-32]: Unable to create spec for CatalogEntityItemDto[entity-with-location:1.0.0/null]: java.lang.IllegalStateException: Transformer for Brooklyn OASIS CAMP interpreter gave an error creating this plan: Unknown location 'location-does-not-exist' (with retry)
      java.lang.IllegalStateException: Transformer for Brooklyn OASIS CAMP interpreter gave an error creating this plan: Unknown location 'location-does-not-exist' (with retry)
              at org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:52) ~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:26) ~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.util.guava.Maybe$Absent.getException(Maybe.java:276) ~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.util.guava.Maybe$Absent.get(Maybe.java:273) ~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.internalCreateSpecLegacy(BasicBrooklynCatalog.java:332) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.createSpec(BasicBrooklynCatalog.java:308) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.rest.transform.CatalogTransformer.catalogEntitySummary(CatalogTransformer.java:81) [org.apache.brooklyn-brooklyn-rest-resources-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.rest.transform.CatalogTransformer.catalogItemSummary(CatalogTransformer.java:117) [org.apache.brooklyn-brooklyn-rest-resources-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.rest.resources.CatalogResource.create(CatalogResource.java:119) [org.apache.brooklyn-brooklyn-rest-resources-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_71]
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_71]
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_71]
              at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_71]
              at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180) [org.apache.cxf-cxf-core-3.1.4.jar:3.1.4]
              at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) [org.apache.cxf-cxf-core-3.1.4.jar:3.1.4]
              at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:200) [org.apache.cxf-cxf-rt-frontend-jaxrs-3.1.4.jar:3.1.4]
              at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:99) [org.apache.cxf-cxf-rt-frontend-jaxrs-3.1.4.jar:3.1.4]
              at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) [org.apache.cxf-cxf-core-3.1.4.jar:3.1.4]
              at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96) [org.apache.cxf-cxf-core-3.1.4.jar:3.1.4]
              at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) [org.apache.cxf-cxf-core-3.1.4.jar:3.1.4]
              at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [org.apache.cxf-cxf-core-3.1.4.jar:3.1.4]
              at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:251) [org.apache.cxf-cxf-rt-transports-http-3.1.4.jar:3.1.4]
              at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) [org.apache.cxf-cxf-rt-transports-http-3.1.4.jar:3.1.4]
              at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) [org.apache.cxf-cxf-rt-transports-http-3.1.4.jar:3.1.4]
              at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) [org.apache.cxf-cxf-rt-transports-http-3.1.4.jar:3.1.4]
              at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180) [org.apache.cxf-cxf-rt-transports-http-3.1.4.jar:3.1.4]
              at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:293) [org.apache.cxf-cxf-rt-transports-http-3.1.4.jar:3.1.4]
              at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:212) [org.apache.cxf-cxf-rt-transports-http-3.1.4.jar:3.1.4]
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [javax.servlet-javax.servlet-api-3.1.0.jar:3.1.0]
              at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:268) [org.apache.cxf-cxf-rt-transports-http-3.1.4.jar:3.1.4]
              at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808) [org.eclipse.jetty-jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) [org.eclipse.jetty-jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.apache.brooklyn.rest.filter.LoggingFilter.doFilter(LoggingFilter.java:91) [org.apache.brooklyn-brooklyn-rest-server-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [org.eclipse.jetty-jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.apache.brooklyn.rest.filter.RequestTaggingFilter.doFilter(RequestTaggingFilter.java:51) [org.apache.brooklyn-brooklyn-rest-server-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [org.eclipse.jetty-jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [org.eclipse.jetty-jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:542) [org.eclipse.jetty-jetty-security-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [org.eclipse.jetty-jetty-servlet-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.Server.handle(Server.java:499) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [org.eclipse.jetty-jetty-server-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [org.eclipse.jetty-jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [org.eclipse.jetty-jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730]
              at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [org.eclipse.jetty-jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730]
              at java.lang.Thread.run(Thread.java:745) [na:1.7.0_71]
      Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: 
              at org.apache.brooklyn.util.exceptions.Exceptions.create(Exceptions.java:385) ~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.plan.PlanToSpecFactory.attemptWithLoaders(PlanToSpecFactory.java:146) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.plan.PlanToSpecFactory.attemptWithLoaders(PlanToSpecFactory.java:118) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.internalCreateSpecLegacy(BasicBrooklynCatalog.java:326) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              ... 49 common frames omitted
      Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: Transformer for Brooklyn OASIS CAMP interpreter gave an error creating this plan: Unknown location 'location-does-not-exist' (with retry)
              at org.apache.brooklyn.core.plan.PlanToSpecFactory.attemptWithLoaders(PlanToSpecFactory.java:137) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              ... 51 common frames omitted
      Caused by: org.apache.brooklyn.util.exceptions.UserFacingException: Unknown location 'location-does-not-exist' (with retry)
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlLocationResolver.resolveLocation(BrooklynYamlLocationResolver.java:145) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlLocationResolver.resolveLocationFromString(BrooklynYamlLocationResolver.java:113) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlLocationResolver.resolveLocations(BrooklynYamlLocationResolver.java:62) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynComponentTemplateResolver.populateSpec(BrooklynComponentTemplateResolver.java:238) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynComponentTemplateResolver.resolveSpec(BrooklynComponentTemplateResolver.java:185) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynAssemblyTemplateInstantiator.buildTemplateServicesAsSpecs(BrooklynAssemblyTemplateInstantiator.java:114) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynAssemblyTemplateInstantiator.createServiceSpecs(BrooklynAssemblyTemplateInstantiator.java:73) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynAssemblyTemplateInstantiator.createApplicationSpec(BrooklynAssemblyTemplateInstantiator.java:90) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.CampResolver.createEntitySpecFromServicesBlock(CampResolver.java:141) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.CampResolver.createSpecFromFull(CampResolver.java:110) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.CampToSpecTransformer.createCatalogSpec(CampToSpecTransformer.java:102) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog$1.apply(BasicBrooklynCatalog.java:329) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog$1.apply(BasicBrooklynCatalog.java:326) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.plan.PlanToSpecFactory.attemptWithLoaders(PlanToSpecFactory.java:126) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              ... 51 common frames omitted
      

      On rebind, you'll see an error like that below, and the web-console will report "Warning! This Brooklyn server has errors":

      2016-06-08 21:31:05,211 ERROR o.a.b.c.c.i.CatalogInitialization [brooklyn-execmanager-iIo2g8wM-0]: Error loading catalog item 'org.apache.brooklyn.core.catalog.internal.CatalogItemDo[CatalogEntityItemDto[entity-with-location:1.0.0/null]]': Transformer for Brooklyn OASIS CAMP interpreter gave an error creating this plan: Unknown location 'location-does-not-exist'
      2016-06-08 21:31:05,220 DEBUG o.a.b.c.c.i.CatalogInitialization [brooklyn-execmanager-iIo2g8wM-0]: Trace for error loading catalog item 'org.apache.brooklyn.core.catalog.internal.CatalogItemDo[CatalogEntityItemDto[entity-with-location:1.0.0/null]]': Transformer for Brooklyn OASIS CAMP interpreter gave an error creating this plan: Unknown location 'location-does-not-exist'
      java.lang.IllegalStateException: Transformer for Brooklyn OASIS CAMP interpreter gave an error creating this plan: Unknown location 'location-does-not-exist'
              at org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:52) ~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.util.guava.IllegalStateExceptionSupplier.get(IllegalStateExceptionSupplier.java:26) ~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.util.guava.Maybe$Absent.getException(Maybe.java:276) ~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.util.guava.Maybe$Absent.get(Maybe.java:273) ~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.internalCreateSpecLegacy(BasicBrooklynCatalog.java:332) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.createSpec(BasicBrooklynCatalog.java:308) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.cli.Main$LaunchCommand.confirmCatalog(Main.java:645) ~[org.apache.brooklyn-brooklyn-cli-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.cli.Main$LaunchCommand$1.apply(Main.java:433) [org.apache.brooklyn-brooklyn-cli-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.cli.Main$LaunchCommand$1.apply(Main.java:423) [org.apache.brooklyn-brooklyn-cli-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateViaCallbacks(CatalogInitialization.java:382) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateCatalogImpl(CatalogInitialization.java:237) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateCatalog(CatalogInitialization.java:199) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.rebuildCatalog(RebindIteration.java:422) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.doRun(RebindIteration.java:238) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.mgmt.rebind.InitialFullRebindIteration.doRun(InitialFullRebindIteration.java:69) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:265) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:558) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:508) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:506) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:519) [org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_71]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_71]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_71]
              at java.lang.Thread.run(Thread.java:745) [na:1.7.0_71]
      Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: 
              at org.apache.brooklyn.util.exceptions.Exceptions.create(Exceptions.java:385) ~[org.apache.brooklyn-brooklyn-utils-common-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.plan.PlanToSpecFactory.attemptWithLoaders(PlanToSpecFactory.java:146) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.plan.PlanToSpecFactory.attemptWithLoaders(PlanToSpecFactory.java:118) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.internalCreateSpecLegacy(BasicBrooklynCatalog.java:326) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              ... 19 common frames omitted
      Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: Transformer for Brooklyn OASIS CAMP interpreter gave an error creating this plan: Unknown location 'location-does-not-exist'
              at org.apache.brooklyn.core.plan.PlanToSpecFactory.attemptWithLoaders(PlanToSpecFactory.java:137) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              ... 21 common frames omitted
      Caused by: org.apache.brooklyn.util.exceptions.UserFacingException: Unknown location 'location-does-not-exist'
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlLocationResolver.resolveLocation(BrooklynYamlLocationResolver.java:145) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlLocationResolver.resolveLocationFromString(BrooklynYamlLocationResolver.java:113) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlLocationResolver.resolveLocations(BrooklynYamlLocationResolver.java:62) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynComponentTemplateResolver.populateSpec(BrooklynComponentTemplateResolver.java:238) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynComponentTemplateResolver.resolveSpec(BrooklynComponentTemplateResolver.java:185) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynAssemblyTemplateInstantiator.buildTemplateServicesAsSpecs(BrooklynAssemblyTemplateInstantiator.java:114) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynAssemblyTemplateInstantiator.createServiceSpecs(BrooklynAssemblyTemplateInstantiator.java:73) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynAssemblyTemplateInstantiator.createApplicationSpec(BrooklynAssemblyTemplateInstantiator.java:90) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.CampResolver.createEntitySpecFromServicesBlock(CampResolver.java:141) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.CampResolver.createSpecFromFull(CampResolver.java:110) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.camp.brooklyn.spi.creation.CampToSpecTransformer.createCatalogSpec(CampToSpecTransformer.java:102) ~[org.apache.brooklyn-brooklyn-camp-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog$1.apply(BasicBrooklynCatalog.java:329) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog$1.apply(BasicBrooklynCatalog.java:326) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              at org.apache.brooklyn.core.plan.PlanToSpecFactory.attemptWithLoaders(PlanToSpecFactory.java:126) ~[org.apache.brooklyn-brooklyn-core-0.10.0-SNAPSHOT.jar:0.10.0-SNAPSHOT]
              ... 21 common frames omitted
      

      The persisted state will have a file like:

      <catalogItem>
        <brooklynVersion>0.10.0-SNAPSHOT</brooklynVersion>
        <type>org.apache.brooklyn.core.catalog.internal.CatalogEntityItemDto</type>
        <id>entity-with-location:1.0.0</id>
        <catalogItemId>entity-with-location:1.0.0</catalogItemId>
        <registeredTypeName>entity-with-location</registeredTypeName>
        <version>1.0.0</version>
        <planYaml>services:
      - type: org.apache.brooklyn.entity.machine.MachineEntity
        location: location-does-not-exist</planYaml>
        <libraries class="ImmutableList"/>
        <catalogItemType>ENTITY</catalogItemType>
        <catalogItemJavaType>org.apache.brooklyn.api.entity.Entity</catalogItemJavaType>
        <specType>org.apache.brooklyn.api.entity.EntitySpec</specType>
        <deprecated>false</deprecated>
        <disabled>false</disabled>
      </catalogItem>
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            aled.sage Aled Sage
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: