[INFRAUTILS-36] showSvcStatus: Status retrieval JMX Operation failed for node 127.0.0.1 (NoSuchElementException) at acquireServiceStatusDetailed(DiagStatusServiceMBeanImpl.java:119) Created: 02/May/18  Updated: 02/May/18  Resolved: 02/May/18

Status: Resolved
Project: infrautils
Component/s: None
Affects Version/s: Fluorine
Fix Version/s: Fluorine

Type: Bug Priority: Medium
Reporter: Michael Vorburger Assignee: Michael Vorburger
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
duplicates INFRAUTILS-31 diagstatus including cause of failures Resolved

 Description   

jluhrsen raised this on https://lists.opendaylight.org/pipermail/infrautils-dev/2018-May/000689.html :

karaf@root()> feature:install odl-openflowplugin-flow-services-rest odl-infrautils-diagstatus odl-infrautils-ready
karaf@root()> showSvcStatus
Timestamp: Tue May 01 16:19:56 PDT 2018
Status retrieval JMX Operation failed for node 127.0.0.1~ karaf@root()>

and this log:

2018-05-01T16:19:56,330 | ERROR | pipe-showSvcStatus | DiagStatusCommand                | 250 - org.opendaylight.infrautils.diagstatus-shell - 1.4.0.SNAPSHOT | Exception while reaching Host 127.0.0.1
javax.management.RuntimeMBeanException: java.util.NoSuchElementException: No value present
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrow(DefaultMBeanServerInterceptor.java:839) [?:?]
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrowMaybeMBeanException(DefaultMBeanServerInterceptor.java:852) [?:?]
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:821) [?:?]
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) [?:?]
        at org.opendaylight.infrautils.diagstatus.MBeanUtils.invokeMBeanFunction(MBeanUtils.java:134) [248:org.opendaylight.infrautils.diagstatus-api:1.4.0.SNAPSHOT]
        at org.opendaylight.infrautils.diagstatus.shell.DiagStatusCommand.getLocalStatusSummary(DiagStatusCommand.java:71) [250:org.opendaylight.infrautils.diagstatus-shell:1.4.0.SNAPSHOT]
        at org.opendaylight.infrautils.diagstatus.shell.DiagStatusCommand.execute(DiagStatusCommand.java:49) [250:org.opendaylight.infrautils.diagstatus-shell:1.4.0.SNAPSHOT]
        at org.apache.karaf.shell.commands.basic.AbstractCommand.execute(AbstractCommand.java:34) [49:org.apache.karaf.shell.core:4.1.5]
        at Proxyb09c3b98_2f98_4a06_b5dd_f9bfb4b3d6de.execute(Unknown Source) [?:?]
        at org.apache.karaf.shell.compat.CommandTracker.execute(CommandTracker.java:120) [49:org.apache.karaf.shell.core:4.1.5]
        at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68) [49:org.apache.karaf.shell.core:4.1.5]
        at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86) [49:org.apache.karaf.shell.core:4.1.5]
        at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:571) [49:org.apache.karaf.shell.core:4.1.5]
        at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:497) [49:org.apache.karaf.shell.core:4.1.5]
        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:386) [49:org.apache.karaf.shell.core:4.1.5]
        at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:417) [49:org.apache.karaf.shell.core:4.1.5]
        at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229) [49:org.apache.karaf.shell.core:4.1.5]
        at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59) [49:org.apache.karaf.shell.core:4.1.5]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.util.NoSuchElementException: No value present
        at java.util.Optional.get(Optional.java:135) ~[?:?]
        at org.opendaylight.infrautils.diagstatus.internal.DiagStatusServiceMBeanImpl.acquireServiceStatusDetailed(DiagStatusServiceMBeanImpl.java:119) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275) ~[?:?]
        at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112) ~[?:?]
        at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46) ~[?:?]
        at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) ~[?:?]
        at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) ~[?:?]
        at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) ~[?:?]
        at javax.management.StandardMBean.invoke(StandardMBean.java:405) ~[?:?]
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) ~[?:?]
        ... 19 more


 Comments   
Comment by Michael Vorburger [ 02/May/18 ]

> at org.opendaylight.infrautils.diagstatus.internal.DiagStatusServiceMBeanImpl.acquireServiceStatusDetailed(DiagStatusServiceMBeanImpl.java:119) ~[?:?]

I was a bit puzzled by this because line 119 in DiagStatusServiceMBeanImpl has no Optional.get(), until I remember that jluhrsen was working on INFRAUTILS-31 and looking at https://git.opendaylight.org/gerrit/#/c/70220/4/diagstatus/impl/src/main/java/org/opendaylight/infrautils/diagstatus/internal/DiagStatusServiceMBeanImpl.java saw that his added this there:

.append(status.getErrorCause().get())

which is causing this. So this is a mistake on that change, which is not present. I'll therefore put a review comment on that change and close this issue.

Staring at this code, and this comment from jluhrsen, has however prompted me to question something in that code:

Something might be wrong in my environment that is blocking localhost/127.0.0.1
from working here?

and I'll follow-up on that in INFRAUTILS-37.

Comment by Jamo Luhrsen [ 02/May/18 ]

I updated INFRAUTILS-38 and 37 with what I learned, and now back to this as it's still a problem to figure out.

I tried to see if I could replicate the problem with a unit test and I thought I was close with this but I realize
that the new UT code was still failing with or without the .get(), so I doubt it now.

Anyway, I can help/debug, but I think I'm limited with what I can do on my own from there. Looking for
guidance.

Generated at Wed Feb 07 20:02:06 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.