> On June 24, 2014, 11:38 p.m., Tom Beerbower wrote:
> > I like the idea but have some issues with the patch.  Could we use this 
> > idea and make it much simpler? Something like ...
> > 
> > QueryImpl...
> > 
> >   /**
> >    * Query the cluster controller for the top level resources.
> >    */
> >   private void queryForResources()
> >       throws UnsupportedPropertyException,
> >       SystemException,
> >       NoSuchResourceException,
> >       NoSuchParentResourceException {
> > 
> >     Set<Resource> providerResourceSet = new HashSet<Resource>();
> >     Resource.Type resourceType    = getResourceDefinition().getType();
> >     Predicate     queryPredicate  = createPredicate(getKeyValueMap(), 
> > processUserPredicate(userPredicate));
> > 
> >     // must occur after processing user predicate and prior to creating 
> > request
> >     finalizeProperties();
> > 
> >     Request       request     = createRequest();
> >     Set<Resource> resourceSet = new LinkedHashSet<Resource>();
> > 
> >     for (Resource queryResource : doQuery(resourceType, request, 
> > queryPredicate)) {
> >       providerResourceSet.add(queryResource);
> >     }
> > 
> >     // If there is a page request and the predicate doesn't contain any 
> > properties that
> >     // haven't been set yet then go ahead and get just a single page of 
> > resources ...
> >     if (pageRequest != null &&
> >         !clusterController.predicateRequiresPopulation(resourceType, 
> > queryPredicate)) {
> >       PageResponse pageResponse = clusterController.getPage(resourceType,
> >           providerResourceSet, request, queryPredicate, pageRequest, 
> > sortRequest);
> > 
> >       // build a new set
> >       for (Resource r : pageResponse.getIterable()) {
> >         resourceSet.add(r);
> >       }
> >     } else {
> >       resourceSet.addAll(providerResourceSet);
> >     }
> > 
> >     queryResults.put(null, new QueryResult(
> >         request, queryPredicate, userPredicate, getKeyValueMap(), 
> > resourceSet));
> > 
> >     clusterController.populateResources(resourceType, resourceSet, request, 
> > queryPredicate);
> >     queryForSubResources();
> >   }
> > 
> > 
> > ClusterController ...
> > 
> >   /**
> >    * Check to see if the given predicate contains any properties to be 
> > populated
> >    * by the providers for the given type.
> >    *
> >    * @param type       the resource type
> >    * @param predicate  the predicate
> >    *
> >    * @return true if the given predicate contains any properties to be 
> > populated
> >    *         by the providers for the given type
> >    */
> >   public boolean predicateRequiresPopulation(Resource.Type type, Predicate 
> > predicate);
> > 
> > 
> > 
> > ClusterControllerImpl ...
> > 
> >   @Override
> >   public boolean predicateRequiresPopulation(Type type, Predicate 
> > predicate) {
> >     List<PropertyProvider> propertyProviders = 
> > ensurePropertyProviders(type);
> >     Request request = PropertyHelper.getReadRequest();
> > 
> >     for (PropertyProvider propertyProvider : propertyProviders) {
> >       if (providesRequestProperties(propertyProvider, request, predicate)) {
> >         return true;
> >       }
> >     }
> >     return false;
> >   }

It won't work . Before providing response we call getPage() one more time, it 
have to add to response correct "itemTotal" : "x", how many resources were 
populated, should correct be number of resources populated. 


- Dmytro


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


On June 24, 2014, 9:35 p.m., Dmytro Sen wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/22941/
> -----------------------------------------------------------
> 
> (Updated June 24, 2014, 9:35 p.m.)
> 
> 
> Review request for Ambari, Sid Wagle and Tom Beerbower.
> 
> 
> Bugs: AMBARI-6263
>     https://issues.apache.org/jira/browse/AMBARI-6263
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> On a large cluster, calls to /hosts are taking more than 30 seconds.
> This severely impacts the responsiveness of the UI for the Hosts page (it 
> takes > 30 seconds to filter, navigate through paged hosts, etc).
> The times shown are latency only (does not include download time).
> 
> 
> Diffs
> -----
> 
>   
> ambari-server/src/main/java/org/apache/ambari/server/api/query/QueryImpl.java 
> 63426cb 
>   
> ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseRequest.java
>  b7893c5 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProvider.java
>  4d623c1 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProvider.java
>  35b156c 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractProviderModule.java
>  711e64e 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
>  3f8f317 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ResourceImpl.java
>  15fb961 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProvider.java
>  51c7565 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/jmx/JMXPropertyProvider.java
>  a4dc2b2 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/nagios/NagiosPropertyProvider.java
>  ce1dc2f 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/spi/ClusterController.java
>  5e3f844 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/spi/Resource.java
>  13e7c77 
>   
> ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java 
> df97944 
>   
> ambari-server/src/main/java/org/apache/ambari/server/utils/JaxbMapKeyListAdapter.java
>  4589948 
>   
> ambari-server/src/main/java/org/apache/ambari/server/utils/JaxbMapKeyMapAdapter.java
>  8419d73 
>   
> ambari-server/src/main/java/org/apache/ambari/server/utils/JaxbMapKeyValAdapter.java
>  e3531cd 
>   
> ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java
>  4dc95a3 
>   
> ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java
>  1ae17b3 
>   
> ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterControllerImplTest.java
>  1d0eef4 
>   
> ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java
>  2a086ae 
>   
> ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
>  ac7314e 
>   
> ambari-server/src/test/java/org/apache/ambari/server/controller/nagios/NagiosPropertyProviderTest.java
>  92d3c40 
> 
> Diff: https://reviews.apache.org/r/22941/diff/
> 
> 
> Testing
> -------
> 
> [INFO] Reactor Summary:
> [INFO] 
> [INFO] Ambari Main ....................................... SUCCESS [1.632s]
> [INFO] Apache Ambari Project POM ......................... SUCCESS [0.303s]
> [INFO] Ambari Web ........................................ SUCCESS [22.921s]
> [INFO] Ambari Views ...................................... SUCCESS [1.546s]
> [INFO] Ambari Server ..................................... SUCCESS 
> [14:21.956s]
> [INFO] Ambari Agent ...................................... SUCCESS [6.150s]
> [INFO] Ambari Client ..................................... SUCCESS [0.035s]
> [INFO] Ambari Python Client .............................. SUCCESS [0.291s]
> [INFO] Ambari Groovy Client .............................. SUCCESS [8.195s]
> [INFO] Ambari Shell ...................................... SUCCESS [4.434s]
> 
> 
> Thanks,
> 
> Dmytro Sen
> 
>

Reply via email to