Bug 766574
Summary: | ResourceManager NullPointerException using autoImport.js | ||||||
---|---|---|---|---|---|---|---|
Product: | [Other] RHQ Project | Reporter: | Nabeel Saad <nsaad> | ||||
Component: | CLI | Assignee: | John Mazzitelli <mazz> | ||||
Status: | CLOSED CURRENTRELEASE | QA Contact: | Mike Foley <mfoley> | ||||
Severity: | high | Docs Contact: | |||||
Priority: | high | ||||||
Version: | 3.0.0 | CC: | gcooper, hrupp, loleary, mazz, sappleto | ||||
Target Milestone: | --- | ||||||
Target Release: | RHQ 4.3.0 | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | |||||||
: | 781867 784361 (view as bug list) | Environment: | |||||
Last Closed: | 2013-08-31 10:14:44 UTC | Type: | --- | ||||
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: | 760116, 784361 | ||||||
Attachments: |
|
> at org.rhq.bindings.output.TabularWriter.shortVersion(TabularWriter.java:674)
that line number doesn't match the latest code. I suspect an older version (whose code DOES match up with this line number) is being used - which means there may be compatibility issues.
In any event, I do see where a possible NPE can occur in the shortVersion() method. I'll check in a fix for that one.
git master commit: a638398 - return ((ResourceAvailability) object).getAvailabilityType().getName(); + AvailabilityType availType = ((ResourceAvailability) object).getAvailabilityType(); + return (availType == null) ? "?" : availType.getName(); this fixes the first problem described in this BZ BTW: to test this first fix, log into the CLI and enter this: var criteria = ResourceCriteria(); criteria.addFilterInventoryStatus(InventoryStatus.NEW); ResourceManager.findResourcesByCriteria(criteria); Rather than get an NPE, you should now see the list of resources that are new, with a currentAvailability set to "?" - meaning we haven't received any avail data (which is to be expected for resources not yet in inventory). e.g.: id name version currentAvailability resourceType ----------------------------------------------------------------------------------- 10001 myhost Linux 2.6.38.6-26.r ? Linux 10014 RHQ Agent 4.3.0-SNAPSHOT ? RHQ Agent 10015 myhost:2099 RHQ AS 4.2.3.GA ? JBossAS Server ... as for the second problem, this is the server-side error/stack that I get: 15:02:41,814 ERROR [RemoteSafeInvocationHandler] Failed to invoke remote request javax.naming.NameNotFoundException: remote not bound at org.jnp.server.NamingServer.getBinding(NamingServer.java:529) at org.jnp.server.NamingServer.getBinding(NamingServer.java:537) at org.jnp.server.NamingServer.getObject(NamingServer.java:543) at org.jnp.server.NamingServer.lookup(NamingServer.java:296) at org.jnp.server.NamingServer.lookup(NamingServer.java:270) at org.jnp.server.NamingServer.lookup(NamingServer.java:270) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:667) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627) at javax.naming.InitialContext.lookup(InitialContext.java:392) at org.rhq.enterprise.server.remote.RemoteSafeInvocationHandler.invoke(RemoteSafeInvocationHandler.java:98) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:809) at org.jboss.remoting.transport.servlet.ServletServerInvoker.processRequest(ServletServerInvoker.java:232) at sun.reflect.GeneratedMethodAccessor235.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155) at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94) at org.jboss.mx.server.Invocation.invoke(Invocation.java:86) at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659) at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:288) at $Proxy506.processRequest(Unknown Source) at org.jboss.remoting.transport.servlet.web.ServerInvokerServlet.processRequest(ServerInvokerServlet.java:128) at org.jboss.remoting.transport.servlet.web.ServerInvokerServlet.doPost(ServerInvokerServlet.java:157) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) ... this error is due to a jndi lookup failing to find "rhq/DiscoveryBossBean/remote" - not sure why this is a problem i think this is because someone checked in this change: - public class DiscoveryBossBean implements DiscoveryBossLocal, DiscoveryBossRemote { + public class DiscoveryBossBean implements DiscoveryBossLocal { They removed the explicit implementation of the DiscoveryBossRemote. I'm thinking this might be why this is no longer working. Dammit. I don't know why this change was made, but I have a feeling there was no reason for it. marking this to be included in jon3.0.1 - this is bad. this past change apparently made the discovery SLSB no longer accessible from remote clients/cli master commit: 74fe0df verified rhq master 4.3 Bulk close of old bugs in VERIFIED state. |
Created attachment 545664 [details] Auto import script Description of problem: Hello, I have a JS script called autoImport.js that worked in JON v2.4.1 and all the different JON 3 beta/release candidate versions. However, running it again JON 3.0.0, it seems to throw a couple of different errors. Trying to run through it manually I've hit an error that I don't see when I run the script in it's entirety: var criteria = ResourceCriteria(); criteria.addFilterInventoryStatus(InventoryStatus.NEW); ResourceManager.findResourcesByCriteria(criteria); Throws the following error (in the CLI remoting tool): java.lang.NullPointerException at org.rhq.bindings.output.TabularWriter.shortVersion(TabularWriter.java:674) at org.rhq.bindings.output.TabularWriter.print(TabularWriter.java:337) at org.rhq.bindings.output.TabularWriter.print(TabularWriter.java:123) at org.rhq.enterprise.client.commands.ScriptCommand.execute(ScriptCommand.java:159) at org.rhq.enterprise.client.ClientMain.executePromptCommand(ClientMain.java:317) at org.rhq.enterprise.client.ClientMain$1.run(ClientMain.java:262) at java.lang.Thread.run(Thread.java:662) This seems to be explicitly related to the line: criteria.addFilterInventoryStatus(InventoryStatus.NEW); If I leave it out, I don't get an error, just "no data" as the result. If I modify it to use any other InventoryStatus options, it seems to work as well, but it is a vanilla JON Server so the only resources to be found are "NEW" ones. I tried importing my resource, running the ResourceManager command with "InventoryStatus.COMMITTED" and that worked fine. I then uninventoried the resource and re-ran the command with "InventoryStatus.NEW" and this time did not get the NullPointerException. When I run the attached importResources.js using "exec -f autoImport.js", it doesn't throw this error, but it seems to complain about the line: DiscoveryBoss.importResources(resourceIds); With the following error: sun.org.mozilla.javascript.internal.WrappedException: Wrapped javax.naming.NameNotFoundException: [Warning] remote not bound (<Unknown source>#11) in <Unknown source> at line number 11 Although if I do just type: DiscoveryJBoss into the CLI tool, it returns "Proxy17" which implies it's finding it. Adding a dot (.) I do get auto-completion. Version-Release number of selected component (if applicable): JON 3.0.0 How reproducible: every time Steps to Reproduce: 1. Setup a new JON Server with a resource in the discovery queue 2. Run the autoImport.js via the CLI tool 3. You should see the error thrown in the CLI Actual results: Resource is not imported Expected results: Resource should be imported Additional info: