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

ASF GitHub Bot commented on ZOOKEEPER-2770:
-------------------------------------------

Github user eribeiro commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/307#discussion_r146108343
  
    --- Diff: src/java/main/org/apache/zookeeper/server/ServerStats.java ---
    @@ -21,17 +21,32 @@
     
     
     import org.apache.zookeeper.common.Time;
    +import org.apache.zookeeper.server.quorum.QuorumPeerConfig;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;
    +
    +import java.util.Timer;
    +import java.util.TimerTask;
     
     /**
      * Basic Server Statistics
      */
     public class ServerStats {
    +    private static final Logger LOG = 
LoggerFactory.getLogger(ServerStats.class);
    +
         private long packetsSent;
         private long packetsReceived;
         private long maxLatency;
         private long minLatency = Long.MAX_VALUE;
         private long totalLatency = 0;
         private long count = 0;
    +    private long numRequestsAboveThresholdTime = 0;
    +
    +    final static long requestWarnThresholdMs = 
QuorumPeerConfig.getRequestWarnResponseThresholdMs();
    +    final static Timer timer = new Timer();
    +    volatile Boolean waitForLoggingWarnThresholdMsg = false;
    --- End diff --
    
    Oh, excuse me, I got it. It's because you are synchronizing on it, right? 
Well, it's not recommended (anti-pattern) to synchronize on non-final fields. 
Didn't Findbugs raised a warning about this?


> ZooKeeper slow operation log
> ----------------------------
>
>                 Key: ZOOKEEPER-2770
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770
>             Project: ZooKeeper
>          Issue Type: Improvement
>            Reporter: Karan Mehta
>            Assignee: Karan Mehta
>         Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, 
> ZOOKEEPER-2770.003.patch
>
>
> ZooKeeper is a complex distributed application. There are many reasons why 
> any given read or write operation may become slow: a software bug, a protocol 
> problem, a hardware issue with the commit log(s), a network issue. If the 
> problem is constant it is trivial to come to an understanding of the cause. 
> However in order to diagnose intermittent problems we often don't know where, 
> or when, to begin looking. We need some sort of timestamped indication of the 
> problem. Although ZooKeeper is not a datastore, it does persist data, and can 
> suffer intermittent performance degradation, and should consider implementing 
> a 'slow query' log, a feature very common to services which persist 
> information on behalf of clients which may be sensitive to latency while 
> waiting for confirmation of successful persistence.
> Log the client and request details if the server discovers, when finally 
> processing the request, that the current time minus arrival time of the 
> request is beyond a configured threshold. 
> Look at the HBase {{responseTooSlow}} feature for inspiration. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to