You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Darrel Schneider (JIRA)" <ji...@apache.org> on 2019/06/04 19:01:00 UTC
[jira] [Created] (GEODE-6828) DistributedCacheOperation._distribute
does synchronization to decide to log trace instead of debug
Darrel Schneider created GEODE-6828:
---------------------------------------
Summary: DistributedCacheOperation._distribute does synchronization to decide to log trace instead of debug
Key: GEODE-6828
URL: https://issues.apache.org/jira/browse/GEODE-6828
Project: Geode
Issue Type: Improvement
Components: core
Reporter: Darrel Schneider
Running the PartitionedPutBenchmark with no redundancy, yourkit reported the 32 server threads doing the put blocked for 77% of the time in this code:
{code:java}
if (mgr.getNormalDistributionManagerIds().size() > 1) {
// suppress this msg if we are the only member.
if (logger.isTraceEnabled()) {
logger.trace("<No Recipients> {}", this);
}
} else {
// suppress this msg if we are the only member.
if (logger.isDebugEnabled()) {
logger.debug("<No Recipients> {}", this);
}
}
{code}
The getNormalDistributionManagerIds method does a sync and this is what they were blocked on. I'm not sure how useful this debug/trace message is (bucket regions with no redundancy will not distribute and that is expected but this will log a message each time).
We also done need the actual set of ids; we just want to know if we have more than 1.
The easiest fix is to test if trace or debug is enabled first. If it is then logging is going to hurt performance anyway, but if it is not then nothing else needs to be checked.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)