View Javadoc

1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.apache.hadoop.hbase.master;
19  
20  import com.google.protobuf.RpcController;
21  import com.google.protobuf.Service;
22  import com.google.protobuf.ServiceException;
23  
24  import java.io.IOException;
25  import java.net.InetSocketAddress;
26  import java.util.ArrayList;
27  import java.util.HashMap;
28  import java.util.List;
29  import java.util.Map;
30  import java.util.Random;
31  import java.util.Set;
32  import java.util.TreeMap;
33  import java.util.concurrent.ConcurrentSkipListMap;
34  
35  import org.apache.hadoop.conf.Configuration;
36  import org.apache.hadoop.fs.FileSystem;
37  import org.apache.hadoop.hbase.CellScannable;
38  import org.apache.hadoop.hbase.CellUtil;
39  import org.apache.hadoop.hbase.ChoreService;
40  import org.apache.hadoop.hbase.CoordinatedStateManager;
41  import org.apache.hadoop.hbase.HRegionInfo;
42  import org.apache.hadoop.hbase.ServerName;
43  import org.apache.hadoop.hbase.TableName;
44  import org.apache.hadoop.hbase.ZooKeeperConnectionException;
45  import org.apache.hadoop.hbase.client.ClusterConnection;
46  import org.apache.hadoop.hbase.client.Get;
47  import org.apache.hadoop.hbase.client.Result;
48  import org.apache.hadoop.hbase.client.Scan;
49  import org.apache.hadoop.hbase.executor.ExecutorService;
50  import org.apache.hadoop.hbase.ipc.HBaseRpcController;
51  import org.apache.hadoop.hbase.ipc.RpcServerInterface;
52  import org.apache.hadoop.hbase.master.TableLockManager.NullTableLockManager;
53  import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
54  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos;
55  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionRequest;
56  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionResponse;
57  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CompactRegionRequest;
58  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CompactRegionResponse;
59  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CompactionSwitchRequest;
60  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CompactionSwitchResponse;
61  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.FlushRegionRequest;
62  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.FlushRegionResponse;
63  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetOnlineRegionRequest;
64  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetOnlineRegionResponse;
65  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetRegionInfoRequest;
66  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetRegionInfoResponse;
67  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetServerInfoRequest;
68  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetServerInfoResponse;
69  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetStoreFileRequest;
70  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetStoreFileResponse;
71  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.MergeRegionsRequest;
72  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.MergeRegionsResponse;
73  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionRequest;
74  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionResponse;
75  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ReplicateWALEntryRequest;
76  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ReplicateWALEntryResponse;
77  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.RollWALWriterRequest;
78  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.RollWALWriterResponse;
79  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.SplitRegionRequest;
80  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.SplitRegionResponse;
81  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.StopServerRequest;
82  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.StopServerResponse;
83  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationRequest;
84  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateConfigurationResponse;
85  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest;
86  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesResponse;
87  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.WarmupRegionRequest;
88  import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.WarmupRegionResponse;
89  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;
90  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.BulkLoadHFileRequest;
91  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.BulkLoadHFileResponse;
92  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.CoprocessorServiceRequest;
93  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.CoprocessorServiceResponse;
94  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.GetRequest;
95  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.GetResponse;
96  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MultiRequest;
97  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutateRequest;
98  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutateResponse;
99  import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.ScanRequest;
100 import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.ScanResponse;
101 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos;
102 import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;
103 import org.apache.hadoop.hbase.quotas.RegionServerQuotaManager;
104 import org.apache.hadoop.hbase.regionserver.CompactionRequestor;
105 import org.apache.hadoop.hbase.regionserver.FlushRequester;
106 import org.apache.hadoop.hbase.regionserver.HRegion;
107 import org.apache.hadoop.hbase.regionserver.HeapMemoryManager;
108 import org.apache.hadoop.hbase.regionserver.Leases;
109 import org.apache.hadoop.hbase.regionserver.MetricsRegionServer;
110 import org.apache.hadoop.hbase.regionserver.Region;
111 import org.apache.hadoop.hbase.regionserver.RegionServerAccounting;
112 import org.apache.hadoop.hbase.regionserver.RegionServerServices;
113 import org.apache.hadoop.hbase.regionserver.ServerNonceManager;
114 import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;
115 import org.apache.hadoop.hbase.util.Bytes;
116 import org.apache.hadoop.hbase.wal.WAL;
117 import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;
118 import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
119 import org.apache.zookeeper.KeeperException;
120 
121 /**
122  * A mock RegionServer implementation.
123  * Use this when you can't bend Mockito to your liking (e.g. return null result
124  * when 'scanning' until master timesout and then return a coherent meta row
125  * result thereafter.  Have some facility for faking gets and scans.  See
126  * setGetResult(byte[], byte[], Result) for how to fill the backing data
127  * store that the get pulls from.
128  */
129 class MockRegionServer
130 implements AdminProtos.AdminService.BlockingInterface,
131 ClientProtos.ClientService.BlockingInterface, RegionServerServices {
132   private final ServerName sn;
133   private final ZooKeeperWatcher zkw;
134   private final Configuration conf;
135   private final Random random = new Random();
136 
137   /**
138    * Map of regions to map of rows and {@link Result}. Used as data source when
139    * {@link #get(RpcController, ClientProtos.GetRequest)} is called. Because we have a byte
140    * key, need to use TreeMap and provide a Comparator.  Use
141    * {@link #setGetResult(byte[], byte[], Result)} filling this map.
142    */
143   private final Map<byte [], Map<byte [], Result>> gets =
144     new TreeMap<byte [], Map<byte [], Result>>(Bytes.BYTES_COMPARATOR);
145 
146   /**
147    * Map of regions to results to return when scanning.
148    */
149   private final Map<byte [], Result []> nexts =
150     new TreeMap<byte [], Result []>(Bytes.BYTES_COMPARATOR);
151 
152   /**
153    * Data structure that holds regionname and index used scanning.
154    */
155   class RegionNameAndIndex {
156     private final byte[] regionName;
157     private int index = 0;
158 
159     RegionNameAndIndex(final byte[] regionName) {
160       this.regionName = regionName;
161     }
162 
163     byte[] getRegionName() {
164       return this.regionName;
165     }
166 
167     int getThenIncrement() {
168       int currentIndex = this.index;
169       this.index++;
170       return currentIndex;
171     }
172   }
173 
174   /**
175    * Outstanding scanners and their offset into <code>nexts</code>
176    */
177   private final Map<Long, RegionNameAndIndex> scannersAndOffsets =
178     new HashMap<Long, RegionNameAndIndex>();
179 
180   /**
181    * @param sn Name of this mock regionserver
182    * @throws IOException
183    * @throws org.apache.hadoop.hbase.ZooKeeperConnectionException
184    */
185   MockRegionServer(final Configuration conf, final ServerName sn)
186   throws ZooKeeperConnectionException, IOException {
187     this.sn = sn;
188     this.conf = conf;
189     this.zkw = new ZooKeeperWatcher(conf, sn.toString(), this, true);
190   }
191 
192   /**
193    * Use this method filling the backing data source used by {@link #get(byte[], Get)}
194    * @param regionName the region name to assign
195    * @param row the row key
196    * @param r the single row result
197    */
198   void setGetResult(final byte [] regionName, final byte [] row, final Result r) {
199     Map<byte [], Result> value = this.gets.get(regionName);
200     if (value == null) {
201       // If no value already, create one.  Needs to be treemap because we are
202       // using byte array as key.   Not thread safe.
203       value = new TreeMap<byte [], Result>(Bytes.BYTES_COMPARATOR);
204       this.gets.put(regionName, value);
205     }
206     value.put(row, r);
207   }
208 
209   /**
210    * Use this method to set what a scanner will reply as we next through
211    * @param regionName
212    * @param rs
213    */
214   void setNextResults(final byte [] regionName, final Result [] rs) {
215     this.nexts.put(regionName, rs);
216   }
217 
218   @Override
219   public boolean isStopped() {
220     // TODO Auto-generated method stub
221     return false;
222   }
223 
224   @Override
225   public void abort(String why, Throwable e) {
226     throw new RuntimeException(this.sn + ": " + why, e);
227   }
228 
229   @Override
230   public boolean isAborted() {
231     return false;
232   }
233 
234   public long openScanner(byte[] regionName, Scan scan) throws IOException {
235     long scannerId = this.random.nextLong();
236     this.scannersAndOffsets.put(scannerId, new RegionNameAndIndex(regionName));
237     return scannerId;
238   }
239 
240   public Result next(long scannerId) throws IOException {
241     RegionNameAndIndex rnai = this.scannersAndOffsets.get(scannerId);
242     int index = rnai.getThenIncrement();
243     Result [] results = this.nexts.get(rnai.getRegionName());
244     if (results == null) return null;
245     return index < results.length? results[index]: null;
246   }
247 
248   public Result [] next(long scannerId, int numberOfRows) throws IOException {
249     // Just return one result whatever they ask for.
250     Result r = next(scannerId);
251     return r == null? null: new Result [] {r};
252   }
253 
254   public void close(final long scannerId) throws IOException {
255     this.scannersAndOffsets.remove(scannerId);
256   }
257 
258   @Override
259   public void stop(String why) {
260     this.zkw.close();
261   }
262 
263   @Override
264   public void addToOnlineRegions(Region r) {
265     // TODO Auto-generated method stub
266   }
267 
268   @Override
269   public boolean removeFromOnlineRegions(Region r, ServerName destination) {
270     // TODO Auto-generated method stub
271     return false;
272   }
273 
274   @Override
275   public HRegion getFromOnlineRegions(String encodedRegionName) {
276     // TODO Auto-generated method stub
277     return null;
278   }
279 
280   @Override
281   public Configuration getConfiguration() {
282     return this.conf;
283   }
284 
285   @Override
286   public ZooKeeperWatcher getZooKeeper() {
287     return this.zkw;
288   }
289 
290   @Override
291   public CoordinatedStateManager getCoordinatedStateManager() {
292     return null;
293   }
294 
295   @Override
296   public ClusterConnection getConnection() {
297     return null;
298   }
299 
300   @Override
301   public MetaTableLocator getMetaTableLocator() {
302     return null;
303   }
304 
305   @Override
306   public ServerName getServerName() {
307     return this.sn;
308   }
309 
310   @Override
311   public boolean isStopping() {
312     return false;
313   }
314 
315   @Override
316   public CompactionRequestor getCompactionRequester() {
317     // TODO Auto-generated method stub
318     return null;
319   }
320 
321   @Override
322   public FlushRequester getFlushRequester() {
323     // TODO Auto-generated method stub
324     return null;
325   }
326 
327   @Override
328   public RegionServerAccounting getRegionServerAccounting() {
329     // TODO Auto-generated method stub
330     return null;
331   }
332 
333   public TableLockManager getTableLockManager() {
334     return new NullTableLockManager();
335   }
336 
337   @Override
338   public RegionServerQuotaManager getRegionServerQuotaManager() {
339     return null;
340   }
341 
342   @Override
343   public void postOpenDeployTasks(Region r) throws KeeperException, IOException {
344     // TODO Auto-generated method stub
345   }
346 
347   @Override
348   public void postOpenDeployTasks(PostOpenDeployContext context) throws KeeperException,
349       IOException {
350     // TODO Auto-generated method stub
351   }
352 
353   @Override
354   public RpcServerInterface getRpcServer() {
355     // TODO Auto-generated method stub
356     return null;
357   }
358 
359   @Override
360   public ConcurrentSkipListMap<byte[], Boolean> getRegionsInTransitionInRS() {
361     // TODO Auto-generated method stub
362     return null;
363   }
364 
365   @Override
366   public FileSystem getFileSystem() {
367     // TODO Auto-generated method stub
368     return null;
369   }
370 
371   @Override
372   public GetResponse get(RpcController controller, GetRequest request)
373   throws ServiceException {
374     byte[] regionName = request.getRegion().getValue().toByteArray();
375     Map<byte [], Result> m = this.gets.get(regionName);
376     GetResponse.Builder builder = GetResponse.newBuilder();
377     if (m != null) {
378       byte[] row = request.getGet().getRow().toByteArray();
379       builder.setResult(ProtobufUtil.toResult(m.get(row)));
380     }
381     return builder.build();
382   }
383 
384 
385 
386 
387   @Override
388   public MutateResponse mutate(RpcController controller, MutateRequest request)
389       throws ServiceException {
390     // TODO Auto-generated method stub
391     return null;
392   }
393 
394   @Override
395   public ScanResponse scan(RpcController controller, ScanRequest request)
396       throws ServiceException {
397     ScanResponse.Builder builder = ScanResponse.newBuilder();
398     try {
399       if (request.hasScan()) {
400         byte[] regionName = request.getRegion().getValue().toByteArray();
401         builder.setScannerId(openScanner(regionName, null));
402         builder.setMoreResults(true);
403       }
404       else {
405         long scannerId = request.getScannerId();
406         Result result = next(scannerId);
407         if (result != null) {
408           builder.addCellsPerResult(result.size());
409           List<CellScannable> results = new ArrayList<CellScannable>(1);
410           results.add(result);
411           ((HBaseRpcController) controller).setCellScanner(CellUtil
412               .createCellScanner(results));
413           builder.setMoreResults(true);
414         }
415         else {
416           builder.setMoreResults(false);
417           close(scannerId);
418         }
419       }
420     } catch (IOException ie) {
421       throw new ServiceException(ie);
422     }
423     return builder.build();
424   }
425 
426   @Override
427   public BulkLoadHFileResponse bulkLoadHFile(RpcController controller,
428       BulkLoadHFileRequest request) throws ServiceException {
429     // TODO Auto-generated method stub
430     return null;
431   }
432 
433   @Override
434   public ClientProtos.CoprocessorServiceResponse execService(RpcController controller,
435       ClientProtos.CoprocessorServiceRequest request) throws ServiceException {
436     return null;
437   }
438 
439   @Override
440   public org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MultiResponse multi(
441       RpcController controller, MultiRequest request) throws ServiceException {
442     // TODO Auto-generated method stub
443     return null;
444   }
445 
446   @Override
447   public GetRegionInfoResponse getRegionInfo(RpcController controller,
448       GetRegionInfoRequest request) throws ServiceException {
449     GetRegionInfoResponse.Builder builder = GetRegionInfoResponse.newBuilder();
450     builder.setRegionInfo(HRegionInfo.convert(HRegionInfo.FIRST_META_REGIONINFO));
451     return builder.build();
452   }
453 
454   @Override
455   public GetStoreFileResponse getStoreFile(RpcController controller,
456       GetStoreFileRequest request) throws ServiceException {
457     // TODO Auto-generated method stub
458     return null;
459   }
460 
461   @Override
462   public GetOnlineRegionResponse getOnlineRegion(RpcController controller,
463       GetOnlineRegionRequest request) throws ServiceException {
464     // TODO Auto-generated method stub
465     return null;
466   }
467 
468   @Override
469   public List<Region> getOnlineRegions() {
470     return null;
471   }
472 
473   @Override
474   public OpenRegionResponse openRegion(RpcController controller,
475       OpenRegionRequest request) throws ServiceException {
476     // TODO Auto-generated method stub
477     return null;
478   }
479 
480   @Override
481   public WarmupRegionResponse warmupRegion(RpcController controller,
482       WarmupRegionRequest request) throws ServiceException {
483     //TODO Auto-generated method stub
484     return null;
485   }
486   @Override
487   public CloseRegionResponse closeRegion(RpcController controller,
488       CloseRegionRequest request) throws ServiceException {
489     // TODO Auto-generated method stub
490     return null;
491   }
492 
493   @Override
494   public FlushRegionResponse flushRegion(RpcController controller,
495       FlushRegionRequest request) throws ServiceException {
496     // TODO Auto-generated method stub
497     return null;
498   }
499 
500   @Override
501   public SplitRegionResponse splitRegion(RpcController controller,
502       SplitRegionRequest request) throws ServiceException {
503     // TODO Auto-generated method stub
504     return null;
505   }
506 
507   @Override
508   public MergeRegionsResponse mergeRegions(RpcController controller,
509       MergeRegionsRequest request) throws ServiceException {
510     // TODO Auto-generated method stub
511     return null;
512   }
513 
514   @Override
515   public CompactionSwitchResponse compactionSwitch(RpcController controller,
516       CompactionSwitchRequest request) throws ServiceException {
517     return null;
518   }
519 
520   @Override
521   public CompactRegionResponse compactRegion(RpcController controller,
522       CompactRegionRequest request) throws ServiceException {
523     // TODO Auto-generated method stub
524     return null;
525   }
526 
527   @Override
528   public ReplicateWALEntryResponse replicateWALEntry(RpcController controller,
529       ReplicateWALEntryRequest request) throws ServiceException {
530     // TODO Auto-generated method stub
531     return null;
532   }
533 
534   @Override
535   public RollWALWriterResponse rollWALWriter(RpcController controller,
536       RollWALWriterRequest request) throws ServiceException {
537     // TODO Auto-generated method stub
538     return null;
539   }
540 
541   @Override
542   public GetServerInfoResponse getServerInfo(RpcController controller,
543       GetServerInfoRequest request) throws ServiceException {
544     // TODO Auto-generated method stub
545     return null;
546   }
547 
548   @Override
549   public StopServerResponse stopServer(RpcController controller,
550       StopServerRequest request) throws ServiceException {
551     // TODO Auto-generated method stub
552     return null;
553   }
554 
555   @Override
556   public List<Region> getOnlineRegions(TableName tableName) throws IOException {
557     // TODO Auto-generated method stub
558     return null;
559   }
560 
561   @Override
562   public Set<TableName> getOnlineTables() {
563     return null;
564   }
565 
566   @Override
567   public Leases getLeases() {
568     // TODO Auto-generated method stub
569     return null;
570   }
571 
572   @Override
573   public WAL getWAL(HRegionInfo regionInfo) throws IOException {
574     return null;
575   }
576 
577   @Override
578   public ExecutorService getExecutorService() {
579     return null;
580   }
581 
582   @Override
583   public ChoreService getChoreService() {
584     return null;
585   }
586 
587   @Override
588   public void updateRegionFavoredNodesMapping(String encodedRegionName,
589       List<org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerName> favoredNodes) {
590   }
591 
592   @Override
593   public InetSocketAddress[] getFavoredNodesForRegion(String encodedRegionName) {
594     return null;
595   }
596 
597   @Override
598   public ReplicateWALEntryResponse
599       replay(RpcController controller, ReplicateWALEntryRequest request)
600       throws ServiceException {
601     // TODO Auto-generated method stub
602     return null;
603   }
604 
605   @Override
606   public Map<String, Region> getRecoveringRegions() {
607     // TODO Auto-generated method stub
608     return null;
609   }
610 
611   @Override
612   public UpdateFavoredNodesResponse updateFavoredNodes(RpcController controller,
613       UpdateFavoredNodesRequest request) throws ServiceException {
614     return null;
615   }
616 
617   @Override
618   public ServerNonceManager getNonceManager() {
619     return null;
620   }
621 
622   @Override
623   public boolean reportRegionStateTransition(TransitionCode code, HRegionInfo... hris) {
624     return false;
625   }
626 
627   @Override
628   public boolean reportRegionStateTransition(TransitionCode code, long openSeqNum,
629       HRegionInfo... hris) {
630     return false;
631   }
632 
633   @Override
634   public boolean reportRegionStateTransition(RegionStateTransitionContext context) {
635     return false;
636   }
637 
638   @Override
639   public boolean registerService(Service service) {
640     // TODO Auto-generated method stub
641     return false;
642   }
643 
644   @Override
645   public CoprocessorServiceResponse execRegionServerService(RpcController controller,
646       CoprocessorServiceRequest request) throws ServiceException {
647     // TODO Auto-generated method stub
648     return null;
649   }
650 
651   @Override
652   public UpdateConfigurationResponse updateConfiguration(
653       RpcController controller, UpdateConfigurationRequest request)
654       throws ServiceException {
655     return null;
656   }
657 
658   @Override
659   public AdminProtos.ClearSlowLogResponses clearSlowLogsResponses(RpcController controller,
660     AdminProtos.ClearSlowLogResponseRequest request) throws ServiceException {
661     return null;
662   }
663 
664   @Override
665   public HBaseProtos.LogEntry getLogEntries(RpcController controller,
666       HBaseProtos.LogRequest request) throws ServiceException {
667     return null;
668   }
669 
670   @Override
671   public HeapMemoryManager getHeapMemoryManager() {
672     return null;
673   }
674 
675   @Override
676   public double getCompactionPressure() {
677     return 0;
678   }
679 
680   @Override
681   public ThroughputController getFlushThroughputController() {
682     return null;
683   }
684 
685   @Override
686   public double getFlushPressure() {
687     return 0;
688   }
689 
690   @Override
691   public MetricsRegionServer getMetrics() {
692     return null;
693   }
694 
695   @Override
696   public void unassign(byte[] regionName) throws IOException {
697   }
698 }