[ https://issues.apache.org/jira/browse/CASSANDRA-16938?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andres de la Peña updated CASSANDRA-16938: ------------------------------------------ Test and Documentation Plan: Some extra tests are included in the PRs Status: Patch Available (was: In Progress) > Missed wait latencies in the output of `nodetool tpstats -F` > ------------------------------------------------------------ > > Key: CASSANDRA-16938 > URL: https://issues.apache.org/jira/browse/CASSANDRA-16938 > Project: Cassandra > Issue Type: Bug > Components: Tool/nodetool > Reporter: Andres de la Peña > Assignee: Andres de la Peña > Priority: Normal > Fix For: 4.1, 4.0.x > > > The output of {{nodetool tpstats -F json}} always prints an empty map for > {{WaitLatencies}}: > {code} > $ nodetool tpstats -F json > ..."WaitLatencies":{},... > {code} > The same happens with yaml output: > {code} > $ nodetool tpstats -F yaml > ... > WaitLatencies: {} > ... > {code} > This happens because [this > cast|https://github.com/apache/cassandra/blob/cassandra-4.0.1/src/java/org/apache/cassandra/tools/nodetool/stats/TpStatsHolder.java#L61-L63] > silently fails inside a try-catch with an empty catch block: > {code} > String[] strValues = (String[]) > Arrays.stream(probe.metricPercentilesAsArray(probe.getMessagingQueueWaitMetrics(entry.getKey()))) > .map(D -> D.toString()) > .toArray(); > {code} > When we would need something like: > {code} > String[] strValues = > Arrays.stream(probe.metricPercentilesAsArray(probe.getMessagingQueueWaitMetrics(entry.getKey()))) > .map(Object::toString) > .toArray(String[]::new); > {code} > This conversion from {{Double[]}} to {{String[]}} was introduced during > CASSANDRA-16230. I think that conversion was done trying to work around a > malformed JSON output detected in [the new > tests|https://github.com/apache/cassandra/blob/cassandra-4.0.1/test/unit/org/apache/cassandra/tools/NodeToolTPStatsTest.java#L158] > added by that ticket. Without the conversion the output would be something > like: > {code} > $ nodetool tpstats -F json > ..."WaitLatencies":{"READ_RSP":[Ljava.lang.Double;@398dada8,... > {code} > That's because {{json-simple}} doesn't handle well arrays. I think that > instead of converting the array of doubles to an array of strings we can > simply use {{jackson-mapper-asl}} to print the proper array. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org