> On Nov. 5, 2015, 8:29 p.m., Sid Wagle wrote: > > ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java, > > line 1961 > > <https://reviews.apache.org/r/39977/diff/1/?file=1116749#file1116749line1961> > > > > What about serviceComponentHostsByHost, this map will still cache stale > > data with a cahced refernce to dettached entity. > > > > The root cause of re-appearing data is the cached entity refrences ! > > > > The other evil is Cascade + manual operations mix. This defientely > > solves one of the problem areas.
The serviceComponentHostsByHost is already handled by the deleteService(Service service) method. See for (List<ServiceComponentHost> serviceComponents: serviceComponentHostsByHost.values()){ Iterables.removeIf(serviceComponents, new Predicate<ServiceComponentHost>() { @Override public boolean apply(ServiceComponentHost serviceComponentHost) { return serviceComponentHost.getServiceName().equals(serviceName); } }); - Sebastian ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/39977/#review105292 ----------------------------------------------------------- On Nov. 5, 2015, 6:27 p.m., Sebastian Toader wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/39977/ > ----------------------------------------------------------- > > (Updated Nov. 5, 2015, 6:27 p.m.) > > > Review request for Ambari, Jonathan Hurley, Robert Levas, Sumit Mohanty, and > Sid Wagle. > > > Bugs: AMBARI-13741 > https://issues.apache.org/jira/browse/AMBARI-13741 > > > Repository: ambari > > > Description > ------- > > Deleting a service from existing cluster using REST API > (https://cwiki.apache.org/confluence/display/AMBARI/Using+APIs+to+delete+a+service+or+all+host+components+on+a+host) > fails with the below error: > > Call: DELETE FROM clusterservice Where ((cluster_id = ?) AND (service_name = > ?)) > Caused by: ... ORA-02292 integrity constraint violated - child record found > > > Diffs > ----- > > > ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ClusterServiceEntity.java > d34e2d5 > > ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ServiceComponentDesiredStateEntity.java > 4195710 > > ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java > 898aa33 > > ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java > c0804ff > > ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterImplTest.java > 39431ed > > Diff: https://reviews.apache.org/r/39977/diff/ > > > Testing > ------- > > Manual testing: > > 1. Created a simple 3 node cluster uzing the wizzard > 2. Deleted a service using REST API > 3. Verified that affected records were deleted from the following tables: > clusterservices, servicedesiredstate, servicecomponentdesiredstate, > hostcomponentstate, hostcomponentdesiredstate > 4. Refresh UI than re-add the deleted service. > > > Unit tests: > [INFO] > ------------------------------------------------------------------------ > [INFO] BUILD SUCCESS > [INFO] > ------------------------------------------------------------------------ > [INFO] Total time: 1:11:05.677s > [INFO] Finished at: Thu Nov 05 17:02:51 CET 2015 > [INFO] Final Memory: 32M/763M > [INFO] > ------------------------------------------------------------------------ > > > Thanks, > > Sebastian Toader > >