You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@slider.apache.org by "Manoj Samel (JIRA)" <ji...@apache.org> on 2017/05/10 20:53:04 UTC
[jira] [Commented] (SLIDER-1227) Component name with 3 "_" gives
NPE in 0.92, is working in 0.80
[ https://issues.apache.org/jira/browse/SLIDER-1227?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16005387#comment-16005387 ]
Manoj Samel commented on SLIDER-1227:
-------------------------------------
I think I found out what causes the NPE above in .92 and why it works in version 0.80
The component name (a.k.a. role name) is "solo___super" i.e. it has 3 "_"
In 0.92, it seems a new concept of "Role Group" is introduced, which was not present in 0.80.
In 0.92 - AgentProviderService.java
private static final String LABEL_MAKER = "___";
...
private String getRoleName(String label) {
int index1 = label.indexOf(LABEL_MAKER);
int index2 = label.lastIndexOf(LABEL_MAKER);
if (index1 == index2) {
return label.substring(index1 + LABEL_MAKER.length());
} else {
return label.substring(index1 + LABEL_MAKER.length(), index2);
}
}
private String getRoleGroup(String label) {
return label.substring(label.lastIndexOf(LABEL_MAKER) + LABEL_MAKER.length());
}
So when the real role name contains 3 "_" e.g. for "solo___super", the getRoleName on container name will return just "solo" and not "solo___super" and that bad role name can cause NPE
Same role name works in 0.80 because in 0.80, there is no concept of roleGroup
In 0.80 - AgentProviderService.java
private String getRoleName(String label) {
return label.substring(label.indexOf(LABEL_MAKER) + LABEL_MAKER.length());
}
so in 0.80, the role name "solo__super" will return correct role name from container label
> Component name with 3 "_" gives NPE in 0.92, is working in 0.80
> ---------------------------------------------------------------
>
> Key: SLIDER-1227
> URL: https://issues.apache.org/jira/browse/SLIDER-1227
> Project: Slider
> Issue Type: Bug
> Components: core
> Affects Versions: Slider 0.92
> Reporter: Manoj Samel
>
> Running slider 0.92 on CDH 5.5.1 (which is Hadoop 2.6), with Kerberos
> I am deploying a application with multiple components. The components start but fail to heart beat to slider AM. The slider AM log shows NPE at container heartbeat URLs as below.
> 2017-04-12 00:44:05,741 [2011871076@qtp-814377348-5] INFO agent.AgentProviderService - Handling registration: responseId=-1
> timestamp=1491957845550
> label=container_e95_1476898378926_91401_01_000003___solo___super
> hostname=node1078
> expectedState=INIT
> actualState=INIT
> appVersion=null
> 2017-04-12 00:44:05,741 [2011871076@qtp-814377348-5] INFO agent.AgentProviderService - label: container_e95_1476898378926_91401_01_000003___solo___super pkg: null
> 2017-04-12 00:44:05,741 [2011871076@qtp-814377348-5] INFO agent.AgentProviderService - Registration response: RegistrationResponse{response=OK, responseId=0, statusCommands=null}
> 2017-04-12 00:44:05,871 [Socket Reader #1 for port 32120] INFO ipc.Server - Auth successful for slideradmin@BIGDATA (auth:SIMPLE)
> 2017-04-12 00:44:05,873 [Socket Reader #1 for port 32120] INFO authorize.ServiceAuthorizationManager - Authorization successful for slideradmin@BIGDATA (auth:TOKEN) for protocol=interface org.apache.slider.server.appmaster.rpc.SliderClusterProtocolPB
> 2017-04-12 00:44:15,749 [1005856666@qtp-814377348-7] ERROR mortbay.log - /ws/v1/slider/agents/container_e95_1476898378926_91401_01_000002___pdx__svt___ten85/heartbeat
> java.lang.NullPointerException
> at org.apache.slider.providers.agent.AgentProviderService.handleHeartBeat(AgentProviderService.java:1090)
> at org.apache.slider.server.appmaster.web.rest.agent.AgentResource.heartbeat(AgentResource.java:98)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:497)
> at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
> at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
> at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
> at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
> at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
> at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:134)
> at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
> at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
> at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
> at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
> at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
> at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
> at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
> at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
> at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
> at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
> at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> at org.mortbay.jetty.Server.handle(Server.java:326)
> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
> at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> 2017-04-12 00:44:15,750 [2011871076@qtp-814377348-5] ERROR mortbay.log - /ws/v1/slider/agents/container_e95_1476898378926_91401_01_000004___pdx__svt___ten83/heartbeat
> java.lang.NullPointerException ....
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)