modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java | 6 +++ modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java | 16 ++++++++++ modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest/plugin_3.1.xml | 8 +++++ 3 files changed, 30 insertions(+)
New commits: commit 687c313ad97f987f756e4867765371554e0783a4 Author: John Sanda jsanda@redhat.com Date: Wed Nov 7 09:34:07 2012 -0500
[BZ 845700] adding debug logging
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java index 22fc2ce..d1fbb80 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java @@ -107,6 +107,11 @@ public class PluginManagerBean implements PluginManagerLocal { criteria.setStrict(true); PageList results = resourceTypeMgr.findResourceTypesByCriteria(subjectMgr.getOverlord(), criteria);
+ if (log.isDebugEnabled()) { + log.debug(plugin + " is not ready to be purged. There are still " + results.getTotalSize() + + " resource types in the system for this plugin."); + } + return results.getTotalSize() == 0; }
commit a77fb7ef8c9fe8010056f2143f29d11753151293 Author: John Sanda jsanda@redhat.com Date: Tue Nov 6 23:49:37 2012 -0500
[BZ 845700] Do not use SQL LIKE operator when checking if plugin is ready for purge
The query used in PluginManagerBean.isReadyForPurge used the LIKE operator to make sure all resource types have been deleted. This is problematic with the jboss-as (JBoss 4) plugin. Its name is JBossAS and the jboss-as-5 plugin name is JBossAS5. When using the LIKE operator on the plugin name, both plugin names match which prevents the purge from happening. The LIKE operator is no longer used to prevent this problem. A test has been added to PluginManagerBeanTest for this scenario.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java index 09563df..22fc2ce 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java @@ -104,6 +104,7 @@ public class PluginManagerBean implements PluginManagerLocal { ResourceTypeCriteria criteria = new ResourceTypeCriteria(); criteria.addFilterPluginName(plugin.getName()); criteria.setRestriction(Criteria.Restriction.COUNT_ONLY); + criteria.setStrict(true); PageList results = resourceTypeMgr.findResourceTypesByCriteria(subjectMgr.getOverlord(), criteria);
return results.getTotalSize() == 0; diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java index 9b1d0bf..c19f9c0 100644 --- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java +++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java @@ -13,6 +13,8 @@ import org.rhq.core.domain.plugin.Plugin; import org.rhq.core.domain.plugin.PluginStatusType; import org.rhq.enterprise.server.auth.SubjectManagerLocal; import org.rhq.enterprise.server.core.plugin.PluginDeploymentScanner; +import org.rhq.enterprise.server.inventory.InventoryManagerLocal; +import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal; import org.rhq.enterprise.server.scheduler.jobs.PurgePluginsJob; import org.rhq.enterprise.server.scheduler.jobs.PurgeResourceTypesJob; import org.rhq.enterprise.server.util.LookupUtil; @@ -62,6 +64,7 @@ public class PluginManagerBeanTest extends MetadataBeanTest { createPlugin("test-plugin1", "1.0", "plugin_1.xml"); createPlugin("test-plugin2", "1.0", "plugin_2.xml"); createPlugin("test-plugin3", "1.0", "plugin_3.xml"); + createPlugin("test-plugin3.1", "1.0", "plugin_3.1.xml"); }
@Test(dependsOnMethods = { "registerPlugins" }) @@ -150,6 +153,19 @@ public class PluginManagerBeanTest extends MetadataBeanTest { assertTrue("Expected plugin status to be set to DELETED", plugin2.getStatus() == PluginStatusType.DELETED); }
+ @Test(dependsOnMethods = { "registerPlugins" }) + public void isPluginReadyForDeletion() { + Plugin plugin3 = getPlugin("PluginManagerBeanTestPlugin3"); + + ResourceTypeManagerLocal resourceTypeManager = LookupUtil.getResourceTypeManager(); + List<Integer> ids = resourceTypeManager.getResourceTypeIdsByPlugin(plugin3.getName()); + InventoryManagerLocal inventoryManager = LookupUtil.getInventoryManager(); + inventoryManager.markTypesDeleted(ids); + + assertTrue("Expected " + plugin3 + " to be ready for purge since all its resource types have been marked " + + "deleted", pluginMgr.isReadyForPurge(plugin3)); + } + @Test(enabled = false, dependsOnMethods = { "deletePlugins" }) public void purgePlugins() throws Exception { Plugin plugin1 = getPlugin("PluginManagerBeanTestPlugin1", diff --git a/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest/plugin_3.1.xml b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest/plugin_3.1.xml new file mode 100644 index 0000000..e885167 --- /dev/null +++ b/modules/enterprise/server/jar/src/test/resources/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest/plugin_3.1.xml @@ -0,0 +1,8 @@ +<plugin name="PluginManagerBeanTestPlugin3.1" + package="org.rhq.plugins.test" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="urn:xmlns:rhq-plugin" + xmlns:c="urn:xmlns:rhq-configuration"> + + <server name="TestServer3.1"/> +</plugin> \ No newline at end of file
rhq-commits@lists.fedorahosted.org