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