cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andres de la Peña (Jira) <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-16938) Missed wait latencies in the output of `nodetool tpstats -F`
Date Thu, 09 Sep 2021 15:37:00 GMT

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

Andres de la Peña commented on CASSANDRA-16938:
-----------------------------------------------

Please note that the change to {{jackson-mapper-asl}} will produce some formatting differences
in the output. The original output didn't have any pretty-printing:
{code:json}
{"ThreadPools":{"ReadStage":{"TotalBlockedTasks":0,"ActiveTasks":0,"PendingTasks":0,"CurrentlyBlockedTasks":0,"CompletedTasks":1},"CompactionExecutor":(...)}
{code}
While the new output does use pretty-printing:
{code:json}
{
  "ThreadPools" : {
    "CompactionExecutor" : {
      "TotalBlockedTasks" : 0,
      "ActiveTasks" : 0,
      "PendingTasks" : 0,
      "CurrentlyBlockedTasks" : 0,
      "CompletedTasks" : 41
    },
    "MemtableReclaimMemory" : {
(...)
}
{code}
I have attached examples of the output after and before the changes. Of course the old output
doesn't contain the wait latency metrics.

These formatting differences shouldn't be a problem for anyone parsing the output as proper
json, but it might be an issue if someone is trying to parse the output as regular text. If
we think that that can be a problem we can always keep using the old, ugly compact format.

> 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
>
>         Attachments: json-after.txt, json-before.txt
>
>
> 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-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message