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)

Reply via email to