modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBean.java | 1 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, 25 insertions(+)
New commits: commit 2f891cc677965f56de4d143e0e3a41aa16eca99c 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 ec0fcd4..4112da0 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 @@ -32,6 +32,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; @@ -82,6 +84,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" }) @@ -170,6 +173,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