You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "José Andrés Cordero Benítez (Jira)" <ji...@apache.org> on 2019/09/30 13:03:00 UTC

[jira] [Commented] (OAK-8656) ListenerStatsData.toCompositeData() throws NPE

    [ https://issues.apache.org/jira/browse/OAK-8656?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16940942#comment-16940942 ] 

José Andrés Cordero Benítez commented on OAK-8656:
--------------------------------------------------

I have attached a proposed solution for this exception. The solution is based in a null-check in like 565 of the same file, which could mean it is expected the object could be null in some cases. To avoid the exception I just added some null checks for the object.

I added a simple test case to verify the exception is not thrown.

> ListenerStatsData.toCompositeData() throws NPE
> ----------------------------------------------
>
>                 Key: OAK-8656
>                 URL: https://issues.apache.org/jira/browse/OAK-8656
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: documentmk
>            Reporter: José Andrés Cordero Benítez
>            Assignee: Marcel Reutegger
>            Priority: Major
>         Attachments: Granite-26986-npe-ListenerStatsData-toCompositeData.patch
>
>
> Seen recently in an oak-sprout build.
> {noformat}
> 20.08.2019 17:06:17.206 *WARN* [sling-default-3-health-com.adobe.granite.repository.hc.impl.ObservationQueueLengthHealthCheck] com.adobe.granite.repository.hc.impl.ObservationQueueLengthHealthCheck Exception while getting mBean property: ListenerStats
> javax.management.RuntimeMBeanException: java.lang.NullPointerException
> 	at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrow(DefaultMBeanServerInterceptor.java:829)
> 	at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrowMaybeMBeanException(DefaultMBeanServerInterceptor.java:842)
> 	at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:645)
> 	at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:678)
> 	at com.adobe.granite.repository.hc.impl.ObservationQueueLengthHealthCheck.getTabularData(ObservationQueueLengthHealthCheck.java:250)
> 	at com.adobe.granite.repository.hc.impl.ObservationQueueLengthHealthCheck.checkEventListenerStats(ObservationQueueLengthHealthCheck.java:110)
> 	at com.adobe.granite.repository.hc.impl.ObservationQueueLengthHealthCheck.execute(ObservationQueueLengthHealthCheck.java:83)
> 	at com.adobe.granite.queries.impl.hc.QueryHealthCheckMetrics$LazyGauge.execute(QueryHealthCheckMetrics.java:257) [com.adobe.granite.queries:1.0.70]
> 	at com.adobe.granite.queries.impl.hc.QueryHealthCheckMetrics$LazyGauge.lambda$new$0(QueryHealthCheckMetrics.java:244) [com.adobe.granite.queries:1.0.70]
> 	at org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(QuartzJobExecutor.java:347) [org.apache.sling.commons.scheduler:2.7.2]
> 	at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [org.apache.sling.commons.scheduler:2.7.2]
> 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> 	at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.NullPointerException: null
> 	at org.apache.jackrabbit.oak.jcr.observation.ConsolidatedListenerMBeanImpl$ListenerStatsData.toCompositeData(ConsolidatedListenerMBeanImpl.java:423) [org.apache.jackrabbit.oak-jcr:1.18.0.SNAPSHOT]
> 	at org.apache.jackrabbit.oak.jcr.observation.ConsolidatedListenerMBeanImpl.getListenerStats(ConsolidatedListenerMBeanImpl.java:119) [org.apache.jackrabbit.oak-jcr:1.18.0.SNAPSHOT]
> 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> 	at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
> 	at jdk.internal.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
> 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> 	at java.base/sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:260)
> 	at java.management/com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112)
> 	at java.management/com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46)
> 	at java.management/com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)
> 	at java.management/com.sun.jmx.mbeanserver.PerInterface.getAttribute(PerInterface.java:83)
> 	at java.management/com.sun.jmx.mbeanserver.MBeanSupport.getAttribute(MBeanSupport.java:206)
> 	at java.management/javax.management.StandardMBean.getAttribute(StandardMBean.java:372)
> 	at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:641)
> 	... 11 common frames omitted{noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)