jihoonson opened a new issue #6020: Race in taskMaster when the overlord 
becomes the leader
URL: https://github.com/apache/incubator-druid/issues/6020
 
 
   `TaskMaster` has the interfaces to return the variables (`taskRunner`, 
`taskQueue`, etc) which are initialized only when the overlord becomes the 
leader. The code of the interfaces is like this:
   
   ```java
     public Optional<TaskRunner> getTaskRunner()
     {
       if (overlordLeaderSelector.isLeader()) {
         return Optional.of(taskRunner);
       } else {
         return Optional.absent();
       }
     }
   ```
   
   However, `taskRunner` is initialized in 
`DruidLeaderSelector.Listener.becomeLeader()` which is called after the 
overlord becomes the leader, and thus `Optional.of()` throws an NPE. The full 
stack trace is as follows:
   
   ```
   java.lang.NullPointerException
           at 
com.google.common.base.Preconditions.checkNotNull(Preconditions.java:213) 
~[guava-16.0.1.jar:?]
           at com.google.common.base.Optional.of(Optional.java:85) 
~[guava-16.0.1.jar:?]
           at 
io.druid.indexing.overlord.TaskMaster.getTaskRunner(TaskMaster.java:214) 
~[druid-indexing-service-0.12.1-iap8.jar:0.12.1-iap8]
           at 
io.druid.indexing.overlord.http.OverlordResource.getWorkers(OverlordResource.java:810)
 ~[druid-indexing-service-0.12.1-iap8.jar:0.12.1-iap8]
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:1.8.0_163]
           at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:1.8.0_163]
           at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_163]
           at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_163]
           at 
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
 ~[jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
 ~[jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
 ~[jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
 ~[jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
 ~[jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
 ~[jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
 ~[jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
 ~[jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
 ~[jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
 [jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
 [jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
 [jersey-server-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
 [jersey-servlet-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
 [jersey-servlet-1.19.3.jar:1.19.3]
           at 
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
 [jersey-servlet-1.19.3.jar:1.19.3]
           at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
[javax.servlet-api-3.1.0.jar:3.1.0]
           at 
com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:286)
 [guice-servlet-4.1.0.jar:?]
           at 
com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:276)
 [guice-servlet-4.1.0.jar:?]
           at 
com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:181) 
[guice-servlet-4.1.0.jar:?]
           at 
com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
 [guice-servlet-4.1.0.jar:?]
           at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
 [guice-servlet-4.1.0.jar:?]
           at 
com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120)
 [guice-servlet-4.1.0.jar:?]
           at 
com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:135) 
[guice-servlet-4.1.0.jar:?]
           at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
 [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
io.druid.server.http.RedirectFilter.doFilter(RedirectFilter.java:72) 
[druid-server-0.12.1-iap8.jar:0.12.1-iap8]
           at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
 [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
io.druid.server.security.PreResponseAuthorizationCheckFilter.doFilter(PreResponseAuthorizationCheckFilter.java:84)
 [druid-server-0.12.1-iap8.jar:0.12.1-iap8]
           at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
 [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
io.druid.server.security.AllowOptionsResourceFilter.doFilter(AllowOptionsResourceFilter.java:76)
 [druid-server-0.12.1-iap8.jar:0.12.1-iap8]
           at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
 [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
io.imply.security.ImplyAuthenticator$ImplyAuthenticationFilter.doFilter(ImplyAuthenticator.java:149)
 [imply-druid-security-0.12.0.3.jar:?]
           at 
io.druid.server.security.AuthenticationWrappingFilter.doFilter(AuthenticationWrappingFilter.java:60)
 [druid-server-0.12.1-iap8.jar:0.12.1-iap8]
           at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
 [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
io.druid.security.basic.authentication.BasicHTTPAuthenticator$BasicHTTPAuthenticationFilter.doFilter(BasicHTTPAuthenticator.java:162)
 [druid-basic-security-0.12.1-iap8.jar:0.12.1-iap8]
           at 
io.druid.server.security.AuthenticationWrappingFilter.doFilter(AuthenticationWrappingFilter.java:60)
 [druid-server-0.12.1-iap8.jar:0.12.1-iap8]
           at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
 [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
io.druid.server.security.SecuritySanityCheckFilter.doFilter(SecuritySanityCheckFilter.java:86)
 [druid-server-0.12.1-iap8.jar:0.12.1-iap8]
           at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
 [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582) 
[jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:224)
 [jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
 [jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) 
[jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
 [jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
 [jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:493) 
[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) 
[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) 
[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at org.eclipse.jetty.server.Server.handle(Server.java:534) 
[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) 
[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) 
[jetty-server-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
 [jetty-io-9.3.19.v20170502.jar:9.3.19.v20170502]
           at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108) 
[jetty-io-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:240) 
[jetty-io-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
 [jetty-io-9.3.19.v20170502.jar:9.3.19.v20170502]
           at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108) 
[jetty-io-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) 
[jetty-io-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
 [jetty-util-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
 [jetty-util-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
 [jetty-util-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
 [jetty-util-9.3.19.v20170502.jar:9.3.19.v20170502]
           at 
org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) 
[jetty-util-9.3.19.v20170502.jar:9.3.19.v20170502]
           at java.lang.Thread.run(Thread.java:748) [?:1.8.0_163]
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@druid.apache.org
For additional commands, e-mail: dev-h...@druid.apache.org

Reply via email to