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.master;
019
020import java.io.IOException;
021import java.net.InetSocketAddress;
022import java.util.ArrayList;
023import java.util.Collection;
024import java.util.Collections;
025import java.util.HashMap;
026import java.util.List;
027import java.util.Map;
028import java.util.Map.Entry;
029import java.util.Optional;
030import java.util.TreeMap;
031import java.util.concurrent.ConcurrentSkipListMap;
032import java.util.concurrent.ThreadLocalRandom;
033import org.apache.hadoop.conf.Configuration;
034import org.apache.hadoop.fs.FileSystem;
035import org.apache.hadoop.hbase.Abortable;
036import org.apache.hadoop.hbase.CellScannable;
037import org.apache.hadoop.hbase.CellUtil;
038import org.apache.hadoop.hbase.ChoreService;
039import org.apache.hadoop.hbase.CoordinatedStateManager;
040import org.apache.hadoop.hbase.ServerName;
041import org.apache.hadoop.hbase.TableDescriptors;
042import org.apache.hadoop.hbase.TableName;
043import org.apache.hadoop.hbase.ZooKeeperConnectionException;
044import org.apache.hadoop.hbase.client.AsyncClusterConnection;
045import org.apache.hadoop.hbase.client.Connection;
046import org.apache.hadoop.hbase.client.RegionInfo;
047import org.apache.hadoop.hbase.client.RegionInfoBuilder;
048import org.apache.hadoop.hbase.client.Result;
049import org.apache.hadoop.hbase.client.Scan;
050import org.apache.hadoop.hbase.client.locking.EntityLock;
051import org.apache.hadoop.hbase.executor.ExecutorService;
052import org.apache.hadoop.hbase.io.hfile.BlockCache;
053import org.apache.hadoop.hbase.ipc.HBaseRpcController;
054import org.apache.hadoop.hbase.ipc.RpcServerInterface;
055import org.apache.hadoop.hbase.mob.MobFileCache;
056import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;
057import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;
058import org.apache.hadoop.hbase.quotas.RegionSizeStore;
059import org.apache.hadoop.hbase.regionserver.FlushRequester;
060import org.apache.hadoop.hbase.regionserver.HRegion;
061import org.apache.hadoop.hbase.regionserver.HeapMemoryManager;
062import org.apache.hadoop.hbase.regionserver.LeaseManager;
063import org.apache.hadoop.hbase.regionserver.MetricsRegionServer;
064import org.apache.hadoop.hbase.regionserver.RegionServerAccounting;
065import org.apache.hadoop.hbase.regionserver.RegionServerServices;
066import org.apache.hadoop.hbase.regionserver.ReplicationSourceService;
067import org.apache.hadoop.hbase.regionserver.SecureBulkLoadManager;
068import org.apache.hadoop.hbase.regionserver.ServerNonceManager;
069import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequester;
070import org.apache.hadoop.hbase.regionserver.regionreplication.RegionReplicationBufferManager;
071import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;
072import org.apache.hadoop.hbase.security.access.AccessChecker;
073import org.apache.hadoop.hbase.security.access.ZKPermissionWatcher;
074import org.apache.hadoop.hbase.util.Bytes;
075import org.apache.hadoop.hbase.wal.WAL;
076import org.apache.hadoop.hbase.zookeeper.ZKWatcher;
077
078import org.apache.hbase.thirdparty.com.google.protobuf.RpcController;
079import org.apache.hbase.thirdparty.com.google.protobuf.Service;
080import org.apache.hbase.thirdparty.com.google.protobuf.ServiceException;
081
082import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
083import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos;
084import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesRequest;
085import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearCompactionQueuesResponse;
086import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearRegionBlockCacheRequest;
087import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearRegionBlockCacheResponse;
088import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearSlowLogResponseRequest;
089import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ClearSlowLogResponses;
090import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionRequest;
091import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CloseRegionResponse;
092import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionRequest;
093import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionResponse;
094import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactionSwitchRequest;
095import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactionSwitchResponse;
096import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresRequest;
097import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ExecuteProceduresResponse;
098import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionRequest;
099import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.FlushRegionResponse;
100import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetCachedFilesListRequest;
101import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetCachedFilesListResponse;
102import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionRequest;
103import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetOnlineRegionResponse;
104import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoRequest;
105import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse;
106import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadRequest;
107import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionLoadResponse;
108import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoRequest;
109import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetServerInfoResponse;
110import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileRequest;
111import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetStoreFileResponse;
112import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionRequest;
113import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.OpenRegionResponse;
114import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ReplicateWALEntryRequest;
115import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.ReplicateWALEntryResponse;
116import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterRequest;
117import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.RollWALWriterResponse;
118import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerRequest;
119import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.StopServerResponse;
120import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationRequest;
121import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateConfigurationResponse;
122import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest;
123import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.UpdateFavoredNodesResponse;
124import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WarmupRegionRequest;
125import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WarmupRegionResponse;
126import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos;
127import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.BulkLoadHFileRequest;
128import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.BulkLoadHFileResponse;
129import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadRequest;
130import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CleanupBulkLoadResponse;
131import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest;
132import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceResponse;
133import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.GetRequest;
134import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.GetResponse;
135import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MultiRequest;
136import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutateRequest;
137import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.MutateResponse;
138import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadRequest;
139import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.PrepareBulkLoadResponse;
140import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanRequest;
141import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ScanResponse;
142import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;
143import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsRequest;
144import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.GetSpaceQuotaSnapshotsResponse;
145
146/**
147 * A mock RegionServer implementation. Use this when you can't bend Mockito to your liking (e.g.
148 * return null result when 'scanning' until master timesout and then return a coherent meta row
149 * result thereafter. Have some facility for faking gets and scans. See setGetResult(byte[], byte[],
150 * Result) for how to fill the backing data store that the get pulls from.
151 */
152class MockRegionServer implements AdminProtos.AdminService.BlockingInterface,
153  ClientProtos.ClientService.BlockingInterface, RegionServerServices {
154  private final ServerName sn;
155  private final ZKWatcher zkw;
156  private final Configuration conf;
157
158  /**
159   * Map of regions to map of rows and {@link Result}. Used as data source when
160   * {@link #get(RpcController, ClientProtos.GetRequest)} is called. Because we have a byte key,
161   * need to use TreeMap and provide a Comparator. Use {@link #setGetResult(byte[], byte[], Result)}
162   * filling this map.
163   */
164  private final Map<byte[], Map<byte[], Result>> gets = new TreeMap<>(Bytes.BYTES_COMPARATOR);
165
166  /**
167   * Map of regions to results to return when scanning.
168   */
169  private final Map<byte[], Result[]> nexts = new TreeMap<>(Bytes.BYTES_COMPARATOR);
170
171  /**
172   * Data structure that holds regionname and index used scanning.
173   */
174  class RegionNameAndIndex {
175    private final byte[] regionName;
176    private int index = 0;
177
178    RegionNameAndIndex(final byte[] regionName) {
179      this.regionName = regionName;
180    }
181
182    byte[] getRegionName() {
183      return this.regionName;
184    }
185
186    int getThenIncrement() {
187      int currentIndex = this.index;
188      this.index++;
189      return currentIndex;
190    }
191  }
192
193  /**
194   * Outstanding scanners and their offset into <code>nexts</code>
195   */
196  private final Map<Long, RegionNameAndIndex> scannersAndOffsets = new HashMap<>();
197
198  /**
199   * @param sn Name of this mock regionserver
200   */
201  MockRegionServer(final Configuration conf, final ServerName sn)
202    throws ZooKeeperConnectionException, IOException {
203    this.sn = sn;
204    this.conf = conf;
205    this.zkw = new ZKWatcher(conf, sn.toString(), this, true);
206  }
207
208  /**
209   * Use this method filling the backing data source used by
210   * {@link #get(RpcController, ClientProtos.GetRequest)}
211   * @param regionName the region name to assign
212   * @param row        the row key
213   * @param r          the single row result
214   */
215  void setGetResult(final byte[] regionName, final byte[] row, final Result r) {
216    Map<byte[], Result> value = this.gets.get(regionName);
217    if (value == null) {
218      // If no value already, create one. Needs to be treemap because we are
219      // using byte array as key. Not thread safe.
220      value = new TreeMap<>(Bytes.BYTES_COMPARATOR);
221      this.gets.put(regionName, value);
222    }
223    value.put(row, r);
224  }
225
226  /**
227   * Use this method to set what a scanner will reply as we next through
228   */
229  void setNextResults(final byte[] regionName, final Result[] rs) {
230    this.nexts.put(regionName, rs);
231  }
232
233  @Override
234  public boolean isStopped() {
235    return false;
236  }
237
238  @Override
239  public void abort(String why, Throwable e) {
240    throw new RuntimeException(this.sn + ": " + why, e);
241  }
242
243  @Override
244  public boolean isAborted() {
245    return false;
246  }
247
248  public long openScanner(byte[] regionName, Scan scan) throws IOException {
249    long scannerId = ThreadLocalRandom.current().nextLong();
250    this.scannersAndOffsets.put(scannerId, new RegionNameAndIndex(regionName));
251    return scannerId;
252  }
253
254  public Result next(long scannerId) throws IOException {
255    RegionNameAndIndex rnai = this.scannersAndOffsets.get(scannerId);
256    int index = rnai.getThenIncrement();
257    Result[] results = this.nexts.get(rnai.getRegionName());
258    if (results == null) return null;
259    return index < results.length ? results[index] : null;
260  }
261
262  public Result[] next(long scannerId, int numberOfRows) throws IOException {
263    // Just return one result whatever they ask for.
264    Result r = next(scannerId);
265    return r == null ? null : new Result[] { r };
266  }
267
268  public void close(final long scannerId) throws IOException {
269    this.scannersAndOffsets.remove(scannerId);
270  }
271
272  @Override
273  public void stop(String why) {
274    this.zkw.close();
275  }
276
277  @Override
278  public void addRegion(HRegion r) {
279  }
280
281  @Override
282  public boolean removeRegion(HRegion r, ServerName destination) {
283    return false;
284  }
285
286  @Override
287  public HRegion getRegion(String encodedRegionName) {
288    return null;
289  }
290
291  @Override
292  public Configuration getConfiguration() {
293    return this.conf;
294  }
295
296  @Override
297  public ZKWatcher getZooKeeper() {
298    return this.zkw;
299  }
300
301  @Override
302  public CoordinatedStateManager getCoordinatedStateManager() {
303    return null;
304  }
305
306  @Override
307  public Connection getConnection() {
308    return null;
309  }
310
311  @Override
312  public ServerName getServerName() {
313    return this.sn;
314  }
315
316  @Override
317  public boolean isStopping() {
318    return false;
319  }
320
321  @Override
322  public FlushRequester getFlushRequester() {
323    return null;
324  }
325
326  @Override
327  public CompactionRequester getCompactionRequestor() {
328    return null;
329  }
330
331  @Override
332  public RegionServerAccounting getRegionServerAccounting() {
333    return null;
334  }
335
336  @Override
337  public RegionServerRpcQuotaManager getRegionServerRpcQuotaManager() {
338    return null;
339  }
340
341  @Override
342  public void postOpenDeployTasks(PostOpenDeployContext context) throws IOException {
343  }
344
345  @Override
346  public RpcServerInterface getRpcServer() {
347    return null;
348  }
349
350  @Override
351  public ConcurrentSkipListMap<byte[], Boolean> getRegionsInTransitionInRS() {
352    return null;
353  }
354
355  @Override
356  public FileSystem getFileSystem() {
357    return null;
358  }
359
360  @Override
361  public GetResponse get(RpcController controller, GetRequest request) throws ServiceException {
362    byte[] regionName = request.getRegion().getValue().toByteArray();
363    Map<byte[], Result> m = this.gets.get(regionName);
364    GetResponse.Builder builder = GetResponse.newBuilder();
365    if (m != null) {
366      byte[] row = request.getGet().getRow().toByteArray();
367      builder.setResult(ProtobufUtil.toResult(m.get(row)));
368    }
369    return builder.build();
370  }
371
372  @Override
373  public MutateResponse mutate(RpcController controller, MutateRequest request)
374    throws ServiceException {
375    return null;
376  }
377
378  @Override
379  public ScanResponse scan(RpcController controller, ScanRequest request) throws ServiceException {
380    ScanResponse.Builder builder = ScanResponse.newBuilder();
381    try {
382      if (request.hasScan()) {
383        byte[] regionName = request.getRegion().getValue().toByteArray();
384        builder.setScannerId(openScanner(regionName, null));
385        builder.setMoreResults(true);
386      } else {
387        long scannerId = request.getScannerId();
388        Result result = next(scannerId);
389        if (result != null) {
390          builder.addCellsPerResult(result.size());
391          List<CellScannable> results = new ArrayList<>(1);
392          results.add(result);
393          ((HBaseRpcController) controller).setCellScanner(CellUtil.createCellScanner(results));
394          builder.setMoreResults(true);
395        } else {
396          builder.setMoreResults(false);
397          close(scannerId);
398        }
399      }
400    } catch (IOException ie) {
401      throw new ServiceException(ie);
402    }
403    return builder.build();
404  }
405
406  @Override
407  public BulkLoadHFileResponse bulkLoadHFile(RpcController controller, BulkLoadHFileRequest request)
408    throws ServiceException {
409    return null;
410  }
411
412  @Override
413  public ClientProtos.CoprocessorServiceResponse execService(RpcController controller,
414    ClientProtos.CoprocessorServiceRequest request) throws ServiceException {
415    return null;
416  }
417
418  @Override
419  public ClientProtos.MultiResponse multi(RpcController controller, MultiRequest request)
420    throws ServiceException {
421    return null;
422  }
423
424  @Override
425  public GetRegionInfoResponse getRegionInfo(RpcController controller, GetRegionInfoRequest request)
426    throws ServiceException {
427    GetRegionInfoResponse.Builder builder = GetRegionInfoResponse.newBuilder();
428    builder.setRegionInfo(ProtobufUtil.toRegionInfo(RegionInfoBuilder.FIRST_META_REGIONINFO));
429    return builder.build();
430  }
431
432  @Override
433  public GetRegionLoadResponse getRegionLoad(RpcController controller, GetRegionLoadRequest request)
434    throws ServiceException {
435    GetRegionLoadResponse.Builder builder = GetRegionLoadResponse.newBuilder();
436    return builder.build();
437  }
438
439  @Override
440  public ClearCompactionQueuesResponse clearCompactionQueues(RpcController controller,
441    ClearCompactionQueuesRequest request) throws ServiceException {
442    return null;
443  }
444
445  @Override
446  public GetStoreFileResponse getStoreFile(RpcController controller, GetStoreFileRequest request)
447    throws ServiceException {
448    return null;
449  }
450
451  @Override
452  public GetOnlineRegionResponse getOnlineRegion(RpcController controller,
453    GetOnlineRegionRequest request) throws ServiceException {
454    return null;
455  }
456
457  @Override
458  public GetCachedFilesListResponse getCachedFilesList(RpcController controller,
459    GetCachedFilesListRequest request) throws ServiceException {
460    return null;
461  }
462
463  @Override
464  public List<HRegion> getRegions() {
465    return null;
466  }
467
468  @Override
469  public OpenRegionResponse openRegion(RpcController controller, OpenRegionRequest request)
470    throws ServiceException {
471    return null;
472  }
473
474  @Override
475  public WarmupRegionResponse warmupRegion(RpcController controller, WarmupRegionRequest request)
476    throws ServiceException {
477    return null;
478  }
479
480  @Override
481  public CloseRegionResponse closeRegion(RpcController controller, CloseRegionRequest request)
482    throws ServiceException {
483    return null;
484  }
485
486  @Override
487  public FlushRegionResponse flushRegion(RpcController controller, FlushRegionRequest request)
488    throws ServiceException {
489    return null;
490  }
491
492  @Override
493  public CompactionSwitchResponse compactionSwitch(RpcController controller,
494    CompactionSwitchRequest request) throws ServiceException {
495    return null;
496  }
497
498  @Override
499  public CompactRegionResponse compactRegion(RpcController controller, CompactRegionRequest request)
500    throws ServiceException {
501    return null;
502  }
503
504  @Override
505  public ReplicateWALEntryResponse replicateWALEntry(RpcController controller,
506    ReplicateWALEntryRequest request) throws ServiceException {
507    return null;
508  }
509
510  @Override
511  public RollWALWriterResponse rollWALWriter(RpcController controller, RollWALWriterRequest request)
512    throws ServiceException {
513    return null;
514  }
515
516  @Override
517  public GetServerInfoResponse getServerInfo(RpcController controller, GetServerInfoRequest request)
518    throws ServiceException {
519    return null;
520  }
521
522  @Override
523  public StopServerResponse stopServer(RpcController controller, StopServerRequest request)
524    throws ServiceException {
525    return null;
526  }
527
528  @Override
529  public List<HRegion> getRegions(TableName tableName) throws IOException {
530    return null;
531  }
532
533  @Override
534  public LeaseManager getLeaseManager() {
535    return null;
536  }
537
538  @Override
539  public List<WAL> getWALs() throws IOException {
540    return Collections.emptyList();
541  }
542
543  @Override
544  public WAL getWAL(RegionInfo regionInfo) throws IOException {
545    return null;
546  }
547
548  @Override
549  public ExecutorService getExecutorService() {
550    return null;
551  }
552
553  @Override
554  public ChoreService getChoreService() {
555    return null;
556  }
557
558  @Override
559  public void updateRegionFavoredNodesMapping(String encodedRegionName,
560    List<org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName> favoredNodes) {
561  }
562
563  @Override
564  public InetSocketAddress[] getFavoredNodesForRegion(String encodedRegionName) {
565    return null;
566  }
567
568  @Override
569  public ReplicateWALEntryResponse replay(RpcController controller,
570    ReplicateWALEntryRequest request) throws ServiceException {
571    return null;
572  }
573
574  @Override
575  public UpdateFavoredNodesResponse updateFavoredNodes(RpcController controller,
576    UpdateFavoredNodesRequest request) throws ServiceException {
577    return null;
578  }
579
580  @Override
581  public ServerNonceManager getNonceManager() {
582    return null;
583  }
584
585  @Override
586  public boolean reportRegionStateTransition(RegionStateTransitionContext context) {
587    return false;
588  }
589
590  @Override
591  public boolean registerService(Service service) {
592    return false;
593  }
594
595  @Override
596  public CoprocessorServiceResponse execRegionServerService(RpcController controller,
597    CoprocessorServiceRequest request) throws ServiceException {
598    return null;
599  }
600
601  @Override
602  public UpdateConfigurationResponse updateConfiguration(RpcController controller,
603    UpdateConfigurationRequest request) throws ServiceException {
604    return null;
605  }
606
607  @Override
608  public ClearRegionBlockCacheResponse clearRegionBlockCache(RpcController controller,
609    ClearRegionBlockCacheRequest request) throws ServiceException {
610    return null;
611  }
612
613  @Override
614  public HeapMemoryManager getHeapMemoryManager() {
615    return null;
616  }
617
618  @Override
619  public double getCompactionPressure() {
620    return 0;
621  }
622
623  @Override
624  public ThroughputController getFlushThroughputController() {
625    return null;
626  }
627
628  @Override
629  public double getFlushPressure() {
630    return 0;
631  }
632
633  @Override
634  public MetricsRegionServer getMetrics() {
635    return null;
636  }
637
638  @Override
639  public EntityLock regionLock(List<RegionInfo> regionInfos, String description, Abortable abort)
640    throws IOException {
641    return null;
642  }
643
644  @Override
645  public PrepareBulkLoadResponse prepareBulkLoad(RpcController controller,
646    PrepareBulkLoadRequest request) throws ServiceException {
647    return null;
648  }
649
650  @Override
651  public CleanupBulkLoadResponse cleanupBulkLoad(RpcController controller,
652    CleanupBulkLoadRequest request) throws ServiceException {
653    return null;
654  }
655
656  @Override
657  public SecureBulkLoadManager getSecureBulkLoadManager() {
658    return null;
659  }
660
661  @Override
662  public void unassign(byte[] regionName) throws IOException {
663  }
664
665  @Override
666  public RegionServerSpaceQuotaManager getRegionServerSpaceQuotaManager() {
667    return null;
668  }
669
670  @Override
671  public ExecuteProceduresResponse executeProcedures(RpcController controller,
672    ExecuteProceduresRequest request) throws ServiceException {
673    return null;
674  }
675
676  @Override
677  public ClearSlowLogResponses clearSlowLogsResponses(RpcController controller,
678    ClearSlowLogResponseRequest request) throws ServiceException {
679    return null;
680  }
681
682  @Override
683  public HBaseProtos.LogEntry getLogEntries(RpcController controller,
684    HBaseProtos.LogRequest request) throws ServiceException {
685    return null;
686  }
687
688  @Override
689  public GetSpaceQuotaSnapshotsResponse getSpaceQuotaSnapshots(RpcController controller,
690    GetSpaceQuotaSnapshotsRequest request) throws ServiceException {
691    return null;
692  }
693
694  @Override
695  public Connection createConnection(Configuration conf) throws IOException {
696    return null;
697  }
698
699  @Override
700  public boolean reportRegionSizesForQuotas(RegionSizeStore sizeStore) {
701    return true;
702  }
703
704  @Override
705  public boolean reportFileArchivalForQuotas(TableName tableName,
706    Collection<Entry<String, Long>> archivedFiles) {
707    return false;
708  }
709
710  public boolean isClusterUp() {
711    return true;
712  }
713
714  @Override
715  public ReplicationSourceService getReplicationSourceService() {
716    return null;
717  }
718
719  @Override
720  public TableDescriptors getTableDescriptors() {
721    return null;
722  }
723
724  @Override
725  public Optional<BlockCache> getBlockCache() {
726    return Optional.empty();
727  }
728
729  @Override
730  public Optional<MobFileCache> getMobFileCache() {
731    return Optional.empty();
732  }
733
734  @Override
735  public AccessChecker getAccessChecker() {
736    return null;
737  }
738
739  @Override
740  public ZKPermissionWatcher getZKPermissionWatcher() {
741    return null;
742  }
743
744  @Override
745  public AsyncClusterConnection getAsyncClusterConnection() {
746    return null;
747  }
748
749  @Override
750  public RegionReplicationBufferManager getRegionReplicationBufferManager() {
751    return null;
752  }
753
754  @Override
755  public ReplicateWALEntryResponse replicateToReplica(RpcController controller,
756    ReplicateWALEntryRequest request) throws ServiceException {
757    return null;
758  }
759}