/** * @return true if this is a split parent region. */ @Override public boolean isSplitParent() { if (!isSplit()) return false; if (!isOffline()) { LOG.warn("Region is split but NOT offline: " + getRegionNameAsString()); } return true; }
@Override public void perform() throws Exception { HBaseTestingUtility util = context.getHBaseIntegrationTestingUtility(); Admin admin = util.getAdmin(); LOG.info("Performing action: Flush random region of table " + tableName); List<HRegionInfo> regions = admin.getTableRegions(tableName); if (regions == null || regions.isEmpty()) { LOG.info("Table " + tableName + " doesn't have regions to flush"); return; } HRegionInfo region = PolicyBasedChaosMonkey.selectRandomItem( regions.toArray(new HRegionInfo[regions.size()])); LOG.debug("Flushing region " + region.getRegionNameAsString()); try { admin.flushRegion(region.getRegionName()); } catch (Exception ex) { LOG.warn("Flush failed, might be caused by other chaos: " + ex.getMessage()); } if (sleepTime > 0) { Thread.sleep(sleepTime); } } }
HRegionInfo a = regions.get(i++); HRegionInfo b = regions.get(i); LOG.debug("Merging " + a.getRegionNameAsString() + " and " + b.getRegionNameAsString());
private void checkRegionsAndRegionLoads(Collection<HRegionInfo> regions, Collection<RegionLoad> regionLoads) { for (RegionLoad load : regionLoads) { assertNotNull(load.regionLoadPB); } assertEquals("No of regions and regionloads doesn't match", regions.size(), regionLoads.size()); Map<byte[], RegionLoad> regionLoadMap = Maps.newTreeMap(Bytes.BYTES_COMPARATOR); for (RegionLoad regionLoad : regionLoads) { regionLoadMap.put(regionLoad.getName(), regionLoad); } for (HRegionInfo info : regions) { assertTrue("Region not in regionLoadMap region:" + info.getRegionNameAsString() + " regionMap: " + regionLoadMap, regionLoadMap.containsKey(info.getRegionName())); } } }
@Override public void perform() throws Exception { HBaseTestingUtility util = context.getHBaseIntegrationTestingUtility(); Admin admin = util.getAdmin(); LOG.info("Performing action: Split random region of table " + tableName); List<HRegionInfo> regions = admin.getTableRegions(tableName); if (regions == null || regions.isEmpty()) { LOG.info("Table " + tableName + " doesn't have regions to split"); return; } // Don't try the split if we're stopping if (context.isStopping()) { return; } HRegionInfo region = PolicyBasedChaosMonkey.selectRandomItem( regions.toArray(new HRegionInfo[regions.size()])); LOG.debug("Splitting region " + region.getRegionNameAsString()); try { admin.splitRegion(region.getRegionName()); } catch (Exception ex) { LOG.warn("Split failed, might be caused by other chaos: " + ex.getMessage()); } if (sleepTime > 0) { Thread.sleep(sleepTime); } } }
LOG.debug("Major compacting region " + region.getRegionNameAsString()); admin.majorCompactRegion(region.getRegionName()); } else { LOG.debug("Compacting region " + region.getRegionNameAsString()); admin.compactRegion(region.getRegionName());
private StripeCompactor createCompactor() throws Exception { HColumnDescriptor col = new HColumnDescriptor(Bytes.toBytes("foo")); StoreFileWritersCapture writers = new StoreFileWritersCapture(); HStore store = mock(HStore.class); HRegionInfo info = mock(HRegionInfo.class); when(info.getRegionNameAsString()).thenReturn("testRegion"); when(store.getColumnFamilyDescriptor()).thenReturn(col); when(store.getRegionInfo()).thenReturn(info); when( store.createWriterInTmp(anyLong(), any(), anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean())).thenAnswer(writers); Configuration conf = HBaseConfiguration.create(); conf.setBoolean("hbase.regionserver.compaction.private.readers", usePrivateReaders); final Scanner scanner = new Scanner(); return new StripeCompactor(conf, store) { @Override protected InternalScanner createScanner(HStore store, ScanInfo scanInfo, List<StoreFileScanner> scanners, long smallestReadPoint, long earliestPutTs, byte[] dropDeletesFromRow, byte[] dropDeletesToRow) throws IOException { return scanner; } @Override protected InternalScanner createScanner(HStore store, ScanInfo scanInfo, List<StoreFileScanner> scanners, ScanType scanType, long smallestReadPoint, long earliestPutTs) throws IOException { return scanner; } }; }
@Test public void testGetName() { TableRegionModel model = buildTestModel(); String modelName = model.getName(); HRegionInfo hri = new HRegionInfo(TableName.valueOf(TABLE), START_KEY, END_KEY, false, ID); assertEquals(modelName, hri.getRegionNameAsString()); }
private CompletableFuture<Message> rpcCall(MethodDescriptor method, Message request, Message responsePrototype, HBaseRpcController controller, HRegionLocation loc, ClientService.Interface stub) { CompletableFuture<Message> future = new CompletableFuture<>(); if (region != null && !Bytes.equals(loc.getRegionInfo().getRegionName(), region.getRegionName())) { future.completeExceptionally(new DoNotRetryIOException( "Region name is changed, expected " + region.getRegionNameAsString() + ", actual " + loc.getRegionInfo().getRegionNameAsString())); return future; } CoprocessorServiceRequest csr = CoprocessorRpcUtils.getCoprocessorServiceRequest(method, request, row, loc.getRegionInfo().getRegionName()); stub.execService(controller, csr, new org.apache.hbase.thirdparty.com.google.protobuf.RpcCallback<CoprocessorServiceResponse>() { @Override public void run(CoprocessorServiceResponse resp) { if (controller.failed()) { future.completeExceptionally(controller.getFailed()); } else { try { future.complete(CoprocessorRpcUtils.getResponse(resp, responsePrototype)); } catch (IOException e) { future.completeExceptionally(e); } } } }); return future; }
List<HRegionInfo> regions = admin.getOnlineRegions(serverName); LOG.info("serverName=" + serverName + ", regions=" + regions.stream().map(r -> r.getRegionNameAsString()).collect(Collectors.toList())); Collection<RegionLoad> regionLoads = admin.getRegionMetrics(serverName) .stream().map(r -> new RegionLoad(r)).collect(Collectors.toList());
@Override public byte[][] getRegionGuidePosts(HRegionInfo region) { return regionGuidePosts.get(region.getRegionNameAsString()); }
LOG.info("Region info is "+info.getRegionInfo().getRegionNameAsString()); assertTrue(results.containsKey(info.getRegionInfo().getRegionName()));
for (HRegionLocation region : regions) { HRegionInfo info = region.getRegionInfo(); LOG.info("Region info is "+info.getRegionNameAsString()); assertTrue(results.containsKey(info.getRegionName())); assertNull(results.get(info.getRegionName()));
private void logException(int tries, Supplier<Stream<RegionRequest>> regionsSupplier, Throwable error, ServerName serverName) { if (tries > startLogErrorsCnt) { String regions = regionsSupplier.get().map(r -> "'" + r.loc.getRegionInfo().getRegionNameAsString() + "'") .collect(Collectors.joining(",", "[", "]")); LOG.warn("Process batch for " + regions + " in " + tableName + " from " + serverName + " failed, tries=" + tries, error); } }
@Override public void regionOpened(HRegionInfo hRegionInfo, ServerName serverName) { try { if (hRegionInfo.getTable().getQualifierAsString().equals("testtable")) { long delay = rnd.nextInt(3); LOG.info("@@@ Delaying region " + hRegionInfo.getRegionNameAsString() + " for " + delay + " seconds..."); Thread.sleep(delay * 1000); } } catch (InterruptedException ie) { LOG.error(ie); } }
RegionLocator locator = util.getConnection().getRegionLocator(TEST_TABLE)) { for (HRegionLocation e: locator.getAllRegionLocations()) { LOG.info("Region " + e.getRegionInfo().getRegionNameAsString() + ", servername=" + e.getServerName());
/** * @return true if this is a split parent region. */ @Override public boolean isSplitParent() { if (!isSplit()) return false; if (!isOffline()) { LOG.warn("Region is split but NOT offline: " + getRegionNameAsString()); } return true; }
@Override public StoreFile.Reader preStoreFileReaderOpen( ObserverContext<RegionCoprocessorEnvironment> ctx, FileSystem fs, Path p, FSDataInputStreamWrapper in, long size, CacheConfig cacheConf, Reference r, StoreFile.Reader reader) throws IOException { try { long delay = rnd.nextInt(3); LOG.info("@@@ Delaying region " + ctx.getEnvironment().getRegion().getRegionInfo(). getRegionNameAsString() + " for " + delay + " seconds..."); Thread.sleep(delay * 1000); } catch (InterruptedException ie) { LOG.error(ie); } return reader; } // ^^ DelayRegionCloseObserver
LOG.info("Move starting region=" + toMove.getRegionInfo().getRegionNameAsString()); TEST_UTIL.getAdmin().move( toMove.getRegionInfo().getEncodedNameAsBytes(), LOG.info("Move finished for region="+toMove.getRegionInfo().getRegionNameAsString());
LOG.info("Move starting region="+toMove.getRegionInfo().getRegionNameAsString()); TEST_UTIL.getAdmin().move( toMove.getRegionInfo().getEncodedNameAsBytes(), LOG.info("Move finished for region="+toMove.getRegionInfo().getRegionNameAsString()); LOG.info("Move starting region=" + toMove.getRegionInfo().getRegionNameAsString()); TEST_UTIL.getAdmin().move( toMove.getRegionInfo().getEncodedNameAsBytes(), LOG.info("Move finished for region=" + toMove.getRegionInfo().getRegionNameAsString());