@Override public void postDeleteNamespace( ObserverContext<MasterCoprocessorEnvironment> ctx, String namespace) throws IOException { // Do nothing if quotas aren't enabled if (!quotasEnabled) { return; } final Connection conn = ctx.getEnvironment().getConnection(); Quotas quotas = QuotaUtil.getNamespaceQuota(conn, namespace); if (quotas != null) { if (quotas.hasSpace()) { QuotaSettings settings = QuotaSettingsFactory.removeNamespaceSpaceLimit(namespace); try (Admin admin = conn.getAdmin()) { admin.setQuota(settings); } } if (quotas.hasThrottle()) { QuotaSettings settings = QuotaSettingsFactory.unthrottleNamespace(namespace); try (Admin admin = conn.getAdmin()) { admin.setQuota(settings); } } } } }
@Test public void testNamespaceGlobalThrottle() throws Exception { final Admin admin = TEST_UTIL.getAdmin(); final String NAMESPACE = "default"; // Add 6req/min limit admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 requests assertEquals(6, doPuts(100, tables[0])); // wait a minute and you should get other 6 requests executed waitMinuteQuota(); assertEquals(6, doPuts(100, tables[1])); admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE)); triggerNamespaceCacheRefresh(true, TABLE_NAMES[0]); assertEquals(40, doPuts(40, tables[0])); }
admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(ns)).get();
@Test public void testNamespaceGlobalReadAndWriteThrottle() throws Exception { final Admin admin = TEST_UTIL.getAdmin(); final String NAMESPACE = "default"; // Add 6req/min limit for write request admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.WRITE_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 write requests and no limit for read request assertEquals(6, doPuts(100, tables[0])); assertEquals(100, doGets(100, tables[0])); // wait a minute and you should get other 6 requests executed waitMinuteQuota(); // Add 6req/min limit for read request, too admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.READ_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 write requests and at max 6 read requests assertEquals(6, doPuts(100, tables[0])); assertEquals(6, doGets(100, tables[0])); admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE)); triggerNamespaceCacheRefresh(true, TABLE_NAMES[0]); assertEquals(40, doPuts(40, tables[0])); }
admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(ns));
admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE)); waitMinuteQuota(); triggerTableCacheRefresh(true, TABLE_NAMES[0]);
settings = QuotaSettingsFactory.unthrottleNamespace(ns); admin.setQuota(settings); assertEquals(1, getNumSpaceQuotas());
@Test public void testNamespaceGlobalThrottle() throws Exception { final Admin admin = TEST_UTIL.getAdmin(); final String NAMESPACE = "default"; // Add 6req/min limit admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.REQUEST_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 requests assertEquals(6, doPuts(100, tables[0])); // wait a minute and you should get other 6 requests executed waitMinuteQuota(); assertEquals(6, doPuts(100, tables[1])); admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE)); triggerNamespaceCacheRefresh(true, TABLE_NAMES[0]); assertEquals(40, doPuts(40, tables[0])); }
admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(ns)).get();
@Test public void testNamespaceGlobalReadAndWriteThrottle() throws Exception { final Admin admin = TEST_UTIL.getAdmin(); final String NAMESPACE = "default"; // Add 6req/min limit for write request admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.WRITE_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 write requests and no limit for read request assertEquals(6, doPuts(100, tables[0])); assertEquals(100, doGets(100, tables[0])); // wait a minute and you should get other 6 requests executed waitMinuteQuota(); // Add 6req/min limit for read request, too admin.setQuota(QuotaSettingsFactory .throttleNamespace(NAMESPACE, ThrottleType.READ_NUMBER, 6, TimeUnit.MINUTES)); triggerNamespaceCacheRefresh(false, TABLE_NAMES[0]); // should execute at max 6 write requests and at max 6 read requests assertEquals(6, doPuts(100, tables[0])); assertEquals(6, doGets(100, tables[0])); admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE)); triggerNamespaceCacheRefresh(true, TABLE_NAMES[0]); assertEquals(40, doPuts(40, tables[0])); }
admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(ns));
admin.setQuota(QuotaSettingsFactory.unthrottleNamespace(NAMESPACE)); waitMinuteQuota(); triggerTableCacheRefresh(true, TABLE_NAMES[0]);