Bug 786196

Summary: Plugins: plugin components should not log stack traces when native system layer (i.e. SIGAR) is not available
Product: [Other] RHQ Project Reporter: Ian Springer <ian.springer>
Component: PluginsAssignee: Nobody <nobody>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 4.2CC: hrupp
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Ian Springer 2012-01-31 17:18:25 UTC
Lack of SIGAR is an expected/non-error state, which our core plugins should check for and handle gracefully. It's fine for the plugins to log a warning or info message, but they should not log stack traces or errors.

Here are two cases of this I see in my agent.log file after having started the Agent with the -t command line option:

1) jmx plugin:

2012-01-31 12:07:08,749 WARN  [ResourceContainer.invoker.daemon-1] (rhq.core.pluginapi.inventory.ResourceContext)- Cannot get native process for resource [InternalVM] - discovery failed
java.lang.Exception: Discovery component invocation failed.
	at org.rhq.core.pc.util.DiscoveryComponentProxyFactory$ComponentInvocationThread.call(DiscoveryComponentProxyFactory.java:296)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.UnsupportedOperationException: No native library available - Cannot get information on this process without native support
	at org.rhq.core.system.JavaSystemInfo.getUnsupportedException(JavaSystemInfo.java:304)
	at org.rhq.core.system.JavaSystemInfo.getThisProcess(JavaSystemInfo.java:170)
	at org.rhq.plugins.jmx.InternalJMXServerDiscoveryComponent.discoverResources(InternalJMXServerDiscoveryComponent.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.rhq.core.pc.util.DiscoveryComponentProxyFactory$ComponentInvocationThread.call(DiscoveryComponentProxyFactory.java:292)
	... 5 more


2) postgres plugin:

2012-01-31 12:07:10,133 ERROR [main] (rhq.core.pc.inventory.InventoryManager)- Exception thrown while activating [Resource[id=10006, type=Postgres Server, key=jdbc:postgresql://127.0.0.1:5432/postgres, name=postgres, parent=jetengine, version=9.0.6]].
org.rhq.core.clientapi.agent.PluginContainerException: Failed to start component for resource Resource[id=10006, type=Postgres Server, key=jdbc:postgresql://127.0.0.1:5432/postgres, name=postgres, parent=jetengine, version=9.0.6].
	at org.rhq.core.pc.inventory.InventoryManager.activateResource(InventoryManager.java:1619)
	at org.rhq.core.pc.inventory.InventoryManager.activateAndUpgradeResourceRecursively(InventoryManager.java:2845)
	at org.rhq.core.pc.inventory.InventoryManager.activateAndUpgradeResourceRecursively(InventoryManager.java:2847)
	at org.rhq.core.pc.inventory.InventoryManager.activateAndUpgradeResources(InventoryManager.java:2806)
	at org.rhq.core.pc.inventory.InventoryManager.initialize(InventoryManager.java:232)
	at org.rhq.core.pc.PluginContainer.startContainerService(PluginContainer.java:431)
	at org.rhq.core.pc.PluginContainer.initialize(PluginContainer.java:282)
	at org.rhq.enterprise.agent.AgentMain.startPluginContainer(AgentMain.java:1888)
	at org.rhq.enterprise.agent.AgentMain.start(AgentMain.java:649)
	at org.rhq.enterprise.agent.AgentMain.main(AgentMain.java:419)
Caused by: java.lang.UnsupportedOperationException: No native library available - Cannot get the process table information without native support
	at org.rhq.core.system.JavaSystemInfo.getUnsupportedException(JavaSystemInfo.java:304)
	at org.rhq.core.system.JavaSystemInfo.getProcesses(JavaSystemInfo.java:160)
	at org.rhq.plugins.postgres.PostgresServerComponent.findProcessInfo(PostgresServerComponent.java:459)
	at org.rhq.plugins.postgres.PostgresServerComponent.start(PostgresServerComponent.java:101)
	at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.rhq.core.pc.inventory.ResourceContainer$ComponentInvocationThread.call(ResourceContainer.java:552)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)


3)

Comment 1 Mike Foley 2012-02-06 17:02:30 UTC
per bz triage (asantos, ccrouch, mfoley. loleary)