Aled Sage created BROOKLYN-599:
----------------------------------
Summary: 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
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[[email protected]: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)