> On May 17, 2016, 2:30 p.m., Nate Cole wrote: > > ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java, > > lines 890-892 > > <https://reviews.apache.org/r/45169/diff/2/?file=1382543#file1382543line890> > > > > Really need to throw here or just log it and continue; ? > > Tim Thorpe wrote: > When the StackManager encounters errors while reading the stack, it > almost always ends up throwing an exception and ambari-server fails to start. > I'm ok with just logging the issue for this and other errors but then you > could think that everything is fine with the service specific upgrade xml > unless you dig through the log. > > Nate Cole wrote: > That's true, but in this case you aren't bound by reading the stack per > se, you're acting on the applicability of an XML element. This is happening > in mergeServiceCheckGrouping, implying you're only considering > ServiceCheckGroupings anyway. > > If we actually used XSD (I have a future work-item for that) then sure, > that could cause failure of stack. But in this case, I think a simple no-op > continue; is fine. > > Tim Thorpe wrote: > Jayush suggested that I needed to make sure when merging groups that all > the groups were of the same type. So this applies to regular Grouping, > ClusterGrouping, ServiceCheckGrouping, etc... > > List<Grouping> list = allGroupMap.get(group.name); > if (list.size() > 0) { > Grouping first = list.get(0); > if (!first.getClass().equals(group.getClass())) { > throw new AmbariException("Expected class: " + > first.getClass() + " instead of " + group.getClass()); > } > } > allGroupMap.get(group.name).add(group); > > Basically with the above code, the logging would never occur when merging > ServiceCheckGroupings. Do you think the above code should just log as well > or is it more critical because it applies to groups other than > ServiceCheckGroupings? > > Nate Cole wrote: > Is that a bit restrictive? It means you can't add a ServiceCheckGrouping > right after a "regular" Grouping? I might be missing the point.
Hi Nate, This is for merging the entries in a group. So if you want to add FOO into SERVICE_CHECK_1, the type of the grouping in FOO's upgrade.xml should match the group in the original upgrade.xml. This prevents you from having inadventently making it a regular grouping (by omiting the xsi:type="service-check"): <group name="SERVICE_CHECK_1" title="All Service Checks"> <service name="FOO"> <component>BAR</component> </service> </group> In the case above I properly formatted the xml for a regular grouping but I could have misformatted it by using the service check syntax which would have failed during XML parsing. So basically the check is to make sure the xsi:type of the group match IF you are adding priorities/services/stages from a service's upgrade xml. This code is not applicable to adding new groups. - Tim ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/45169/#review133533 ----------------------------------------------------------- On May 18, 2016, 1:19 p.m., Tim Thorpe wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/45169/ > ----------------------------------------------------------- > > (Updated May 18, 2016, 1:19 p.m.) > > > Review request for Ambari, Alejandro Fernandez, Jonathan Hurley, Jayush > Luniya, and Nate Cole. > > > Bugs: AMBARI-15388 > https://issues.apache.org/jira/browse/AMBARI-15388 > > > Repository: ambari > > > Description > ------- > > Currently the upgrade is defined as a series of xml files specific to the > current stack version and the target stack version. Each upgrade xml defines > the overall sequence of the upgrade and what needs to be done for each > service. It would both easier to maintain and easier to add new services, if > the services themselves could specify what should be done during their > upgrade. > > There are two ways to make these changes, the alternate approach would be to > only make the java changes and not split the upgrade xml files. This would > still allow new services to add themselves into the upgrade. The benefit of > this is that for the stack services you only have one upgrade xml file. The > problem with that is it is easier for a particular service to have > unintentional changes between upgrade xml files. > > > Diffs > ----- > > > ambari-server/src/main/java/org/apache/ambari/server/stack/CommonServiceDirectory.java > 7f7a49e > > ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java > 8a7b42b > > ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceModule.java > f781574 > > ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java > 13d5047 > ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java > 5a18b3f > > ambari-server/src/main/java/org/apache/ambari/server/stack/StackServiceDirectory.java > 88f6e19 > ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java > 43cefb9 > > ambari-server/src/main/java/org/apache/ambari/server/state/stack/UpgradePack.java > b860731 > > ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java > 3325469 > > ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java > 67d7fdb > > ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java > 5cda422 > ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml > 6b74af0 > ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml > 9fb2bba > ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml > 1e040e6 > ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml > e3bc7a3 > ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml > 6e27da6 > ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml > d755516 > > ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerMiscTest.java > dda1e7a > > ambari-server/src/test/java/org/apache/ambari/server/state/stack/UpgradePackTest.java > 15be8b4 > > ambari-server/src/test/resources/stacks/HDP/2.0.5/services/HDFS/upgrades/HDP/2.2.0/upgrade_test_15388.xml > PRE-CREATION > > ambari-server/src/test/resources/stacks/HDP/2.2.0/upgrades/upgrade_test_15388.xml > PRE-CREATION > > ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/metainfo.xml > PRE-CREATION > > ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/repos/hdp.json > PRE-CREATION > > ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/repos/repoinfo.xml > PRE-CREATION > > ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/repos/version-2.2.0.4-123.xml > PRE-CREATION > > ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/role_command_order.json > PRE-CREATION > > ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/services/HDFS/metainfo.xml > PRE-CREATION > > ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/services/HDFS/upgrades/HDP/2.2.0/upgrade_test_15388.xml > PRE-CREATION > > ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/upgrades/config-upgrade.xml > PRE-CREATION > > ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/upgrades/upgrade_test_15388.xml > PRE-CREATION > > Diff: https://reviews.apache.org/r/45169/diff/ > > > Testing > ------- > > Manual testing so far. I have the code read the upgrade xml and all of its > service specific xml files, built the upgrade pack and then write the full > upgrade xml to disk and then compare the results to the original upgrade xml. > > This review is mostly for the design doc which is attached to the JIRA. Not > sure how to create a review board with a design doc instead of a patch file. > > > Thanks, > > Tim Thorpe > >