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 */
018package org.apache.hadoop.hbase.regionserver;
019
020import java.util.Map;
021import org.apache.yetus.audience.InterfaceAudience;
022
023/**
024 * Interface of class that will wrap an HRegion and export numbers so they can be used in
025 * MetricsRegionSource
026 */
027@InterfaceAudience.Private
028public interface MetricsRegionWrapper {
029
030  /**
031   * Get the name of the table the region belongs to.
032   * @return The string version of the table name.
033   */
034  String getTableName();
035
036  /**
037   * Get the name of the namespace this table is in.
038   * @return String version of the namespace. Can't be empty.
039   */
040  String getNamespace();
041
042  /**
043   * Get the name of the region.
044   * @return The encoded name of the region.
045   */
046  String getRegionName();
047
048  /**
049   * Get the number of stores hosted on this region server.
050   */
051  long getNumStores();
052
053  /**
054   * Get the number of store files hosted on this region server.
055   */
056  long getNumStoreFiles();
057
058  /**
059   * Get the size of the memstore on this region server.
060   */
061  long getMemStoreSize();
062
063  /**
064   * Get the size of the on heap memstore of this region
065   */
066  long getMemStoreHeapSize();
067
068  /**
069   * Get the size of the off heap memstore of this region
070   */
071  long getMemStoreOffHeapSize();
072
073  /**
074   * Get the total size of the store files this region server is serving from.
075   */
076  long getStoreFileSize();
077
078  /**
079   * Gets the current cache % ratio for this region.
080   */
081  float getCurrentRegionCacheRatio();
082
083  /**
084   * Get the total number of read requests that have been issued against this region
085   */
086  long getReadRequestCount();
087
088  /**
089   * Get the total number of CoprocessorService requests that have been issued against this region
090   */
091  long getCpRequestCount();
092
093  /**
094   * Get the total number of filtered read requests that have been issued against this region
095   */
096  long getFilteredReadRequestCount();
097
098  /** Returns Max age of store files under this region */
099  long getMaxStoreFileAge();
100
101  /** Returns Min age of store files under this region */
102  long getMinStoreFileAge();
103
104  /** Returns Average age of store files under this region */
105  long getAvgStoreFileAge();
106
107  /** Returns Number of reference files under this region */
108  long getNumReferenceFiles();
109
110  /**
111   * Get the total number of mutations that have been issued against this region.
112   */
113  long getWriteRequestCount();
114
115  long getTotalRequestCount();
116
117  long getNumFilesCompacted();
118
119  long getNumBytesCompacted();
120
121  long getNumCompactionsCompleted();
122
123  /** Returns Age of the last major compaction */
124  long getLastMajorCompactionAge();
125
126  /**
127   * Returns the total number of compactions that have been reported as failed on this region. Note
128   * that a given compaction can be reported as both completed and failed if an exception is thrown
129   * in the processing after {@code HRegion.compact()}.
130   */
131  long getNumCompactionsFailed();
132
133  /**
134   * Returns the total number of compactions that are currently queued(or being executed) at point
135   * in time
136   */
137  long getNumCompactionsQueued();
138
139  /**
140   * Returns the total number of flushes currently queued(being executed) for this region at point
141   * in time
142   */
143  long getNumFlushesQueued();
144
145  /**
146   * Note that this metric is updated periodically and hence might miss some data points.
147   * @return the max number of compactions queued for this region
148   */
149  long getMaxCompactionQueueSize();
150
151  /**
152   * Note that this metric is updated periodically and hence might miss some data points.
153   * @return the max number of flushes queued for this region
154   */
155  long getMaxFlushQueueSize();
156
157  int getRegionHashCode();
158
159  /**
160   * Get the replica id of this region.
161   */
162  int getReplicaId();
163
164  /** Returns the number of references active on the store */
165  long getStoreRefCount();
166
167  /**
168   * Returns the max number of references active on any store file among all compacted store files
169   * that belong to this region
170   */
171  long getMaxCompactedStoreFileRefCount();
172
173  /** Returns the number of row reads completely on memstore per store */
174  Map<String, Long> getMemstoreOnlyRowReadsCount();
175
176  /** Returns the number of row reads on memstore and file per store */
177  Map<String, Long> getMixedRowReadsCount();
178
179  /**
180   * Returns a hash of the table descriptor that this region was opened with. This hash uniquely
181   * identifies the table configuration (column families, compression, TTL, block size, etc.) and
182   * can be used to determine if a region needs to be reopened to pick up descriptor changes.
183   * @return hex-encoded hash of the serialized TableDescriptor
184   */
185  String getTableDescriptorHash();
186
187}