linkedin/glu — Issue #115: NPE when creating undeploy/redeploy plan for a model with child/parent relationship
Author: lucasmcgrew
Created: 2012-01-18 20:59:15+00:00
State: open

I'm not entirely sure how to replicate this issue, but quite often when I have a model with service entries that include a parent attribute referencing another service entry, I will get a NullPointerException from the console webapp when creating a redeploy or undeploy plan. For instance:

java.lang.NullPointerException
at org.linkedin.glu.orchestration.engine.delta.impl.ParentChildDeltaStateBuilder.(ParentChildDeltaStateBuilder.java:51)
at org.linkedin.glu.orchestration.engine.delta.impl.MultiDeltaBuilder.processParentChild(MultiDeltaBuilder.java:166)
at org.linkedin.glu.orchestration.engine.delta.impl.MultiDeltaBuilder.createNewExpectedModel(MultiDeltaBuilder.java:147)
at org.linkedin.glu.orchestration.engine.delta.impl.MultiDeltaBuilder.build(MultiDeltaBuilder.java:113)
at org.linkedin.glu.orchestration.engine.delta.impl.DeltaMgrImpl.computeDeltas(DeltaMgrImpl.java:98)
at org.linkedin.glu.orchestration.engine.planner.PlannerServiceImpl.computeDeploymentPlans(PlannerServiceImpl.groovy:153)
at org.linkedin.glu.orchestration.engine.planner.PlannerServiceImpl.this$2$computeDeploymentPlans(PlannerServiceImpl.groovy)
at org.linkedin.glu.orchestration.engine.planner.PlannerServiceImpl$this$2$computeDeploymentPlans$0.callCurrent(Unknown Source)
at org.linkedin.glu.orchestration.engine.planner.PlannerServiceImpl$this$2$computeDeploymentPlans$0.callCurrent(Unknown Source)
at org.linkedin.glu.orchestration.engine.planner.PlannerServiceImpl.computeDeploymentPlans(PlannerServiceImpl.groovy:130)
at org.linkedin.glu.orchestration.engine.planner.PlannerServiceImpl.this$2$computeDeploymentPlans(PlannerServiceImpl.groovy)
at org.linkedin.glu.orchestration.engine.planner.PlannerServiceImpl$this$2$computeDeploymentPlans.callCurrent(Unknown Source)
at org.linkedin.glu.orchestration.engine.planner.PlannerServiceImpl.computeRedeployPlans(PlannerServiceImpl.groovy:278)
at org.linkedin.glu.orchestration.engine.planner.PlannerService$computeRedeployPlans.callCurrent(Unknown Source)
at org.linkedin.glu.orchestration.engine.planner.PlannerService$computeRedeployPlans.callCurrent(Unknown Source)
at org.linkedin.glu.orchestration.engine.planner.PlannerServiceImpl.computeRedeployPlan(PlannerServiceImpl.groovy:285)
at org.linkedin.glu.console.controllers.PlanController$_closure6.doCall(PlanController.groovy:153)
at org.linkedin.glu.console.controllers.PlanController$_closure6.doCall(PlanController.groovy)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:534)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1351)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:473)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:516)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:929)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:403)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:864)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:285)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:116)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:359)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:275)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:343)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:272)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:83)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:473)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:479)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:929)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:403)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:864)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:151)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114)
at org.eclipse.jetty.server.Server.handle(Server.java:352)
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596)
at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1068)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:805)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218)
at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:508)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:451)
at java.lang.Thread.run(Thread.java:662)