You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jon Meredith (Jira)" <ji...@apache.org> on 2020/05/04 13:37:00 UTC

[jira] [Comment Edited] (CASSANDRA-15766) NoSpamLogger arguments building objects on hot paths

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

Jon Meredith edited comment on CASSANDRA-15766 at 5/4/20, 1:36 PM:
-------------------------------------------------------------------

I have a small prototype I was working on when I reported the issue that I should clean up.  I wanted to get some feedback on it before posting the patch, but it probably doesn't need to wait.  I'll try and push it up this morning.

The idea was too check the list of objects passed as arguments to check if they were {{Supplier}} s and automatically call get on them if they were.  The downside would be anything that was already a supplier might need to be double-wrapped, but I think that's worth it. I also wanted to work out what the cost of wrapping things like {{org.apache.cassandra.net.InboundMessageHandler#id()}} in a {{Supplier}} versus just the call.


was (Author: jmeredithco):
I have a small prototype I was working on when I reported the issue that I should clean up.  I wanted to get some feedback on it before posting the patch, but it probably doesn't need to wait.  I'll try and push it up this morning.

The idea was too check the list of objects passed as arguments to check if they were {{Supplier}}s and automatically call get on them if they were.  The downside would be anything that was already a supplier might need to be double-wrapped, but I think that's worth it. I also wanted to work out what the cost of wrapping things like {{org.apache.cassandra.net.InboundMessageHandler#id()}} in a {{Supplier}} versus just the call.

> NoSpamLogger arguments building objects on hot paths
> ----------------------------------------------------
>
>                 Key: CASSANDRA-15766
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15766
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Observability/Logging
>            Reporter: Jon Meredith
>            Assignee: Jon Meredith
>            Priority: Normal
>             Fix For: 4.0-rc
>
>
> NoSpamLogger is used in hot logging paths to prevent logs being overrun.  For that to be most effective the arguments to the logger need to be cheap to construct.  During the internode messaging refactor CASSANDRA-15066, performance changes to BufferPool for CASSANDRA-14416
> were accidentally reverted in the merge up from 3.11.
> Reviewing other uses since, it looks like there are a few places where the arguments require some form of String building.
> org.apache.cassandra.net.InboundSink#accept
> org.apache.cassandra.net.InboundMessageHandler#processCorruptFrame
> org.apache.cassandra.net.InboundMessageHandler.LargeMessage#deserialize
> org.apache.cassandra.net.OutboundConnection#onOverloaded
> org.apache.cassandra.utils.memory.BufferPool.GlobalPool#allocateMoreChunks
> Formatting arguments should either be precomputed, or if expensive they should be computed after the decision on whether to noSpamLog has been made.



--
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