Bug 1030452

Summary: Consider removing parsed plugin descriptors after parsing
Product: [Other] RHQ Project Reporter: Heiko W. Rupp <hrupp>
Component: Plugin Container, PerformanceAssignee: Heiko W. Rupp <hrupp>
Status: CLOSED CURRENTRELEASE QA Contact: Mike Foley <mfoley>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 4.9CC: hrupp, mazz
Target Milestone: ---   
Target Release: RHQ 4.10   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-04-23 12:30:22 UTC 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:    
Bug Blocks: 1069642    
Attachments:
Description Flags
Possible patch none

Description Heiko W. Rupp 2013-11-14 13:32:48 UTC
The PluginMetadataManager keeps a list of plugin parsers and plugin descriptors around even after all the parsing has been done. On my local agent, they account for ~3MB (of a 25MB heap) of objects that are probably no longer needed.
If they are needed at plugin update time, we should be able to just re-parse the needed ones for this purpose.

Comment 1 Heiko W. Rupp 2013-11-14 14:26:20 UTC
It looks like some parts are still used later:

	org.rhq.core.pc.plugin.PluginComponentFactory.instantiateClass(PluginComponentFactory.java:303)
	at org.rhq.core.pc.plugin.PluginComponentFactory.getDiscoveryComponent(PluginComponentFactory.java:98)
	at org.rhq.core.pc.inventory.InventoryManager.discoverPlatform(InventoryManager.java:2293)

Comment 2 Heiko W. Rupp 2013-12-06 09:03:05 UTC
Created attachment 833476 [details]
Possible patch

Comment 3 John Mazzitelli 2013-12-11 20:56:19 UTC
We need to be careful and account for all the places with the descriptor might be needed in the future. As comment #1 indicates, getting classes from the descriptor is usually needed (resource component and discovery component).

The attached patch will work to clean the memory out, but I worry what happens when we need the descriptor later during runtime. Parsing the XML descriptor can be expensive, especially if we do it all them time to get those classnames.

Comment 4 Heiko W. Rupp 2013-12-12 07:53:55 UTC
Mazz, Comment 1 was long before I provided the attached patch. Unfortunately BZ does not allow to remove a comment or mark as obsolete.
The class names are stored in (two?) map(s), that are not thrown away by the patch.

Comment 5 Heiko W. Rupp 2014-02-05 09:33:20 UTC
master bba7267

Comment 6 Heiko W. Rupp 2014-04-23 12:30:22 UTC
Bulk closing of 4.10 issues.

If an issue is not solved for you, please open a new BZ (or clone the existing one) with a version designator of 4.10.