ambari-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dmytro Shkvyra" <dshkv...@hortonworks.com>
Subject Re: Review Request 29480: Adding new host fails with 500 if only zookeeper is installed
Date Tue, 30 Dec 2014 15:22:52 GMT


> On Дек. 30, 2014, 2:36 п.п., Robert Levas wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java,
line 406
> > <https://reviews.apache.org/r/29480/diff/1/?file=803370#file803370line406>
> >
> >     Why not not use `!clusterName.isEmpty()` rather than `!clusterName.equals("")`?
> >     
> >     Typical convention for this project is to place `{` and `}` around all `if`
clauses, even if it is a one-liner:
> >     
> >     ```
> >     if(...) {
> >       ...
> >     }
> >     ```

Ok. I'll change it


> On Дек. 30, 2014, 2:36 п.п., Robert Levas wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java,
lines 421-424
> > <https://reviews.apache.org/r/29480/diff/1/?file=803370#file803370line421>
> >
> >     Use `{` and `}` around `if` blocks:
> >     
> >     ```
> >     if(...) {
> >       ...
> >     }
> >     ```

I'll change it


> On Дек. 30, 2014, 2:36 п.п., Robert Levas wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java,
line 410
> > <https://reviews.apache.org/r/29480/diff/1/?file=803370#file803370line410>
> >
> >     Isn't `clusterName` from line 405 relevant here? Looking at lines 421-423 `request.getClusterName()`
could be null or empty.
> >     
> >     The logic seems to be a bit confusing.
> >     
> >     Maybe something like line 406 belongs inside the loop?

In this function we can update hostComponents only for one cluster.
We can add null or "" value to the clusterNames and clusterNames.size() will be more than
1 and that will cause exception.
Root cause of issue is that UI can send requests with wrong predicates, it caused empty requests
parameter, so clusterNames set was empty, but we already have cluster name in parameter "requestProperties".
Parameter "requestProperties" have cluster name if this functionality have been called via
REST API, but if this functionality called inside ambari requestProperties will be empty.
So, First of all I try get cluster name from requestProperties if they are empty I'll try
get cluster name from requests.


- Dmytro


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29480/#review66363
-----------------------------------------------------------


On Дек. 30, 2014, 11:01 д.п., Dmitro Lisnichenko wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29480/
> -----------------------------------------------------------
> 
> (Updated Дек. 30, 2014, 11:01 д.п.)
> 
> 
> Review request for Ambari, Dmytro Sen, John Speidel, and Nate Cole.
> 
> 
> Bugs: AMBARI-8952
>     https://issues.apache.org/jira/browse/AMBARI-8952
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> STR:
> 
> 1. Deploy single-node cluster. Select only ZK on services page.
> 2. Add new host to cluster
> 
> Get 500 error. Did not face that when adding new host to 2-node cluster with core services
(HDFS, Yarn + MapReduce2, Ganglia, HBase, Hive (has dependencies on Pig & Tez), Zookeeper,
Ganglia.). So the issue may be component-dependent.
> {code}
> 14:48:02,569  WARN [qtp2130180018-24] ServletHandler:514 - /api/v1/clusters/cc/host_components
> java.util.NoSuchElementException
>         at java.util.HashMap$HashIterator.nextEntry(HashMap.java:925)
>         at java.util.HashMap$KeyIterator.next(HashMap.java:956)
>         at org.apache.ambari.server.controller.internal.HostComponentResourceProvider.updateHostComponents(HostComponentResourceProvider.java:541)
>         at org.apache.ambari.server.controller.internal.HostComponentResourceProvider$4.invoke(HostComponentResourceProvider.java:619)
>         at org.apache.ambari.server.controller.internal.HostComponentResourceProvider$4.invoke(HostComponentResourceProvider.java:616)
>         at org.apache.ambari.server.controller.internal.AbstractResourceProvider.modifyResources(AbstractResourceProvider.java:331)
>         at org.apache.ambari.server.controller.internal.HostComponentResourceProvider.doUpdateResources(HostComponentResourceProvider.java:616)
>         at org.apache.ambari.server.controller.internal.HostComponentResourceProvider.updateResources(HostComponentResourceProvider.java:259)
>         at org.apache.ambari.server.controller.internal.ClusterControllerImpl.updateResources(ClusterControllerImpl.java:317)
>         at org.apache.ambari.server.api.services.persistence.PersistenceManagerImpl.update(PersistenceManagerImpl.java:100)
>         at org.apache.ambari.server.api.handlers.UpdateHandler.persist(UpdateHandler.java:42)
>         at org.apache.ambari.server.api.handlers.BaseManagementHandler.handleRequest(BaseManagementHandler.java:72)
>         at org.apache.ambari.server.api.services.BaseRequest.process(BaseRequest.java:135)
>         at org.apache.ambari.server.api.services.BaseService.handleRequest(BaseService.java:103)
>         at org.apache.ambari.server.api.services.BaseService.handleRequest(BaseService.java:72)
>         at org.apache.ambari.server.api.services.HostComponentService.updateHostComponents(HostComponentService.java:183)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
>         at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatc
> hProvider.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.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: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.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
>         at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
>         at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
>         at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>         at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
>         at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>         at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
>         at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>         at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
> {code}
> 
> 
> Diffs
> -----
> 
>   ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
a6c95f5 
>   ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
f5521f9 
> 
> Diff: https://reviews.apache.org/r/29480/diff/
> 
> 
> Testing
> -------
> 
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO] 
> [INFO] Ambari Views ...................................... SUCCESS [8.825s]
> [INFO] Ambari Server ..................................... SUCCESS [31:56.554s]
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 32:07.709s
> [INFO] Finished at: Tue Dec 30 13:59:03 FET 2014
> [INFO] Final Memory: 30M/224M
> [INFO] ------------------------------------------------------------------------
> 
> 
> Thanks,
> 
> Dmitro Lisnichenko
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message