> On June 1, 2017, 8:58 p.m., Alejandro Fernandez wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/stageplanner/RoleGraph.java
> > Lines 342 (patched)
> > <https://reviews.apache.org/r/59727/diff/1/?file=1738985#file1738985line342>
> >
> >     Btw, this will only find cycles between two adjacent nodes. It will not 
> > find cycles involved with 3 nodes, e.g., 
> >     
> >     A -> B
> >     B -> C 
> >     C -> A
> >     
> >     This needs a 2-pass depth-first traversal or Tarjan's algorithm.
> 
> Di Li wrote:
>     My tests showed that Ambari is able to break long chains of dependencies 
> to short chains that represents cycle graphs of two nodes. This behavior 
> makes it easier to detect circular dependencies via current logic.

Let's add a unit test for it, Storm depends on Kafka which depends on ZK. So if 
we then add ZK depends on Storm, that would create a cycle.


- Alejandro


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


On June 6, 2017, 7:02 p.m., Di Li wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/59727/
> -----------------------------------------------------------
> 
> (Updated June 6, 2017, 7:02 p.m.)
> 
> 
> Review request for Ambari and Tim Thorpe.
> 
> 
> Bugs: AMBARI-21161
>     https://issues.apache.org/jira/browse/AMBARI-21161
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> It is important to safe guard against cycle graphs, when Ambari supports 
> mpacks, custom services and service level role command order. Cycle graphs 
> indicate circular dependencies that can cause Ambari enter an infinite loop 
> while building stages, causing Ambari server to take up 100% CPU and large 
> amount of memory.
> 
> 
> Diffs
> -----
> 
>   
> ambari-server/src/main/java/org/apache/ambari/server/stageplanner/RoleGraph.java
>  024a5e1 
>   
> ambari-server/src/test/java/org/apache/ambari/server/stageplanner/TestStagePlanner.java
>  271ee89 
>   ambari-server/src/test/resources/stacks/HDP/2.0.6.1/role_command_order.json 
> 6154004 
> 
> 
> Diff: https://reviews.apache.org/r/59727/diff/2/
> 
> 
> Testing
> -------
> 
> unit tests. patch a trunk cluster with code change and install HDP cluster, 
> intentionally add circular reference to make NN start depends on DN start  
> and DN start depends on NN start. Verify UI shows an error message when try 
> to start HDFS service, and does not really kick off the HDFS start. (without 
> the fix, Ambari server will try to start HDFS and gets itself into an 
> infinite loop and uses up 100% CPU and large amount of RAM)
> 
> 
> Thanks,
> 
> Di Li
> 
>

Reply via email to