[ 
https://issues.apache.org/jira/browse/AMBARI-2747?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13720843#comment-13720843
 ] 

Tom Beerbower commented on AMBARI-2747:
---------------------------------------

It looks like an NPE in SchemaImpl.java ...

{code}
public String getKeyPropertyId(Resource.Type type) {
    return resourceProvider.getKeyPropertyIds().get(type);
  }
{code}

The GSInstaller uses a NOOP resource provider for unsupported resource types.  
The NOOP resource provider implements getKeyProperties() (in 
GSInstallerResourceProvider.java)...

{code}
  public Map<Resource.Type, String> getKeyPropertyIds() {
    return PropertyHelper.getKeyPropertyIds(type);
  }
{code}

The problem is that this implementation of getKeyPropertyIds() will return null 
if the given resource type is unknown.  Since the first release with the 
GSInstaller code, it looks like we have added new resource types without 
updating the PropertyHelper structures that keep the key property information.  
That is okay since the new resource providers can implement getKeyPropertyIds() 
any way they see fit.  It is only a problem because the 
GSInstallerResourceProvider depends on it.  I think we can change the above 
GSInstallerResourceProvider.getKeyPropertyIds() implementation to ...

{code}
  public Map<Resource.Type, String> getKeyPropertyIds() {
    Map<Resource.Type, String> keyPropertyIds = 
PropertyHelper.getKeyPropertyIds(type);
    return keyPropertyIds == null ? Collections.<Resource.Type, 
String>emptyMap() : keyPropertyIds;
  }
{code}


                
> NPE in GSInstaller provider
> ---------------------------
>
>                 Key: AMBARI-2747
>                 URL: https://issues.apache.org/jira/browse/AMBARI-2747
>             Project: Ambari
>          Issue Type: Bug
>            Reporter: Tom Beerbower
>            Assignee: Tom Beerbower
>
> Ambari server 1.2.3.7 (HDP1.3)crashes when starting with 
> GSInstallerProviderModule. It works only with ambar-server-1.2.2.4(HDP1.2).
> {code}
> java.lang.NullPointerException
>       at 
> org.apache.ambari.server.controller.internal.SchemaImpl.getKeyPropertyId(SchemaImpl.java:55)
>       at 
> org.apache.ambari.server.api.resources.ResourceInstanceImpl.getSubResources(ResourceInstanceImpl.java:113)
>       at 
> org.apache.ambari.server.api.query.QueryImpl.addPropertyToSubResource(QueryImpl.java:234)
>       at 
> org.apache.ambari.server.api.query.QueryImpl.addProperty(QueryImpl.java:97)
>       at 
> org.apache.ambari.server.api.query.QueryImpl.addCollectionProperties(QueryImpl.java:190)
>       at 
> org.apache.ambari.server.api.query.QueryImpl.execute(QueryImpl.java:127)
>       at 
> org.apache.ambari.server.api.handlers.ReadHandler.handleRequest(ReadHandler.java:60)
>       at 
> org.apache.ambari.server.api.services.BaseRequest.process(BaseRequest.java:100)
>       at 
> org.apache.ambari.server.api.services.BaseService.handleRequest(BaseService.java:80)
>       at 
> org.apache.ambari.server.api.services.ClusterService.getClusters(ClusterService.java:64)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at 
> com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
>       at 
> com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
>       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.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:708)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>       at 
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652)
>       at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1329)
>       at 
> org.apache.ambari.server.api.AmbariPersistFilter.doFilter(AmbariPersistFilter.java:48)
>       at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1300)
>       at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:445)
>       at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
>       at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:559)
>       at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
>       at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1038)
>       at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:374)
>       at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189)
>       at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:972)
>       at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>       at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>       at org.eclipse.jetty.server.Server.handle(Server.java:363)
>       at 
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:483)
>       at 
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:920)
>       at 
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:982)
>       at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
>       at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
>       at 
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
>       at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:627)
>       at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:51)
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>       at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>       at java.lang.Thread.run(Thread.java:662)
> 16:56:41,779 ERROR ReadHandler:82 - Caught a runtime exception executing a 
> query
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to