Bug 1017654

Summary: JON (3.2.0) server plugin, Infinispan resource is not detected
Product: [JBoss] JBoss Data Grid 6 Reporter: Tomas Sykora <tsykora>
Component: JON PluginAssignee: Tristan Tarrant <ttarrant>
Status: VERIFIED --- QA Contact: Martin Gencur <mgencur>
Severity: high Docs Contact:
Priority: unspecified    
Version: 6.2.0CC: jdg-bugs
Target Milestone: ---   
Target Release: 6.2.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1028047, 1018179    
Bug Blocks: 1010994, 1017190    

Description Tomas Sykora 2013-10-10 09:56:10 UTC
Testing latest JDG jon-server-plugin (ER2/ER3) on this configuration:

JON 3.2.0.ER3
+ rhq-jboss-as-7-plugin-4.9.0.JON320ER1.jar
+ infinispan-server-rhq-plugin-6.0.0.CR1-redhat-1.jar

Infinispan resource is not exposed under list of respective JDG subsystems.

However, we are able to see Endpoint (= Infinispan Server) resource there.

We suspect this issue is caused by mismatch in product names and "something" else in the latest version of rhq-jboss-as-7-plugin (i.e. 4.9.0) because Infinispan subsystem was visible using rhq-jboss-as-7-plugin 4.4.0.

Comment 1 Tomas Sykora 2013-10-10 10:04:19 UTC
Adding into jdg62blockers.

This is even blocker for further testing of jdg jon-server-plugin in oncoming jdg releases (ERs, Beta, CRs).

Comment 2 Tomas Sykora 2013-10-10 11:05:11 UTC
Ah! I finally found something useful:

org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException: Failed to start component for resource Resource[id=10108, uuid=cfd3c6d8-3a17-4f64-8842-3ae6a05970f3, type={JBossAS7}JBossAS7 Standalone Server, key=hostConfig: /home/hudson/jboss-as-jdg6-node1/standalone/configuration/standalone.xml, name=ISPN (0.0.0.0:9990), parent=auto-jdg-agent1.bc.jonqe.lab.eng.bos.redhat.com, version=ISPN 6.2.0].
	at org.rhq.core.pc.inventory.InventoryManager.activateResource(InventoryManager.java:1937)
	at org.rhq.core.pc.inventory.InventoryManager.refreshResourceComponentState(InventoryManager.java:3371)
	at org.rhq.core.pc.inventory.InventoryManager.mergeResource(InventoryManager.java:3255)
	at org.rhq.core.pc.inventory.InventoryManager.mergeModifiedResources(InventoryManager.java:2964)
	at org.rhq.core.pc.inventory.InventoryManager.synchInventory(InventoryManager.java:1252)
	at org.rhq.core.pc.inventory.InventoryManager.synchInventory(InventoryManager.java:1211)
	at org.rhq.core.pc.inventory.InventoryManager.handleReport(InventoryManager.java:1193)
	at org.rhq.core.pc.inventory.RuntimeDiscoveryExecutor.call(RuntimeDiscoveryExecutor.java:126)
	at org.rhq.core.pc.inventory.RuntimeDiscoveryExecutor.call(RuntimeDiscoveryExecutor.java:61)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
Caused by: org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException: The original product type discovered for this AS7 server was Infinispan Server, but the server is now reporting its product type is [JBoss JDG 6].
	at org.rhq.modules.plugins.jbossas7.BaseServerComponent.validateServerAttributes(BaseServerComponent.java:220)
	at org.rhq.modules.plugins.jbossas7.BaseServerComponent.getAvailabilityNow(BaseServerComponent.java:154)
	at org.rhq.modules.plugins.jbossas7.BaseServerComponent.getAvailability(BaseServerComponent.java:139)
	at org.rhq.modules.plugins.jbossas7.BaseServerComponent.start(BaseServerComponent.java:101)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at org.rhq.core.pc.inventory.ResourceContainer$ComponentInvocation.call(ResourceContainer.java:654)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	... 3 more

Comment 3 Tomas Sykora 2013-10-10 12:39:20 UTC
We probably need to change line:

} else if (slot.equals("jdg")) { to 

} else if (slot.equals("jdg") || slot.equals("ispn")) {

here:

https://github.com/rhq-project/rhq-plugins/blob/7179fb5889577fd86f621e932eb69ab538d77ccb/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JBossProductType.java

or whip JDG product with product.conf file which contains slot="jdg" instead of slot="ispn" but this is not flexible enough.
Someone maybe needs to monitor community based ispn server.

Therefore, we probably need to change detection mechanism in rhq-jboss-as-7 plugin as our jdg plugin depends on this and its discovering mechanisms.

Comment 5 Tomas Sykora 2013-10-11 07:57:49 UTC
Aforementioned link is deprecated. 

Latest plugins are built using this repo:

https://git.fedorahosted.org/cgit/rhq/rhq.git/tree/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JBossProductType.java

I can see decision flow:

} else if (slot.equals("ispn")) {
    productType = JBossProductType.ISPN;
} else if (slot.equals("jdg")) {
    productType = JBossProductType.JDG;

The problem is cause by some mixture between these 2 types.

"The original product type discovered for this AS7 server was Infinispan Server, but the server is now reporting its product type is [JBoss JDG 6]"

Comment 6 Tomas Sykora 2013-10-11 10:51:44 UTC
Something similar (maybe exactly the same) happened for Portal plug-in.

This is fix for that Portal issue:

https://git.fedorahosted.org/cgit/rhq/rhq.git/commit/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/JBossProductType.java?id=02ed9c403f3ee1aa7fb1b5f1e1cee5713997fa56

Maybe we need to consider removing JDG or ISPN product type from list.

Our product.conf in ispn server is reporting slot=ispn and I don't think this will change in JDG GA distribution. 

Any thoughts?

Comment 7 Tomas Sykora 2013-10-11 11:14:15 UTC
I've found what's the cause of this problem.

Look at line 216 here:
https://git.fedorahosted.org/cgit/rhq/rhq.git/tree/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java

boolean ourPluginTypeIsJdg = ourType.getPlugin().equals("JDG");

In SubsystemDiscovery is method (private boolean shouldSkipEntryWrtIspn) which decides about skipping Infinispan subsystem and not registering/showing him.

ourPluginTypeIsJdg is returning FALSE, because our plugin in InfinispanServer is named: InfinispanServer.

Therefore, AS discovery is simply ignoring him.

I will create respective bugzilla for JON jboss-as-7 plugin and suggest changes which should fix it.

I hope it will be enough:
boolean ourPluginTypeIsJdg = (ourType.getPlugin().equals("JDG") || (ourType.getPlugin().equals("InfinispanServer"));

pfff, this was quite tricky.

Comment 8 Tomas Sykora 2013-11-04 09:40:51 UTC
This doesn't need release note for 6.2.BETA release.

Comment 9 Mike Foley 2013-11-07 14:03:51 UTC
this is a blocker for JON 3.2 release

Comment 10 Tomas Sykora 2013-11-25 12:03:53 UTC
Setting NEW -> VERIFIED directly. 
This product-related bug was fixed by renaming plugin from InfinispanServer to JDG during product build.

VERIFIED for ER4.

We are able to see Infinispan resource using ER4 server plug-in and latest JON ER7. And there is only one resource there (correct).