Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
 package org.apache.avro.ipc.stats;
 
 import java.util.Map;
 
Collects count and latency statistics about RPC calls. Keeps data for every method. This uses milliseconds as the standard unit of measure throughout the class, stored in floats.
 
 public class StatsPlugin extends RPCPlugin {
  
Static declaration of histogram buckets.
 
   static final Segmenter<StringFloatDEFAULT_SEGMENTER =
     new Histogram.TreeMapSegmenter<Float>(new TreeSet<Float>(Arrays.asList(
             0f,
            25f,
            50f,
            75f,
           100f,
           200f,
           300f,
           500f,
           750f,
          1000f, // 1 second
          2000f,
          5000f,
         10000f,
         60000f, // 1 minute
        600000f)));

  
Per-method histograms. Must be accessed while holding a lock on methodTimings.
 
     new HashMap<MessageFloatHistogram<?>>();

  
RPCs in flight.
 
   private Ticks ticks;
 
   private Segmenter<?, Floatsegmenter;

  
Construct a plugin with custom Ticks and Segmenter implementations.
 
   StatsPlugin(Ticks ticksSegmenter<?, Floatsegmenter) {
     this. = segmenter;
     this. = ticks;
   }

  
Construct a plugin with default (system) ticks, and default histogram segmentation.
 
   public StatsPlugin() {
   }
 
   @Override
   public void serverReceiveRequest(RPCContext context) {
     Stopwatch t = new Stopwatch();
     t.start();
     this..put(contextt);
   }
 
   @Override
   public void serverSendResponse(RPCContext context) {
     Stopwatch t = this..remove(context);
     t.stop();
     publish(contextt);
   }

  
Adds timing to the histograms.
 
   private void publish(RPCContext contextStopwatch t) {
    Message message = context.getMessage();
    if (message == nullthrow new IllegalArgumentException();
    synchronized() {
      FloatHistogram<?> h = .get(context.getMessage());
      if (h == null) {
        h = createNewHistogram();
        .put(context.getMessage(), h);
      }
      h.add(nanosToMillis(t.elapsedNanos()));
    }
  }
  @SuppressWarnings("unchecked")
    return new FloatHistogram();
  }

  
Converts nanoseconds to milliseconds.
  static float nanosToMillis(long elapsedNanos) {
    return elapsedNanos / 1000000.0f;
  }
New to GrepCode? Check out our FAQ X