modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java | 3 +++ modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java | 6 +++++- modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java | 6 ++++-- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 4 ++++ 4 files changed, 16 insertions(+), 3 deletions(-)
New commits: commit 834e20735652dc70654b84e5eafdededa2112ad4 Author: Jay Shaughnessy jshaughn@redhat.com Date: Fri Nov 19 15:07:27 2010 -0500
[BZ 655187]
I believe in the past Resource uninventory was using hibernate cascade to remove bundle resource deployments. At some point in the data model changes it looks like I took the relation off of Resource and did not add the needed remove logic. I've now added to bulk delete for efficient removal of BundleResourceDeployment and BundleResourceDeploymentHistory. (cherry picked from commit 9aeb5a00158b7d24dbb706522d8f8bb35e03bb07)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java index 5638dc9..1bc3c25 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java @@ -58,6 +58,8 @@ import org.rhq.core.domain.resource.Resource; */ @Entity @NamedQueries( { + @NamedQuery(name = BundleResourceDeployment.QUERY_DELETE_BY_RESOURCES, query = "DELETE FROM BundleResourceDeployment brd " + + " WHERE brd.resource.id IN ( :resourceIds ) )"), @NamedQuery(name = BundleResourceDeployment.QUERY_FIND_BY_DEPLOYMENT_ID_NO_FETCH, query = "SELECT brd FROM BundleResourceDeployment brd WHERE brd.bundleDeployment.id = :id "), @NamedQuery(name = BundleResourceDeployment.QUERY_FIND_BY_RESOURCE_ID_NO_FETCH, query = "SELECT brd FROM BundleResourceDeployment brd WHERE brd.resource.id = :id ") }) @SequenceGenerator(name = "SEQ", sequenceName = "RHQ_BUNDLE_RES_DEPLOY_ID_SEQ") @@ -66,6 +68,7 @@ import org.rhq.core.domain.resource.Resource; public class BundleResourceDeployment implements Serializable { private static final long serialVersionUID = 1L;
+ public static final String QUERY_DELETE_BY_RESOURCES = "BundleResourceDeployment.deleteByResources"; public static final String QUERY_FIND_BY_DEPLOYMENT_ID_NO_FETCH = "BundleResourceDeployment.findByDeploymentIdNoFetch"; public static final String QUERY_FIND_BY_RESOURCE_ID_NO_FETCH = "BundleResourceDeployment.findByResourceIdNoFetch";
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java index d528f8b..eb00b26 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java @@ -48,7 +48,10 @@ import javax.xml.bind.annotation.XmlType; * @author Jay Shaughnessy */ @Entity -@NamedQueries( { @NamedQuery(name = BundleResourceDeploymentHistory.QUERY_FIND_ALL, query = "SELECT brdh FROM BundleResourceDeploymentHistory brdh") // +@NamedQueries( { + @NamedQuery(name = BundleResourceDeploymentHistory.QUERY_DELETE_BY_RESOURCES, query = "DELETE FROM BundleResourceDeploymentHistory brdh " + + " WHERE brdh.resourceDeployment IN ( SELECT brd FROM BundleResourceDeployment brd WHERE brd.resource.id IN ( :resourceIds ) ) )"), + @NamedQuery(name = BundleResourceDeploymentHistory.QUERY_FIND_ALL, query = "SELECT brdh FROM BundleResourceDeploymentHistory brdh") // }) @SequenceGenerator(name = "SEQ", sequenceName = "RHQ_BUNDLE_RES_DEP_HIST_ID_SEQ") @Table(name = "RHQ_BUNDLE_RES_DEP_HIST") @@ -56,6 +59,7 @@ import javax.xml.bind.annotation.XmlType; public class BundleResourceDeploymentHistory implements Serializable { private static final long serialVersionUID = 1L;
+ public static final String QUERY_DELETE_BY_RESOURCES = "BundleResourceDeploymentHistory.deleteByResources"; public static final String QUERY_FIND_ALL = "BundleResourceDeploymentHistory.findAll";
@Column(name = "ID", nullable = false) diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java index 52420f4..b35dfac 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java @@ -1032,8 +1032,10 @@ public class Resource implements Comparable<Resource>, Serializable { @ManyToOne(fetch = FetchType.LAZY) private ProductVersion productVersion;
- // @OneToMany(mappedBy = "resource", fetch = FetchType.LAZY, cascade = CascadeType.ALL) - // private List<BundleResourceDeployment> resourceDeployments = new ArrayList<BundleResourceDeployment>(); + // not currently needed, but could be added if we find a need to get deployment info via the resource + // bulk delete (already being done) + // @OneToMany(mappedBy = "resource", fetch = FetchType.LAZY) + // private List<BundleResourceDeployment> resourceDeployments = new ArrayList<BundleResourceDeployment>();
@ManyToMany(mappedBy = "resources", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE) private Set<Tag> tags; diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java index 3687b5e..f033078 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java @@ -55,6 +55,8 @@ import org.rhq.core.domain.alert.notification.AlertNotification; import org.rhq.core.domain.alert.notification.AlertNotificationLog; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.authz.Permission; +import org.rhq.core.domain.bundle.BundleResourceDeployment; +import org.rhq.core.domain.bundle.BundleResourceDeploymentHistory; import org.rhq.core.domain.configuration.PluginConfigurationUpdate; import org.rhq.core.domain.configuration.ResourceConfigurationUpdate; import org.rhq.core.domain.content.ContentServiceRequest; @@ -396,6 +398,8 @@ public class ResourceManagerBean implements ResourceManagerLocal, ResourceManage ResourceError.QUERY_DELETE_BY_RESOURCES, // Event.DELETE_BY_RESOURCES, // EventSource.QUERY_DELETE_BY_RESOURCES, // + BundleResourceDeploymentHistory.QUERY_DELETE_BY_RESOURCES, // resource deployment history BEFORE resource deployment + BundleResourceDeployment.QUERY_DELETE_BY_RESOURCES, // PackageInstallationStep.QUERY_DELETE_BY_RESOURCES, // steps BEFORE installed package history InstalledPackageHistory.QUERY_DELETE_BY_RESOURCES, // history BEFORE installed packages & content service requests InstalledPackage.QUERY_DELETE_BY_RESOURCES, //
rhq-commits@lists.fedorahosted.org