001/**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019package org.apache.hadoop.hbase.replication.regionserver;
020
021import org.apache.hadoop.metrics2.lib.MutableFastCounter;
022import org.apache.hadoop.metrics2.lib.MutableHistogram;
023import org.apache.yetus.audience.InterfaceAudience;
024
025@InterfaceAudience.Private
026public class MetricsReplicationSinkSourceImpl implements MetricsReplicationSinkSource {
027
028  private final MutableHistogram ageHist;
029  private final MutableFastCounter batchesCounter;
030  private final MutableFastCounter opsCounter;
031  private final MutableFastCounter hfilesCounter;
032
033  public MetricsReplicationSinkSourceImpl(MetricsReplicationSourceImpl rms) {
034    ageHist = rms.getMetricsRegistry().getHistogram(SINK_AGE_OF_LAST_APPLIED_OP);
035    batchesCounter = rms.getMetricsRegistry().getCounter(SINK_APPLIED_BATCHES, 0L);
036    opsCounter = rms.getMetricsRegistry().getCounter(SINK_APPLIED_OPS, 0L);
037    hfilesCounter = rms.getMetricsRegistry().getCounter(SINK_APPLIED_HFILES, 0L);
038  }
039
040  @Override public void setLastAppliedOpAge(long age) {
041    ageHist.add(age);
042  }
043
044  @Override public void incrAppliedBatches(long batches) {
045    batchesCounter.incr(batches);
046  }
047
048  @Override public void incrAppliedOps(long batchsize) {
049    opsCounter.incr(batchsize);
050  }
051
052  @Override
053  public long getLastAppliedOpAge() {
054    return ageHist.getMax();
055  }
056
057  @Override
058  public void incrAppliedHFiles(long hfiles) {
059    hfilesCounter.incr(hfiles);
060  }
061}