HBASE-21733 SnapshotQuotaObserverChore should only fetch space quotas
Signed-off-by: Guanghao Zhang <zghao@apache.org>
This commit is contained in:
parent
16c7f5dac9
commit
5ddda1a1f6
|
@ -131,11 +131,12 @@ public class SnapshotQuotaObserverChore extends ScheduledChore {
|
||||||
try (Admin admin = conn.getAdmin()) {
|
try (Admin admin = conn.getAdmin()) {
|
||||||
// Pull all of the tables that have quotas (direct, or from namespace)
|
// Pull all of the tables that have quotas (direct, or from namespace)
|
||||||
for (QuotaSettings qs : QuotaRetriever.open(conf, filter)) {
|
for (QuotaSettings qs : QuotaRetriever.open(conf, filter)) {
|
||||||
|
if (qs.getQuotaType() == QuotaType.SPACE) {
|
||||||
String ns = qs.getNamespace();
|
String ns = qs.getNamespace();
|
||||||
TableName tn = qs.getTableName();
|
TableName tn = qs.getTableName();
|
||||||
if ((null == ns && null == tn) || (null != ns && null != tn)) {
|
if ((null == ns && null == tn) || (null != ns && null != tn)) {
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"Expected only one of namespace and tablename to be null");
|
"Expected either one of namespace and tablename to be null but not both");
|
||||||
}
|
}
|
||||||
// Collect either the table name itself, or all of the tables in the namespace
|
// Collect either the table name itself, or all of the tables in the namespace
|
||||||
if (null != ns) {
|
if (null != ns) {
|
||||||
|
@ -144,6 +145,7 @@ public class SnapshotQuotaObserverChore extends ScheduledChore {
|
||||||
tablesToFetchSnapshotsFrom.add(tn);
|
tablesToFetchSnapshotsFrom.add(tn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Fetch all snapshots that were created from these tables
|
// Fetch all snapshots that were created from these tables
|
||||||
return getSnapshotsFromTables(admin, tablesToFetchSnapshotsFrom);
|
return getSnapshotsFromTables(admin, tablesToFetchSnapshotsFrom);
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,13 +135,16 @@ public class SpaceQuotaHelperForTests {
|
||||||
for (QuotaSettings quotaSettings : scanner) {
|
for (QuotaSettings quotaSettings : scanner) {
|
||||||
final String namespace = quotaSettings.getNamespace();
|
final String namespace = quotaSettings.getNamespace();
|
||||||
final TableName tableName = quotaSettings.getTableName();
|
final TableName tableName = quotaSettings.getTableName();
|
||||||
|
final String userName = quotaSettings.getUserName();
|
||||||
if (namespace != null) {
|
if (namespace != null) {
|
||||||
LOG.debug("Deleting quota for namespace: " + namespace);
|
LOG.debug("Deleting quota for namespace: " + namespace);
|
||||||
QuotaUtil.deleteNamespaceQuota(conn, namespace);
|
QuotaUtil.deleteNamespaceQuota(conn, namespace);
|
||||||
} else {
|
} else if (tableName != null) {
|
||||||
assert tableName != null;
|
|
||||||
LOG.debug("Deleting quota for table: " + tableName);
|
LOG.debug("Deleting quota for table: " + tableName);
|
||||||
QuotaUtil.deleteTableQuota(conn, tableName);
|
QuotaUtil.deleteTableQuota(conn, tableName);
|
||||||
|
} else if (userName != null) {
|
||||||
|
LOG.debug("Deleting quota for user: " + userName);
|
||||||
|
QuotaUtil.deleteUserQuota(conn, userName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
@ -28,6 +28,7 @@ import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
@ -160,6 +161,13 @@ public class TestSnapshotQuotaObserverChore {
|
||||||
TableName tn2 = helper.createTableWithRegions(ns.getName(), 1);
|
TableName tn2 = helper.createTableWithRegions(ns.getName(), 1);
|
||||||
TableName tn3 = helper.createTableWithRegions(1);
|
TableName tn3 = helper.createTableWithRegions(1);
|
||||||
|
|
||||||
|
// Set a throttle quota on 'default' namespace
|
||||||
|
admin.setQuota(QuotaSettingsFactory.throttleNamespace(tn3.getNamespaceAsString(),
|
||||||
|
ThrottleType.WRITE_NUMBER, 100, TimeUnit.SECONDS));
|
||||||
|
// Set a user throttle quota
|
||||||
|
admin.setQuota(
|
||||||
|
QuotaSettingsFactory.throttleUser("user", ThrottleType.WRITE_NUMBER, 100, TimeUnit.MINUTES));
|
||||||
|
|
||||||
// Set a space quota on the namespace
|
// Set a space quota on the namespace
|
||||||
admin.setQuota(QuotaSettingsFactory.limitNamespaceSpace(
|
admin.setQuota(QuotaSettingsFactory.limitNamespaceSpace(
|
||||||
ns.getName(), SpaceQuotaHelperForTests.ONE_GIGABYTE, SpaceViolationPolicy.NO_INSERTS));
|
ns.getName(), SpaceQuotaHelperForTests.ONE_GIGABYTE, SpaceViolationPolicy.NO_INSERTS));
|
||||||
|
|
Loading…
Reference in New Issue