[
https://issues.apache.org/jira/browse/CASSANDRA-9019?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yuki Morishita updated CASSANDRA-9019:
--------------------------------------
Attachment: 9019.txt
In this case, I think it's better to return string "N/A" (not available) rather
than throwing RuntimeException when Stages are not initialized and JMX
instances are not ready, so that we still can display it in StatusLogger output.
I cannot reproduce with GC, but I used {{nodetool tpstats}} because it uses the
same method in ThreadPoolMetrics. If you do {{nodetool tpstats}} right after
the node starts, you get similar error as follows:
{code}
$ bin/nodetool -p 7100 tpstats
Pool Name Active Pending Completed Blocked All
time blocked
error:
org.apache.cassandra.metrics:type=ThreadPools,path=request,scope=ReadStage,name=ActiveTasks
-- StackTrace --
javax.management.InstanceNotFoundException:
org.apache.cassandra.metrics:type=ThreadPools,path=request,scope=ReadStage,name=ActiveTasks
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:643)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:678)
at
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1464)
at
javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
-- snip --
at
org.apache.cassandra.metrics.ThreadPoolMetrics.getJmxMetric(ThreadPoolMetrics.java:123)
at
org.apache.cassandra.tools.NodeProbe.getThreadPoolMetric(NodeProbe.java:1000)
at
org.apache.cassandra.tools.NodeTool$TpStats.execute(NodeTool.java:2630)
at
org.apache.cassandra.tools.NodeTool$NodeToolCmd.run(NodeTool.java:256)
at org.apache.cassandra.tools.NodeTool.main(NodeTool.java:170)
{code}
After the patch, it shows "N/A" for not yet ready thread pools.
> GCInspector detected GC before ThreadPools are initialized
> ----------------------------------------------------------
>
> Key: CASSANDRA-9019
> URL: https://issues.apache.org/jira/browse/CASSANDRA-9019
> Project: Cassandra
> Issue Type: Bug
> Reporter: Philip Thompson
> Assignee: Yuki Morishita
> Fix For: 3.0
>
> Attachments: 9019.txt
>
>
> While running the dtest {{one_all_test (consistency_test.TestConsistency)}},
> I ran into the following exception:
> {code}
> java.lang.RuntimeException: Error reading:
> org.apache.cassandra.metrics:type=ThreadPools,path=request,scope=ReadStage,name=ActiveTasks
> at
> org.apache.cassandra.metrics.ThreadPoolMetrics.getJmxMetric(ThreadPoolMetrics.java:134)
> at org.apache.cassandra.utils.StatusLogger.log(StatusLogger.java:55)
> at
> org.apache.cassandra.service.GCInspector.handleNotification(GCInspector.java:147)
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor$ListenerWrapper.handleNotification(DefaultMBeanServerInterceptor.java:1754)
> at
> sun.management.NotificationEmitterSupport.sendNotification(NotificationEmitterSupport.java:156)
> at
> sun.management.GarbageCollectorImpl.createGCNotification(GarbageCollectorImpl.java:150)
> Caused by: java.lang.reflect.UndeclaredThrowableException
> at com.sun.proxy.$Proxy3.getValue(Unknown Source)
> at
> org.apache.cassandra.metrics.ThreadPoolMetrics.getJmxMetric(ThreadPoolMetrics.java:123)
> ... 5 more
> Caused by: javax.management.InstanceNotFoundException:
> org.apache.cassandra.metrics:type=ThreadPools,path=request,scope=ReadStage,name=ActiveTasks
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095)
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:643)
> at
> com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:678)
> at
> javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:267)
> ... 7 more
>
> {code}
> Dtest didn't preserve the logs, which implies that this wasn't in the
> system.log, but printed to stderr somehow, it's unclear with all the piping
> dtest and ccm do. I have yet to reproduce the issue.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)