> 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.
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. - Di ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/59727/#review176659 ----------------------------------------------------------- On June 1, 2017, 8:35 p.m., Di Li wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/59727/ > ----------------------------------------------------------- > > (Updated June 1, 2017, 8:35 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 > > > Diff: https://reviews.apache.org/r/59727/diff/1/ > > > 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 > >
