IP Library Granted Patent US 12,657,017
Granted Patent B2
US 12,657,017 · App. 18/116,916 · Granted Jun 16, 2026

Undoing actions and uninstalling applications in a computing environment

Inventors: Ying Mo (Beijing, CN); Yue Chen (Beijing, CN); Rui Liu (Beijing, CN); Ya Xiao (Beijing, CN); Peng Hui Jiang (Beijing, CN); Hu Wang (Beijing, CN)
Assignee: International Business Machines Corporation
G06F8/62
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,657,017
App. No.
18/116,916
Granted
Jun 16, 2026
Kind
B2
Abstract

A computer-implemented method, computer program product, and/or computing system for preforming at least one of a performance group consisting of undoing an action in and uninstalling a software application from a computing environment. The computer-implemented method, computer program product, and/or computing system includes: building an initial resource dependency graph; building a second resource dependency graph; determining a resulting resource dependency graph to identify dangling resources; and removing the dangling resources. In an embodiment, building at least one of the initial resource dependency graph or the second resource dependency graph includes building a resource ownership graph and extending the resource ownership graph to include associations to form a resource dependency graph

Claims (84)

1 . A computer implemented method for performing at least one of a performance group consisting of undoing an action in and uninstalling a software application from a computing environment, the method comprising:

building an initial resource dependency graph for the computing environment, wherein the initial resource dependency graph identifies resources owned and associated with at least one of an action group consisting of the action and the software application before performing the performance group;

building a second resource dependency graph for the computing environment, wherein the second resource dependency graph identifies resources owned and associated with the action group after performing the performance group;

determining a resulting resource dependency graph to identify dangling resources in the computing environment after performing the performance group, wherein the resulting resource dependency graph is a difference in the identified resources between the initial resource dependency graph and the second resource dependency graph; and

removing the dangling resources from the computing environment.

2 . The computer-implemented method of claim 1 , wherein removing the dangling resources is performed hierarchically where dependent dangling resources that are dependent upon other resources are removed before the other resources.

3 . The computer-implemented method of claim 1 , wherein building at least one of the initial resource dependency graph or the second resource dependency graph comprises:

building a resource ownership graph; and

extending the resource ownership graph to include associations to form a resource dependency graph.

4 . The computer-implemented method of claim 1 , further comprising grouping eligible resources as condensed resources in at least one of the initial resource dependency graph or the second resource dependency graph.

5 . The computer-implemented method of claim 4 , wherein grouping the eligible resources as condensed resources in at least one of the initial resource dependency graph or the second resource dependency graph comprises:

scanning the initial resource dependency graph or the second resource dependency graph to identify nodes eligible to be condensed; and

for each group of nodes identified as eligible to be condensed, create a new virtual node representing the group of nodes identified as eligible to be condensed and substitute the virtual node in the at least one of the initial resource dependency graph or the second resource dependency graph for the group of nodes identified as eligible to be condensed.

6 . The computer-implemented method of claim 3 , wherein building the resource ownership graph comprises:

scanning a target system in the computing environment for resource manifests stored in a resource datastore;

determining existing definitions that represent an explicit relationship between resources;

parsing resource explicit dependencies; and

building the resource ownership graph.

7 . The computer-implemented method of claim 6 , wherein the resource ownership graph is built iteratively.

8 . The computer-implemented method of claim 3 , wherein extending the resource ownership graph to include associations to form the resource dependency graph comprises:

scanning container logs to identify associations among resources for implicit dependencies;

tracking service to service communications to identify associations among resources for implicit dependencies; and

extending the resource ownership graph to include the identified associations to form the resource dependency graph.

9 . The computer-implemented method of claim 1 , wherein determining the resulting resource dependency graph to identify dangling resources comprises comparing the initial resource dependency graph to the second resource dependency graph.

10 . The computer-implemented method of claim 1 , wherein determining the resulting resource dependency graph to identify dangling resources further comprises:

for each node in the initial resource dependency graph determine whether the second resource dependency graph contains the same node;

for each node located in both the initial and second resource dependency graph, mark the node as visited;

for each node located only in the initial resource dependency graph, mark the node as ignored; and

for each node located only in the second resource graph, identify the node as a dangling resource, wherein the dangling resources form the resulting resource dependency graph.

11 . The computer-implemented method of claim 1 , wherein removing the dangling resources comprises:

identify a leaf node in the resulting resource dependency graph;

delete the identified leaf node in the resulting resource dependency graph;

in response to the identified leaf node being successfully deleted, mark the identified leaf node as deleted and in response to the identified leaf node not being successfully deleted, mark the identified leaf node as failed;

