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)