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


Fix it, then Ship it!





ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostRoleCommandDAO.java
 (lines 174 - 195)
<https://reviews.apache.org/r/43621/#comment181031>

    LoadingCache interprets `null` as an actual value, meaning that if you were 
to return `null`, it would cache it. 
    
    Instead, regardless of ID, you're returning a value anyway from 
`loadAggregateCounts`. This means that no matter what ID I pass in, a value 
will be cached. 
    
    In theory, I could make queries for IDs which don't exist and pre-populate 
this cache with stale, empty references. Perhaps it's better to return NULL 
when the request ID has no data from `loadAggregateCounts` and then throw an 
exception from the `load` method. This is the correct workflow to signal that a 
value requested doesn't exist and that the invalid value should not be cached.



ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostRoleCommandDAO.java
 (lines 523 - 536)
<https://reviews.apache.org/r/43621/#comment181027>

    Are there other places where you need to invalidate your cache? Such as 
updateStatusByRequestId?
    
    The problem with caches like this is that you could miss a place to 
invalidate them and you're perpetually stuck with stale values.


- Jonathan Hurley


On Feb. 18, 2016, 9:20 a.m., Sebastian Toader wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/43621/
> -----------------------------------------------------------
> 
> (Updated Feb. 18, 2016, 9:20 a.m.)
> 
> 
> Review request for Ambari, Jonathan Hurley, Myroslav Papirkovskyy, Sumit 
> Mohanty, and Sid Wagle.
> 
> 
> Bugs: AMBARI-15011
>     https://issues.apache.org/jira/browse/AMBARI-15011
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> 1. Created new index on host_role_command table on (status, role) fields as 
> this table is being queries quite often by status and role
> 2. Removed uneccessary querying of ambari server actions by hostname
> 3. Cache HostRoleCommandStatusSummaryDTO computed objects using guava cache
> 4. The method returning service configs made one call to the database to get 
> the active service config entities. Then retrieved from database all service 
> config entities and while building the response it was using the first 
> collection to determine which reponse item should be marked as 
> active/inactive. This has been modified to make only one roundtrip to the 
> database and determine the active flag using plain java code.
> 
> 
> Diffs
> -----
> 
>   
> ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
>  91f2d30 
>   
> ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
>  d2fe4fc 
>   
> ambari-server/src/main/java/org/apache/ambari/server/orm/dao/HostRoleCommandDAO.java
>  bd5fb5a 
>   
> ambari-server/src/main/java/org/apache/ambari/server/orm/entities/HostRoleCommandEntity.java
>  bb8ba19 
>   
> ambari-server/src/main/java/org/apache/ambari/server/serveraction/ServerActionExecutor.java
>  20cf5bb 
>   
> ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
>  d3fdc65 
>   
> ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog222.java
>  88b3151 
>   ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql eded221 
>   ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql 780e81a 
>   ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql d4a1ddb 
>   ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql 
> 64f2a4e 
>   ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql c557cf6 
>   ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql adda30c 
>   
> ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
>  bc4d397 
>   
> ambari-server/src/test/java/org/apache/ambari/server/agent/AgentResourceTest.java
>  510e1fb 
>   
> ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
>  1f90813 
>   
> ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
>  862776f 
>   
> ambari-server/src/test/java/org/apache/ambari/server/state/ConfigHelperTest.java
>  0cdf50a 
>   
> ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog222Test.java
>  aa4090e 
>   
> ambari-server/src/test/java/org/apache/ambari/server/utils/StageUtilsTest.java
>  2d663d9 
> 
> Diff: https://reviews.apache.org/r/43621/diff/
> 
> 
> Testing
> -------
> 
> Manual testing:
> 
> Created a cluster of 3 nodes waited 30 mins with UI running and collected 
> postgres sql statement stats, than left the cluster running for another 30 
> mins wiht UI closed and getting new sql statement stats. Verified that the 
> number of execution of  queries mentioned in the JIRA has decreased.
> 
> Unit tests:
> 
> Total run:884
> Total errors:0
> Total failures:0
> OK
> 
> 
> Thanks,
> 
> Sebastian Toader
> 
>

Reply via email to