determine whether any more nodes remaining in the resulting resource dependency graph;

in response to being one or more nodes remaining in the resulting resource dependency graph, determine whether any of the one or more remaining nodes are leaf nodes;

in response to being remaining leaf nodes, delete a next available remaining leaf node;

in response to being no remaining leaf nodes, delete a next available non-leaf node; and

in response to being no remaining leaf nodes and no remaining non-leaf nodes, end the process of removing dangling resources.

12 . The computer-implemented method of claim 1 , wherein the resource dependency graphs are built without user interruption or code modification.

13 . The computer-implemented method of claim 1 , further comprising removing dangling resources by traversing the resulting resource dependency graph without a user specifying the order of deleting the dangling resources.

14 . The computer-implemented method of claim 1 , wherein the initial resource dependency graph comprises one or more nodes where each node identifies a resource and the initial resource dependency graph identifies resource dependencies;

the second resource dependency graph comprises one or more nodes where each node identifies a resource and the second resource dependency graph identifies resource dependencies; and

the resulting resource dependency graph is determined by comparing the one or more nodes within the initial resource dependency graph to the one or more nodes within the second resource dependency graph to identify the dangling resources.

15 . The computer-implemented method according to claim 14 , wherein building the initial resource dependency graph or the second resource dependency graph comprises:

forming an initial resource ownership graph or a second resource ownership graph by:

scanning a target system in the computing environment for resource manifests stored in a resource datastore;

determining existing ownerReference definitions among resources for explicit dependencies;

parsing resource explicit dependencies; and

forming the initial resource ownership graph or the second resource ownership graph; and

extending the initial resource ownership graph or the second resource ownership graph to include associations to form the initial resource dependency graph or the second resource dependency graph by:

scanning container logs to identify associations among resources for implicit dependencies;

tracking service to service communications to identify associations among resources for implicit dependencies; and

extending the initial resource ownership graph or the second resource ownership graph to include the identified associations.

16 . The computer-implemented method according to claim 14 , wherein determining the resulting resource dependency graph by comparing the one or more nodes within the initial resource dependency graph to the one or more nodes within the second resource dependency graph to identify the dangling resources, comprises:

for each node in the initial resource dependency graph determine the second resource dependency graph contains the same node;

for each node located in both the initial and second resource dependency graph, mark the node as visited;

for each node located only in the initial resource dependency graph, mark the node as ignored; and

for each node located only in the second resource graph, identify the node as a dangling resource, wherein the dangling resources form the resulting resource dependency graph.

17 . The computer-implemented method according to claim 14 wherein removing the dangling resources comprises:

identifying a leaf node in the resulting resource dependency graph;

deleting the identified leaf node in the resulting resource dependency graph;

in response to the identified leaf node being successfully deleted, marking the identified leaf node as deleted and in response to the identified leaf node not being successfully deleted, marking the identified leaf node as failed;

determining whether any more nodes remaining in the resulting resource dependency graph;

in response to being one or more nodes remaining in the resulting resource dependency graph, determining whether any of the one or more remaining nodes are leaf nodes;

in response to being remaining leaf nodes, deleting a next available remaining leaf node;

in response to being no remaining leaf nodes, deleting a next available non-leaf node; and

in response to being no remaining leaf nodes and no remaining non-leaf nodes, ending the process of removing dangling resources.

18 . The method of claim 1 , wherein building the initial resource dependency graph being triggered by a user or a program.

19 . The method of claim 1 , wherein the building of the second resource dependency graph being triggered by a user or a program.

20 . A computer-implemented method of uninstalling a software application, the method comprising:

forming an initial resource dependency graph before uninstalling the software application, wherein the initial resource dependency graph identifies resources in the computing environment owned and associated with the software application and comprises one or more nodes where each node identifies one of the resources and the initial resource dependency graph identifies resource dependencies;

forming a second resource dependency graph after uninstalling the software application, wherein the second resource dependency graph identifies resources in the computing environment owned and associated with the software application comprising one or more nodes where each node identifies one of the resources and the second resource dependency graph identifies resource dependencies;

form a resulting resource dependency graph by comparing the one or more nodes within the initial resource dependency graph to the one or more nodes within the second resource dependency graph to identify dangling resources; and

remove the dangling resources,

wherein forming the initial resource dependency graph or the second resource dependency graph comprises:

forming an initial resource ownership graph and a second resource ownership graph by:

scanning a target system in the computing environment for resource manifests stored in a resource datastore;

determining existing ownerReference definitions among resources for explicit dependencies;

parsing resource explicit dependencies; and

forming the initial resource ownership graph and the second resource ownership graph; and

