@Override public TableDescriptor getDescriptor() throws IOException { return this.region.getTableDescriptor(); }
/** * Gets the online tables in this RS. * This method looks at the in-memory onlineRegions. * @return all the online tables in this RS */ public Set<TableName> getOnlineTables() { Set<TableName> tables = new HashSet<>(); synchronized (this.onlineRegions) { for (Region region: this.onlineRegions.values()) { tables.add(region.getTableDescriptor().getTableName()); } } return tables; }
/** * Returns the proper {@link SpaceViolationPolicyEnforcement} implementation for the given table. * If the given table does not have a violation policy enforced, a "no-op" policy will * be returned which always allows an action. * * @see #getPolicyEnforcement(TableName) */ public SpaceViolationPolicyEnforcement getPolicyEnforcement(Region r) { return getPolicyEnforcement(Objects.requireNonNull(r).getTableDescriptor().getTableName()); }
@Override @Deprecated public HTableDescriptor getTableDescriptor() throws IOException { return new HTableDescriptor(this.region.getTableDescriptor()); }
/** * Returns {@code true} if the given region is part of the {@code _acl_} * metadata table. */ static boolean isAclRegion(Region region) { return ACL_TABLE_NAME.equals(region.getTableDescriptor().getTableName()); }
@Override public void start(CoprocessorEnvironment environment) { // make sure we are on a region server if (!(environment instanceof RegionCoprocessorEnvironment)) { throw new IllegalArgumentException( "Constraints only act on regions - started in an environment that was not a region"); } RegionCoprocessorEnvironment env = (RegionCoprocessorEnvironment) environment; TableDescriptor desc = env.getRegion().getTableDescriptor(); // load all the constraints from the HTD try { this.constraints = Constraints.getConstraints(desc, classloader); } catch (IOException e) { throw new IllegalArgumentException(e); } if (LOG.isInfoEnabled()) { LOG.info("Finished loading " + constraints.size() + " user Constraints on table: " + desc.getTableName()); } }
private boolean isTooManyStoreFiles(Region region) { // When compaction is disabled, the region is flushable if (!region.getTableDescriptor().isCompactionEnabled()) { return false; } for (Store store : region.getStores()) { if (store.hasTooManyStoreFiles()) { return true; } } return false; }
@Override public TableName getName() { return this.region.getTableDescriptor().getTableName(); }
/** * Authorization check for * SecureBulkLoadProtocol.prepareBulkLoad() * @param ctx the context * @throws IOException */ @Override public void prePrepareBulkLoad(ObserverContext<RegionCoprocessorEnvironment> ctx) throws IOException { requireAccess(ctx, "prePrepareBulkLoad", ctx.getEnvironment().getRegion().getTableDescriptor().getTableName(), Action.CREATE); }
/** * Authorization security check for * SecureBulkLoadProtocol.cleanupBulkLoad() * @param ctx the context * @throws IOException */ @Override public void preCleanupBulkLoad(ObserverContext<RegionCoprocessorEnvironment> ctx) throws IOException { requireAccess(ctx, "preCleanupBulkLoad", ctx.getEnvironment().getRegion().getTableDescriptor().getTableName(), Action.CREATE); }
public static Filter createVisibilityLabelFilter(Region region, Authorizations authorizations) throws IOException { Map<ByteRange, Integer> cfVsMaxVersions = new HashMap<>(); for (ColumnFamilyDescriptor hcd : region.getTableDescriptor().getColumnFamilies()) { cfVsMaxVersions.put(new SimpleMutableByteRange(hcd.getName()), hcd.getMaxVersions()); } VisibilityLabelService vls = VisibilityLabelServiceManager.getInstance() .getVisibilityLabelService(); Filter visibilityLabelFilter = new VisibilityLabelFilter( vls.getVisibilityExpEvaluator(authorizations), cfVsMaxVersions); return visibilityLabelFilter; }
public List<HRegion> getRegions(TableName tableName) { List<HRegion> ret = new ArrayList<>(); for (JVMClusterUtil.RegionServerThread rst : getRegionServerThreads()) { HRegionServer hrs = rst.getRegionServer(); for (Region region : hrs.getOnlineRegionsLocalContext()) { if (region.getTableDescriptor().getTableName().equals(tableName)) { ret.add((HRegion)region); } } } return ret; }
/** * Verifies user has CREATE privileges on * the Column Families involved in the bulkLoadHFile * request. Specific Column Write privileges are presently * ignored. */ @Override public void preBulkLoadHFile(ObserverContext<RegionCoprocessorEnvironment> ctx, List<Pair<byte[], String>> familyPaths) throws IOException { User user = getActiveUser(ctx); for(Pair<byte[],String> el : familyPaths) { accessChecker.requirePermission(user, "preBulkLoadHFile", ctx.getEnvironment().getRegion().getTableDescriptor().getTableName(), el.getFirst(), null, null, Action.CREATE); } }
public List<HRegion> findRegionsForTable(TableName tableName) { ArrayList<HRegion> ret = new ArrayList<>(); for (JVMClusterUtil.RegionServerThread rst : getRegionServerThreads()) { HRegionServer hrs = rst.getRegionServer(); for (Region region : hrs.getRegions(tableName)) { if (region.getTableDescriptor().getTableName().equals(tableName)) { ret.add((HRegion)region); } } } return ret; }
@Override public void preBulkLoadHFile(ObserverContext<RegionCoprocessorEnvironment> ctx, List<Pair<byte[], String>> familyPaths) throws IOException { RegionCoprocessorEnvironment e = ctx.getEnvironment(); assertNotNull(e); assertNotNull(e.getRegion()); if (e.getRegion().getTableDescriptor().getTableName().equals( TestRegionObserverInterface.TEST_TABLE)) { assertNotNull(familyPaths); assertEquals(1,familyPaths.size()); assertArrayEquals(TestRegionObserverInterface.A, familyPaths.get(0).getFirst()); String familyPath = familyPaths.get(0).getSecond(); String familyName = Bytes.toString(TestRegionObserverInterface.A); assertEquals(familyPath.substring(familyPath.length()-familyName.length()-1),"/"+familyName); } ctPreBulkLoadHFile.incrementAndGet(); }
@Override public void postBulkLoadHFile(ObserverContext<RegionCoprocessorEnvironment> ctx, List<Pair<byte[], String>> familyPaths, Map<byte[], List<Path>> map) throws IOException { RegionCoprocessorEnvironment e = ctx.getEnvironment(); assertNotNull(e); assertNotNull(e.getRegion()); if (e.getRegion().getTableDescriptor().getTableName().equals( TestRegionObserverInterface.TEST_TABLE)) { assertNotNull(familyPaths); assertEquals(1,familyPaths.size()); assertArrayEquals(TestRegionObserverInterface.A, familyPaths.get(0).getFirst()); String familyPath = familyPaths.get(0).getSecond(); String familyName = Bytes.toString(TestRegionObserverInterface.A); assertEquals(familyPath.substring(familyPath.length()-familyName.length()-1),"/"+familyName); } ctPostBulkLoadHFile.incrementAndGet(); }
@Override public void preGetOp(ObserverContext<RegionCoprocessorEnvironment> c, Get get, List<Cell> result) throws IOException { TableName tableName = c.getEnvironment().getRegion().getTableDescriptor().getTableName(); Long ttl = this.ttls.get(tableName); if (ttl != null) { get.setTimeRange(EnvironmentEdgeManager.currentTime() - ttl, get.getTimeRange().getMax()); } Integer version = this.versions.get(tableName); if (version != null) { get.readVersions(version); } }
private static Region setMobThreshold(Region region, byte[] cfName, long modThreshold) { ColumnFamilyDescriptor cfd = ColumnFamilyDescriptorBuilder .newBuilder(region.getTableDescriptor().getColumnFamily(cfName)) .setMobThreshold(modThreshold) .build(); TableDescriptor td = TableDescriptorBuilder .newBuilder(region.getTableDescriptor()) .removeColumnFamily(cfName) .setColumnFamily(cfd) .build(); ((HRegion)region).setTableDescriptor(td); return region; }
@Override public void preScannerOpen(ObserverContext<RegionCoprocessorEnvironment> c, Scan scan) throws IOException { Region region = c.getEnvironment().getRegion(); TableName tableName = region.getTableDescriptor().getTableName(); Long ttl = this.ttls.get(tableName); if (ttl != null) { scan.setTimeRange(EnvironmentEdgeManager.currentTime() - ttl, scan.getTimeRange().getMax()); } Integer version = this.versions.get(tableName); if (version != null) { scan.readVersions(version); } } }
@Override public void postGetOp(final ObserverContext<RegionCoprocessorEnvironment> c, final Get get, final List<Cell> results) { RegionCoprocessorEnvironment e = c.getEnvironment(); assertNotNull(e); assertNotNull(e.getRegion()); assertNotNull(get); assertNotNull(results); if (e.getRegion().getTableDescriptor().getTableName().equals( TestRegionObserverInterface.TEST_TABLE)) { boolean foundA = false; boolean foundB = false; boolean foundC = false; for (Cell kv: results) { if (CellUtil.matchingFamily(kv, TestRegionObserverInterface.A)) { foundA = true; } if (CellUtil.matchingFamily(kv, TestRegionObserverInterface.B)) { foundB = true; } if (CellUtil.matchingFamily(kv, TestRegionObserverInterface.C)) { foundC = true; } } assertTrue(foundA); assertTrue(foundB); assertTrue(foundC); } ctPostGet.incrementAndGet(); }