[ https://issues.apache.org/jira/browse/BROOKLYN-599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16605544#comment-16605544 ]
ASF GitHub Bot commented on BROOKLYN-599: ----------------------------------------- Github user asfgit closed the pull request at: https://github.com/apache/brooklyn-server/pull/985 > Brooklyn DSL fails if unrelated entity getParent() throws exception > ------------------------------------------------------------------- > > Key: BROOKLYN-599 > URL: https://issues.apache.org/jira/browse/BROOKLYN-599 > Project: Brooklyn > Issue Type: Bug > Affects Versions: 0.12.0 > Reporter: Aled Sage > Priority: Major > > If an entity has a badly implemented {{getParent()}} method (e.g. that throws > a {{ClassCastException}}), then it can break other unrelated entities that > try to use the brooklyn DSL. > I came across this error while testing rebind of lots of different entity > types. > I tried to deploy: > {noformat} > services: > - type: org.apache.brooklyn.entity.messaging.qpid.QpidQueue > {noformat} > I then tried to deploy a blueprint which uses > {{$brooklyn:entity("...").attributeWhenReady("...")}} > The DSL resolution calls {{LocalEntityManager.getAllEntitiesInApplication}}, > which results in the failing call to {{QpidQueue.getParent()}}. > The full exception is shown below: > {noformat} > 2018-09-06T06:45:36,098 DEBUG 348 o.a.b.r.u.WebResourceUtils > [p1122435972-4851] responding 400 Bad Request (Error launching blueprint > (autodetecting): Error resolving Resolving raw value of simple config > loadbalancer.serverpool[ConfigKey:org.apache.brooklyn.api.entity.Group], > $brooklyn:entity("cluster"), in > org.apache.brooklyn.util.core.task.BasicExecutionContext@58dd4fd6([Wrapped[contextEntity:NginxControllerImpl{id=yoftvdvfuj}], > LocalManagementContext[JOHlSRgo-BFD1QQWq]]): com.sun.proxy.$Proxy138 cannot > be cast to org.apache.brooklyn.entity.messaging.qpid.QpidBroker) > 2018-09-06T06:45:36,103 DEBUG 348 o.a.b.r.u.DefaultExceptionMapper > [p1122435972-4851] REST request running as > WebEntitlementContext[admin@127.0.0.1:KXKEUn] threw: {} > javax.ws.rs.WebApplicationException: HTTP 400 Bad Request > at > org.apache.brooklyn.rest.util.WebResourceUtils.throwWebApplicationException(WebResourceUtils.java:81) > [348:org.apache.brooklyn.rest-resources:1.0.0.20180524_1624] > at > org.apache.brooklyn.rest.util.WebResourceUtils.badRequest(WebResourceUtils.java:101) > [348:org.apache.brooklyn.rest-resources:1.0.0.20180524_1624] > at > org.apache.brooklyn.rest.resources.ApplicationResource.createPoly(ApplicationResource.java:419) > [348:org.apache.brooklyn.rest-resources:1.0.0.20180524_1624] > at sun.reflect.GeneratedMethodAccessor244.invoke(Unknown Source) > ~[?:?] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[?:?] > at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?] > at > org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180) > [159:org.apache.cxf.cxf-core:3.1.10] > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) > [159:org.apache.cxf.cxf-core:3.1.10] > at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:189) > [163:org.apache.cxf.cxf-rt-frontend-jaxrs:3.1.10] > at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:99) > [163:org.apache.cxf.cxf-rt-frontend-jaxrs:3.1.10] > at > org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) > [159:org.apache.cxf.cxf-core:3.1.10] > at > org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96) > [159:org.apache.cxf.cxf-core:3.1.10] > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) > [159:org.apache.cxf.cxf-core:3.1.10] > at > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) > [159:org.apache.cxf.cxf-core:3.1.10] > at > org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:262) > [171:org.apache.cxf.cxf-rt-transports-http:3.1.10] > at > org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) > [171:org.apache.cxf.cxf-rt-transports-http:3.1.10] > at > org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) > [171:org.apache.cxf.cxf-rt-transports-http:3.1.10] > at > org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) > [171:org.apache.cxf.cxf-rt-transports-http:3.1.10] > at > org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:180) > [171:org.apache.cxf.cxf-rt-transports-http:3.1.10] > at > org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299) > [171:org.apache.cxf.cxf-rt-transports-http:3.1.10] > at > org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:218) > [171:org.apache.cxf.cxf-rt-transports-http:3.1.10] > at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) > [96:javax.servlet-api:3.1.0] > at > org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274) > [171:org.apache.cxf.cxf-rt-transports-http:3.1.10] > at > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) > [226:org.eclipse.jetty.servlet:9.3.14.v20161028] > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584) > [226:org.eclipse.jetty.servlet:9.3.14.v20161028] > at > org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) > [247:org.ops4j.pax.web.pax-web-jetty:6.0.6] > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > [225:org.eclipse.jetty.server:9.3.14.v20161028] > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) > [223:org.eclipse.jetty.security:9.3.14.v20161028] > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) > [225:org.eclipse.jetty.server:9.3.14.v20161028] > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) > [225:org.eclipse.jetty.server:9.3.14.v20161028] > at > org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284) > [247:org.ops4j.pax.web.pax-web-jetty:6.0.6] > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) > [226:org.eclipse.jetty.servlet:9.3.14.v20161028] > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) > [225:org.eclipse.jetty.server:9.3.14.v20161028] > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) > [225:org.eclipse.jetty.server:9.3.14.v20161028] > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > [225:org.eclipse.jetty.server:9.3.14.v20161028] > at > org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) > [247:org.ops4j.pax.web.pax-web-jetty:6.0.6] > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) > [225:org.eclipse.jetty.server:9.3.14.v20161028] > at org.eclipse.jetty.server.Server.handle(Server.java:534) > [225:org.eclipse.jetty.server:9.3.14.v20161028] > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) > [225:org.eclipse.jetty.server:9.3.14.v20161028] > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) > [225:org.eclipse.jetty.server:9.3.14.v20161028] > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) > [218:org.eclipse.jetty.io:9.3.14.v20161028] > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) > [218:org.eclipse.jetty.io:9.3.14.v20161028] > at > org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) > [218:org.eclipse.jetty.io:9.3.14.v20161028] > at > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) > [228:org.eclipse.jetty.util:9.3.14.v20161028] > at > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) > [228:org.eclipse.jetty.util:9.3.14.v20161028] > at > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) > [228:org.eclipse.jetty.util:9.3.14.v20161028] > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) > [228:org.eclipse.jetty.util:9.3.14.v20161028] > at > org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) > [228:org.eclipse.jetty.util:9.3.14.v20161028] > at java.lang.Thread.run(Thread.java:748) [?:?] > Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: > Error launching blueprint (autodetecting) > at > org.apache.brooklyn.rest.util.WebResourceUtils.throwWebApplicationException(WebResourceUtils.java:78) > ~[348:org.apache.brooklyn.rest-resources:1.0.0.20180524_1624] > ... 48 more > Caused by: java.lang.IllegalArgumentException: Error resolving Resolving raw > value of simple config > loadbalancer.serverpool[ConfigKey:org.apache.brooklyn.api.entity.Group], > $brooklyn:entity("cluster"), in > org.apache.brooklyn.util.core.task.BasicExecutionContext@58dd4fd6([Wrapped[contextEntity:NginxControllerImpl{id=yoftvdvfuj}], > LocalManagementContext[JOHlSRgo-BFD1QQWq]]): com.sun.proxy.$Proxy138 cannot > be cast to org.apache.brooklyn.entity.messaging.qpid.QpidBroker > at > org.apache.brooklyn.util.core.task.ValueResolver.getMaybeInternal(ValueResolver.java:570) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.ValueResolver.getMaybe(ValueResolver.java:324) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.objs.AbstractConfigurationSupportInternal.getNonBlockingResolvingSimple(AbstractConfigurationSupportInternal.java:135) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.objs.AbstractConfigurationSupportInternal.getNonBlocking(AbstractConfigurationSupportInternal.java:84) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.config.ConfigConstraints.validateAll(ConfigConstraints.java:139) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.config.ConfigConstraints.lambda$getViolations$0(ConfigConstraints.java:125) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:150) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:148) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext.runInSameThread(BasicExecutionContext.java:243) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext.get(BasicExecutionContext.java:148) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.config.ConfigConstraints.getViolations(ConfigConstraints.java:123) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.config.ConfigConstraints.assertValid(ConfigConstraints.java:63) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.objs.proxy.InternalEntityFactory.validateDescendantConfig(InternalEntityFactory.java:284) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.objs.proxy.InternalEntityFactory.initEntityAndDescendants(InternalEntityFactory.java:302) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.objs.proxy.InternalEntityFactory.createEntity(InternalEntityFactory.java:166) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.mgmt.internal.LocalEntityManager.createEntity(LocalEntityManager.java:173) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.mgmt.EntityManagementUtils.lambda$createUnstarted$0(EntityManagementUtils.java:92) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:150) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:148) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext.runInSameThread(BasicExecutionContext.java:243) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext.get(BasicExecutionContext.java:148) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.mgmt.EntityManagementUtils.createUnstarted(EntityManagementUtils.java:89) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.rest.resources.ApplicationResource.launch(ApplicationResource.java:335) > ~[348:org.apache.brooklyn.rest-resources:1.0.0.20180524_1624] > at > org.apache.brooklyn.rest.resources.ApplicationResource.createPoly(ApplicationResource.java:415) > ~[348:org.apache.brooklyn.rest-resources:1.0.0.20180524_1624] > ... 46 more > Caused by: java.lang.ClassCastException: com.sun.proxy.$Proxy138 cannot be > cast to org.apache.brooklyn.entity.messaging.qpid.QpidBroker > at > org.apache.brooklyn.entity.messaging.qpid.QpidDestinationImpl.getParent(QpidDestinationImpl.java:52) > ~[?:?] > at > org.apache.brooklyn.entity.messaging.qpid.QpidDestinationImpl.getParent(QpidDestinationImpl.java:36) > ~[?:?] > at > org.apache.brooklyn.core.entity.AbstractEntity.getApplication(AbstractEntity.java:746) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.entity.AbstractEntity.getApplicationId(AbstractEntity.java:772) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.entity.EntityPredicates$ApplicationIdSatisfies.apply(EntityPredicates.java:158) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.entity.EntityPredicates$ApplicationIdSatisfies.apply(EntityPredicates.java:151) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.mgmt.internal.LocalEntityManager.getAllEntitiesInApplication(LocalEntityManager.java:251) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.mgmt.internal.NonDeploymentEntityManager.getAllEntitiesInApplication(NonDeploymentEntityManager.java:200) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$EntityInScopeFinder.callImpl(DslComponent.java:257) > ~[124:org.apache.brooklyn.camp:1.0.0.20180524_1624] > at > org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent$EntityInScopeFinder.getImmediately(DslComponent.java:208) > ~[124:org.apache.brooklyn.camp:1.0.0.20180524_1624] > at > org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent.getImmediately(DslComponent.java:180) > ~[124:org.apache.brooklyn.camp:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext$2.call(BasicExecutionContext.java:324) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext$2.call(BasicExecutionContext.java:320) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext.runInSameThread(BasicExecutionContext.java:243) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext.getImmediately(BasicExecutionContext.java:320) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.ValueResolver.getMaybeInternal(ValueResolver.java:405) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.ValueResolver.getMaybe(ValueResolver.java:324) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.objs.AbstractConfigurationSupportInternal.getNonBlockingResolvingSimple(AbstractConfigurationSupportInternal.java:135) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.objs.AbstractConfigurationSupportInternal.getNonBlocking(AbstractConfigurationSupportInternal.java:84) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.config.ConfigConstraints.validateAll(ConfigConstraints.java:139) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.config.ConfigConstraints.lambda$getViolations$0(ConfigConstraints.java:125) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:150) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:148) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext.runInSameThread(BasicExecutionContext.java:243) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext.get(BasicExecutionContext.java:148) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.config.ConfigConstraints.getViolations(ConfigConstraints.java:123) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.config.ConfigConstraints.assertValid(ConfigConstraints.java:63) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.objs.proxy.InternalEntityFactory.validateDescendantConfig(InternalEntityFactory.java:284) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.objs.proxy.InternalEntityFactory.initEntityAndDescendants(InternalEntityFactory.java:302) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.objs.proxy.InternalEntityFactory.createEntity(InternalEntityFactory.java:166) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.mgmt.internal.LocalEntityManager.createEntity(LocalEntityManager.java:173) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.mgmt.EntityManagementUtils.lambda$createUnstarted$0(EntityManagementUtils.java:92) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:150) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext$1.call(BasicExecutionContext.java:148) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext.runInSameThread(BasicExecutionContext.java:243) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.util.core.task.BasicExecutionContext.get(BasicExecutionContext.java:148) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.core.mgmt.EntityManagementUtils.createUnstarted(EntityManagementUtils.java:89) > ~[127:org.apache.brooklyn.core:1.0.0.20180524_1624] > at > org.apache.brooklyn.rest.resources.ApplicationResource.launch(ApplicationResource.java:335) > ~[348:org.apache.brooklyn.rest-resources:1.0.0.20180524_1624] > at > org.apache.brooklyn.rest.resources.ApplicationResource.createPoly(ApplicationResource.java:415) > ~[348:org.apache.brooklyn.rest-resources:1.0.0.20180524_1624] > ... 46 more > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)