extending the initial resource ownership graph and the second resource ownership graph to include associations to form the initial resource dependency graph and the second resource dependency graph by:

scanning container logs to identify associations among resources for implicit dependencies;

tracking service to service communications to identify associations among resources for implicit dependencies; and

extending the initial resource ownership graph and the second resource ownership graph to include the respective identified associations.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2023
From: MO, YING; CHEN, YUE; LIU, RUI; XIAO, YA; JIANG, PENG HUI; WANG, HU
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 062868/0414 →
Continuity (1)
Related Publication 20240296034A1 · Sep 5, 2024
References Cited (36)
US 8060934B2 · Cabuk et al. · 2011 [cited by applicant]
US 9569345B2 · Friedler · 2017 [cited by examiner]
US 9678721B2 · Hale et al. · 2017 [cited by applicant]
US 9836390B2 · Boshernitsan et al. · 2017 [cited by applicant]
US 10698672B1 · Benskin et al. · 2020 [cited by applicant]
US 11222074B2 · Ganz · 2022 [cited by examiner]
US 11481399B1 · Juelich · 2022 [cited by examiner]
US 11720333B2 · Costa, Jr. · 2023 [cited by examiner]
US 11822962B2 · Mohan · 2023 [cited by examiner]
US 20180062953A1 · Billore et al. · 2018 [cited by applicant]
US 20190327154A1 · Sahoo · 2019 [cited by examiner]
US 20200249939A1 · Busayarat et al. · 2020 [cited by applicant]
US 20210224105A1 · Raja Jayaraman et al. · 2021 [cited by applicant]
US 20210224122A1 · Glass · 2021 [cited by examiner]
US 20220060431A1 · Vadayadiyil Raveendran · 2022 [cited by examiner]
US 20220188161A1 · Mohan · 2022 [cited by examiner]
US 20220321596A1 · Weizman · 2022 [cited by examiner]
US 20220365835A1 · Kandasamy · 2022 [cited by examiner]
US 20230115438A1 · DeGraaf · 2023 [cited by examiner]
US 20230127029A1 · Costa, Jr. · 2023 [cited by examiner]
US 20230350661A1 · Reed · 2023 [cited by examiner]
US 20230368055A1 · Babu · 2023 [cited by examiner]
US 20240248691A1 · Harduf · 2024 [cited by examiner]
KR 20220060525A · 2022 [cited by applicant]
Zhiqiang Xu, DEPCOMM: Graph Summarization on System Audit Logs for Attack Investigation, 2022, pp. 1-18. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9833632 (Year: 2022). [cited by examiner]
Thomas Fankhauser, Resource Dependency Processing in WebScaling Frameworks, 2018, pp. 155-167. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7464317 (Year: 2018). [cited by examiner]
Naser Ezzati-Jivan, DepGraph: Localizing Performance Bottlenecks in Multi-Core Applications Using Waiting Dependency Graphs and Software, 2020, pp. 149-158. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=92520… [cited by examiner]
“Uninstall Cloud Pak for Watson AIOps AI Manager”, May 24, 2022, 2 pages https://github.com/IBM/cp4waiops-samples/tree/main/uninstall/3.3. [cited by applicant]
‘Cp4mcm-samples’, May 26, 2022, 19 pages https://github.com/IBM/cp4mcm-samples/blob/master/scripts/uninstall.sh. [cited by applicant]
“delete application did not delete CRDs, nor update them and did not inform about this #6078”, Apr. 21, 2021, 5 pages https://github.com/argoproj/argo-cd/issues/6078. [cited by applicant]
“A way to do something in hook after delete the Argo Application #7575”, Oct. 29, 2021, 4 pages https://github.com/argoproj/argo-cd/issues/7575. [cited by applicant]
“Way to block managed resource from being deleted till its dependency deleted #2439”, Jul. 17, 2021, 6 pages https://github.com/crossplane/crossplane/issues/2439. [cited by applicant]
“Composition Dependency and Ordered Creation #2072”, Jan. 12, 2021, 11 pages https://github.com/crossplane/crossplane/issues/2072. [cited by applicant]
“Garbage Collection”, Last modified Jan. 18, 2023, 4 pages https://kubernetes.io/docs/concepts/architecture/garbage-collection/. [cited by applicant]
“Owners and Dependents”, Last modified Oct. 24, 2022, 2 pages https://kubernetes.io/docs/concepts/overview/working-with-objects/owners-dependents/. [cited by applicant]
‘Use Cascading Deletion in a Cluster’, Last modified Jan. 11, 2023, 4 pages https://kubernetes.io/docs/tasks/administer-cluster/use-cascading-deletion/. [cited by applicant]