From 84610e989fcd56afc5369f112a4bb956ee8e1aa6 Mon Sep 17 00:00:00 2001 From: Raghav Sethi Date: Thu, 8 Mar 2018 16:56:27 -0800 Subject: [PATCH] Rename SelectionContext to SelectionCriteria This name better describes the actual utility of the class, and opens up the name SelectionContext for use. --- .../InternalResourceGroupManager.java | 6 ++-- ...ourceGroupConfigurationManagerFactory.java | 6 ++-- .../AbstractResourceConfigurationManager.java | 4 +-- ...FileResourceGroupConfigurationManager.java | 10 +++---- .../ResourceGroupIdTemplate.java | 4 +-- .../ResourceGroupNameTemplate.java | 4 +-- .../resourceGroups/ResourceGroupSelector.java | 4 +-- .../presto/resourceGroups/StaticSelector.java | 14 +++++----- .../DbResourceGroupConfigurationManager.java | 24 ++++++++-------- .../db/DbSourceExactMatchSelector.java | 8 +++--- ...FileResourceGroupConfigurationManager.java | 28 +++++++++---------- .../TestResourceGroupIdTemplate.java | 6 ++-- .../resourceGroups/TestStaticSelector.java | 26 ++++++++--------- ...stDbResourceGroupConfigurationManager.java | 20 ++++++------- .../db/TestDbSourceExactMatchSelector.java | 12 ++++---- .../ResourceGroupConfigurationManager.java | 4 +-- ...ionContext.java => SelectionCriteria.java} | 4 +-- 17 files changed, 92 insertions(+), 92 deletions(-) rename presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/{SelectionContext.java => SelectionCriteria.java} (90%) diff --git a/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/InternalResourceGroupManager.java b/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/InternalResourceGroupManager.java index 18750b7b0eb6..e56f67ecb7d6 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/InternalResourceGroupManager.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/InternalResourceGroupManager.java @@ -19,11 +19,11 @@ import com.facebook.presto.server.ResourceGroupInfo; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.memory.ClusterMemoryPoolManager; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.facebook.presto.spi.resourceGroups.ResourceGroupConfigurationManager; import com.facebook.presto.spi.resourceGroups.ResourceGroupConfigurationManagerContext; import com.facebook.presto.spi.resourceGroups.ResourceGroupConfigurationManagerFactory; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; import com.facebook.presto.sql.tree.Statement; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; @@ -213,7 +213,7 @@ else if (elapsedSeconds < 0) { private synchronized void createGroupIfNecessary(ResourceGroupId id, QueryExecution queryExecution, Executor executor) { Session session = queryExecution.getSession(); - SelectionContext context = new SelectionContext( + SelectionCriteria context = new SelectionCriteria( session.getIdentity().getPrincipal().isPresent(), session.getUser(), session.getSource(), @@ -257,7 +257,7 @@ private void exportGroup(InternalResourceGroup group, Boolean export) private ResourceGroupId selectGroup(QueryExecution queryExecution) { Session session = queryExecution.getSession(); - SelectionContext context = new SelectionContext( + SelectionCriteria context = new SelectionCriteria( session.getIdentity().getPrincipal().isPresent(), session.getUser(), session.getSource(), diff --git a/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/LegacyResourceGroupConfigurationManagerFactory.java b/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/LegacyResourceGroupConfigurationManagerFactory.java index 4a82a5d546de..2356e7967efd 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/LegacyResourceGroupConfigurationManagerFactory.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/resourceGroups/LegacyResourceGroupConfigurationManagerFactory.java @@ -19,7 +19,7 @@ import com.facebook.presto.spi.resourceGroups.ResourceGroupConfigurationManagerContext; import com.facebook.presto.spi.resourceGroups.ResourceGroupConfigurationManagerFactory; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import javax.inject.Inject; @@ -60,7 +60,7 @@ public class LegacyResourceGroupConfigurationManager implements ResourceGroupConfigurationManager { @Override - public void configure(ResourceGroup group, SelectionContext context) + public void configure(ResourceGroup group, SelectionCriteria criteria) { checkArgument(group.getId().equals(GLOBAL), "Unexpected resource group: %s", group.getId()); group.setMaxQueuedQueries(maxQueued); @@ -68,7 +68,7 @@ public void configure(ResourceGroup group, SelectionContext context) } @Override - public Optional match(SelectionContext context) + public Optional match(SelectionCriteria criteria) { return Optional.of(GLOBAL); } diff --git a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/AbstractResourceConfigurationManager.java b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/AbstractResourceConfigurationManager.java index 65eff7816f30..67c0d57c56c3 100644 --- a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/AbstractResourceConfigurationManager.java +++ b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/AbstractResourceConfigurationManager.java @@ -18,7 +18,7 @@ import com.facebook.presto.spi.resourceGroups.QueryType; import com.facebook.presto.spi.resourceGroups.ResourceGroup; import com.facebook.presto.spi.resourceGroups.ResourceGroupConfigurationManager; -import com.facebook.presto.spi.resourceGroups.SelectionContext; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.google.common.collect.ImmutableList; import io.airlift.units.DataSize; import io.airlift.units.Duration; @@ -147,7 +147,7 @@ protected AbstractResourceConfigurationManager(ClusterMemoryPoolManager memoryPo }); } - protected Map.Entry getMatchingSpec(ResourceGroup group, SelectionContext context) + protected Map.Entry getMatchingSpec(ResourceGroup group, SelectionCriteria context) { List candidates = getRootGroups(); List segments = group.getId().getSegments(); diff --git a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/FileResourceGroupConfigurationManager.java b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/FileResourceGroupConfigurationManager.java index 7cb29a3b22f9..9664eda9c013 100644 --- a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/FileResourceGroupConfigurationManager.java +++ b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/FileResourceGroupConfigurationManager.java @@ -14,9 +14,9 @@ package com.facebook.presto.resourceGroups; import com.facebook.presto.spi.memory.ClusterMemoryPoolManager; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.facebook.presto.spi.resourceGroups.ResourceGroup; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; import com.google.common.annotations.VisibleForTesting; @@ -102,17 +102,17 @@ protected List getRootGroups() } @Override - public void configure(ResourceGroup group, SelectionContext context) + public void configure(ResourceGroup group, SelectionCriteria criteria) { - Map.Entry entry = getMatchingSpec(group, context); + Map.Entry entry = getMatchingSpec(group, criteria); configureGroup(group, entry.getValue()); } @Override - public Optional match(SelectionContext context) + public Optional match(SelectionCriteria criteria) { return selectors.stream() - .map(s -> s.match(context)) + .map(s -> s.match(criteria)) .filter(Optional::isPresent) .map(Optional::get) .findFirst(); diff --git a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/ResourceGroupIdTemplate.java b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/ResourceGroupIdTemplate.java index 03c8f18b0646..feb93c2de62c 100644 --- a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/ResourceGroupIdTemplate.java +++ b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/ResourceGroupIdTemplate.java @@ -14,7 +14,7 @@ package com.facebook.presto.resourceGroups; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.fasterxml.jackson.annotation.JsonCreator; import com.google.common.base.Joiner; import com.google.common.base.Splitter; @@ -52,7 +52,7 @@ public static ResourceGroupIdTemplate fromSegments(List match(SelectionContext context); + Optional match(SelectionCriteria criteria); } diff --git a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/StaticSelector.java b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/StaticSelector.java index 0a01f0f0e88c..2404ecf63d9f 100644 --- a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/StaticSelector.java +++ b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/StaticSelector.java @@ -14,7 +14,7 @@ package com.facebook.presto.resourceGroups; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; @@ -45,29 +45,29 @@ public StaticSelector(Optional userRegex, Optional sourceRegex this.group = requireNonNull(group, "group is null"); } - public Optional match(SelectionContext context) + public Optional match(SelectionCriteria criteria) { - if (userRegex.isPresent() && !userRegex.get().matcher(context.getUser()).matches()) { + if (userRegex.isPresent() && !userRegex.get().matcher(criteria.getUser()).matches()) { return Optional.empty(); } if (sourceRegex.isPresent()) { - String source = context.getSource().orElse(""); + String source = criteria.getSource().orElse(""); if (!sourceRegex.get().matcher(source).matches()) { return Optional.empty(); } } - if (!clientTags.isEmpty() && !context.getTags().containsAll(clientTags)) { + if (!clientTags.isEmpty() && !criteria.getTags().containsAll(clientTags)) { return Optional.empty(); } if (queryType.isPresent()) { - String contextQueryType = context.getQueryType().orElse(""); + String contextQueryType = criteria.getQueryType().orElse(""); if (!queryType.get().equalsIgnoreCase(contextQueryType)) { return Optional.empty(); } } - return Optional.of(group.expandTemplate(context)); + return Optional.of(group.expandTemplate(criteria)); } @VisibleForTesting diff --git a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/db/DbResourceGroupConfigurationManager.java b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/db/DbResourceGroupConfigurationManager.java index 54388f9681ea..53ba30cf6beb 100644 --- a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/db/DbResourceGroupConfigurationManager.java +++ b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/db/DbResourceGroupConfigurationManager.java @@ -21,9 +21,9 @@ import com.facebook.presto.resourceGroups.SelectorSpec; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.memory.ClusterMemoryPoolManager; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.facebook.presto.spi.resourceGroups.ResourceGroup; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; @@ -139,9 +139,9 @@ public void start() } @Override - public void configure(ResourceGroup group, SelectionContext context) + public void configure(ResourceGroup group, SelectionCriteria criteria) { - Map.Entry entry = getMatchingSpec(group, context); + Map.Entry entry = getMatchingSpec(group, criteria); if (groups.putIfAbsent(group.getId(), group) == null) { // If a new spec replaces the spec returned from getMatchingSpec the group will be reconfigured on the next run of load(). configuredGroups.computeIfAbsent(entry.getKey(), v -> new LinkedList<>()).add(group.getId()); @@ -152,7 +152,7 @@ public void configure(ResourceGroup group, SelectionContext context) } @Override - public Optional match(SelectionContext context) + public Optional match(SelectionCriteria criteria) { if (lastRefresh.get() == 0) { throw new PrestoException(CONFIGURATION_UNAVAILABLE, "Selectors cannot be fetched from database"); @@ -162,7 +162,7 @@ public Optional match(SelectionContext context) } return selectors.get().stream() - .map(s -> s.match(context)) + .map(s -> s.match(criteria)) .filter(Optional::isPresent) .map(Optional::get) .findFirst(); @@ -314,13 +314,13 @@ private synchronized Map.Entry selectors = dao.getSelectors(environment) .stream() .map(selectorRecord -> - new SelectorSpec( - selectorRecord.getUserRegex(), - selectorRecord.getSourceRegex(), - selectorRecord.getQueryType(), - selectorRecord.getClientTags(), - resourceGroupIdTemplateMap.get(selectorRecord.getResourceGroupId())) - ).collect(Collectors.toList()); + new SelectorSpec( + selectorRecord.getUserRegex(), + selectorRecord.getSourceRegex(), + selectorRecord.getQueryType(), + selectorRecord.getClientTags(), + resourceGroupIdTemplateMap.get(selectorRecord.getResourceGroupId())) + ).collect(Collectors.toList()); ManagerSpec managerSpec = new ManagerSpec(rootGroups, selectors, getCpuQuotaPeriodFromDb()); validateRootGroups(managerSpec); return new AbstractMap.SimpleImmutableEntry<>(managerSpec, resourceGroupSpecs); diff --git a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/db/DbSourceExactMatchSelector.java b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/db/DbSourceExactMatchSelector.java index 904560b01202..b783f0cf9a44 100644 --- a/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/db/DbSourceExactMatchSelector.java +++ b/presto-resource-group-managers/src/main/java/com/facebook/presto/resourceGroups/db/DbSourceExactMatchSelector.java @@ -15,7 +15,7 @@ import com.facebook.presto.resourceGroups.ResourceGroupSelector; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import io.airlift.json.JsonCodec; import io.airlift.log.Logger; import org.jdbi.v3.core.JdbiException; @@ -42,13 +42,13 @@ public DbSourceExactMatchSelector(String environment, ResourceGroupsDao dao) } @Override - public Optional match(SelectionContext context) + public Optional match(SelectionCriteria criteria) { - if (!context.getSource().isPresent()) { + if (!criteria.getSource().isPresent()) { return Optional.empty(); } try { - String resourceGroupId = dao.getExactMatchResourceGroup(environment, context.getSource().get(), context.getQueryType().orElse("")); + String resourceGroupId = dao.getExactMatchResourceGroup(environment, criteria.getSource().get(), criteria.getQueryType().orElse("")); Long start = daoOfflineStart.get(); if (start != null && daoOfflineStart.compareAndSet(start, null)) { diff --git a/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestFileResourceGroupConfigurationManager.java b/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestFileResourceGroupConfigurationManager.java index f623eb0b87e5..327fa46479d5 100644 --- a/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestFileResourceGroupConfigurationManager.java +++ b/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestFileResourceGroupConfigurationManager.java @@ -13,10 +13,10 @@ */ package com.facebook.presto.resourceGroups; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.facebook.presto.spi.resourceGroups.ResourceGroup; import com.facebook.presto.spi.resourceGroups.ResourceGroupConfigurationManager; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; import com.google.common.collect.ImmutableSet; import io.airlift.units.DataSize; import io.airlift.units.Duration; @@ -54,7 +54,7 @@ public void testMissing() { ResourceGroupConfigurationManager manager = parse("resource_groups_config.json"); ResourceGroup missing = new TestingResourceGroup(new ResourceGroupId("missing")); - manager.configure(missing, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(missing, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); } @Test @@ -62,13 +62,13 @@ public void testQueryTypeConfiguration() { FileResourceGroupConfigurationManager manager = parse("resource_groups_config_query_type.json"); List selectors = manager.getSelectors(); - assertMatch(selectors, new SelectionContext(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("select")), "global.select"); - assertMatch(selectors, new SelectionContext(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("explain")), "global.explain"); - assertMatch(selectors, new SelectionContext(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("insert")), "global.insert"); - assertMatch(selectors, new SelectionContext(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("delete")), "global.delete"); - assertMatch(selectors, new SelectionContext(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("describe")), "global.describe"); - assertMatch(selectors, new SelectionContext(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("data_definition")), "global.data_definition"); - assertMatch(selectors, new SelectionContext(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("sth_else")), "global.other"); + assertMatch(selectors, new SelectionCriteria(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("select")), "global.select"); + assertMatch(selectors, new SelectionCriteria(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("explain")), "global.explain"); + assertMatch(selectors, new SelectionCriteria(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("insert")), "global.insert"); + assertMatch(selectors, new SelectionCriteria(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("delete")), "global.delete"); + assertMatch(selectors, new SelectionCriteria(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("describe")), "global.describe"); + assertMatch(selectors, new SelectionCriteria(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("data_definition")), "global.data_definition"); + assertMatch(selectors, new SelectionCriteria(true, "test_user", Optional.empty(), ImmutableSet.of(), 1, Optional.of("sth_else")), "global.other"); } @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "Selector specifies an invalid query type: invalid_query_type") @@ -77,14 +77,14 @@ public void testInvalidQueryTypeConfiguration() parse("resource_groups_config_bad_query_type.json"); } - private void assertMatch(List selectors, SelectionContext context, String expectedResourceGroup) + private void assertMatch(List selectors, SelectionCriteria context, String expectedResourceGroup) { Optional group = tryMatch(selectors, context); assertTrue(group.isPresent(), "match expected"); assertEquals(group.get().toString(), expectedResourceGroup, format("Expected: '%s' resource group, found: %s", expectedResourceGroup, group.get())); } - private Optional tryMatch(List selectors, SelectionContext context) + private Optional tryMatch(List selectors, SelectionCriteria context) { for (ResourceGroupSelector selector : selectors) { Optional group = selector.match(context); @@ -100,7 +100,7 @@ public void testConfiguration() { ResourceGroupConfigurationManager manager = parse("resource_groups_config.json"); ResourceGroup global = new TestingResourceGroup(new ResourceGroupId("global")); - manager.configure(global, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(global, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); assertEquals(global.getSoftMemoryLimit(), new DataSize(1, MEGABYTE)); assertEquals(global.getSoftCpuLimit(), new Duration(1, HOURS)); assertEquals(global.getHardCpuLimit(), new Duration(1, DAYS)); @@ -114,7 +114,7 @@ public void testConfiguration() assertEquals(global.getRunningTimeLimit(), new Duration(1, HOURS)); ResourceGroup sub = new TestingResourceGroup(new ResourceGroupId(new ResourceGroupId("global"), "sub")); - manager.configure(sub, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(sub, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); assertEquals(sub.getSoftMemoryLimit(), new DataSize(2, MEGABYTE)); assertEquals(sub.getHardConcurrencyLimit(), 3); assertEquals(sub.getMaxQueuedQueries(), 4); @@ -130,7 +130,7 @@ public void testLegacyConfiguration() { ResourceGroupConfigurationManager manager = parse("resource_groups_config_legacy.json"); ResourceGroup global = new TestingResourceGroup(new ResourceGroupId("global")); - manager.configure(global, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(global, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); assertEquals(global.getSoftMemoryLimit(), new DataSize(3, MEGABYTE)); assertEquals(global.getMaxQueuedQueries(), 99); assertEquals(global.getHardConcurrencyLimit(), 42); diff --git a/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestResourceGroupIdTemplate.java b/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestResourceGroupIdTemplate.java index ba62e36c5cbf..895d96133bfc 100644 --- a/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestResourceGroupIdTemplate.java +++ b/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestResourceGroupIdTemplate.java @@ -13,8 +13,8 @@ */ package com.facebook.presto.resourceGroups; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; import com.google.common.collect.ImmutableSet; import org.testng.annotations.Test; @@ -29,9 +29,9 @@ public void testExpansion() { ResourceGroupIdTemplate template = new ResourceGroupIdTemplate("test.${USER}.${SOURCE}"); ResourceGroupId expected = new ResourceGroupId(new ResourceGroupId(new ResourceGroupId("test"), "u"), "s"); - assertEquals(template.expandTemplate(new SelectionContext(true, "u", Optional.of("s"), ImmutableSet.of(), 1, Optional.empty())), expected); + assertEquals(template.expandTemplate(new SelectionCriteria(true, "u", Optional.of("s"), ImmutableSet.of(), 1, Optional.empty())), expected); template = new ResourceGroupIdTemplate("test.${USER}"); - assertEquals(template.expandTemplate(new SelectionContext(true, "alice.smith", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())), new ResourceGroupId(new ResourceGroupId("test"), "alice.smith")); + assertEquals(template.expandTemplate(new SelectionCriteria(true, "alice.smith", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())), new ResourceGroupId(new ResourceGroupId("test"), "alice.smith")); } @Test(expectedExceptions = IllegalArgumentException.class) diff --git a/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestStaticSelector.java b/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestStaticSelector.java index f66e942d7211..e27d3ed022c1 100644 --- a/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestStaticSelector.java +++ b/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/TestStaticSelector.java @@ -14,7 +14,7 @@ package com.facebook.presto.resourceGroups; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import org.testng.annotations.Test; @@ -32,9 +32,9 @@ public void testUserRegex() { ResourceGroupId resourceGroupId = new ResourceGroupId(new ResourceGroupId("global"), "foo"); StaticSelector selector = new StaticSelector(Optional.of(Pattern.compile("user.*")), Optional.empty(), Optional.empty(), Optional.empty(), new ResourceGroupIdTemplate("global.foo")); - assertEquals(selector.match(newSelectionContext("userA", null, ImmutableSet.of("tag1"))), Optional.of(resourceGroupId)); - assertEquals(selector.match(newSelectionContext("userB", "source", ImmutableSet.of())), Optional.of(resourceGroupId)); - assertEquals(selector.match(newSelectionContext("A.user", null, ImmutableSet.of("tag1"))), Optional.empty()); + assertEquals(selector.match(newSelectionCritera("userA", null, ImmutableSet.of("tag1"))), Optional.of(resourceGroupId)); + assertEquals(selector.match(newSelectionCritera("userB", "source", ImmutableSet.of())), Optional.of(resourceGroupId)); + assertEquals(selector.match(newSelectionCritera("A.user", null, ImmutableSet.of("tag1"))), Optional.empty()); } @Test @@ -42,9 +42,9 @@ public void testSourceRegex() { ResourceGroupId resourceGroupId = new ResourceGroupId(new ResourceGroupId("global"), "foo"); StaticSelector selector = new StaticSelector(Optional.empty(), Optional.of(Pattern.compile(".*source.*")), Optional.empty(), Optional.empty(), new ResourceGroupIdTemplate("global.foo")); - assertEquals(selector.match(newSelectionContext("userA", null, ImmutableSet.of("tag1"))), Optional.empty()); - assertEquals(selector.match(newSelectionContext("userB", "source", ImmutableSet.of())), Optional.of(resourceGroupId)); - assertEquals(selector.match(newSelectionContext("A.user", "a source b", ImmutableSet.of("tag1"))), Optional.of(resourceGroupId)); + assertEquals(selector.match(newSelectionCritera("userA", null, ImmutableSet.of("tag1"))), Optional.empty()); + assertEquals(selector.match(newSelectionCritera("userB", "source", ImmutableSet.of())), Optional.of(resourceGroupId)); + assertEquals(selector.match(newSelectionCritera("A.user", "a source b", ImmutableSet.of("tag1"))), Optional.of(resourceGroupId)); } @Test @@ -52,14 +52,14 @@ public void testClientTags() { ResourceGroupId resourceGroupId = new ResourceGroupId(new ResourceGroupId("global"), "foo"); StaticSelector selector = new StaticSelector(Optional.empty(), Optional.empty(), Optional.of(ImmutableList.of("tag1", "tag2")), Optional.empty(), new ResourceGroupIdTemplate("global.foo")); - assertEquals(selector.match(newSelectionContext("userA", null, ImmutableSet.of("tag1", "tag2"))), Optional.of(resourceGroupId)); - assertEquals(selector.match(newSelectionContext("userB", "source", ImmutableSet.of())), Optional.empty()); - assertEquals(selector.match(newSelectionContext("A.user", "a source b", ImmutableSet.of("tag1"))), Optional.empty()); - assertEquals(selector.match(newSelectionContext("A.user", "a source b", ImmutableSet.of("tag1", "tag2", "tag3"))), Optional.of(resourceGroupId)); + assertEquals(selector.match(newSelectionCritera("userA", null, ImmutableSet.of("tag1", "tag2"))), Optional.of(resourceGroupId)); + assertEquals(selector.match(newSelectionCritera("userB", "source", ImmutableSet.of())), Optional.empty()); + assertEquals(selector.match(newSelectionCritera("A.user", "a source b", ImmutableSet.of("tag1"))), Optional.empty()); + assertEquals(selector.match(newSelectionCritera("A.user", "a source b", ImmutableSet.of("tag1", "tag2", "tag3"))), Optional.of(resourceGroupId)); } - private SelectionContext newSelectionContext(String user, String source, Set tags) + private SelectionCriteria newSelectionCritera(String user, String source, Set tags) { - return new SelectionContext(true, user, Optional.ofNullable(source), tags, 1, Optional.empty()); + return new SelectionCriteria(true, user, Optional.ofNullable(source), tags, 1, Optional.empty()); } } diff --git a/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/db/TestDbResourceGroupConfigurationManager.java b/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/db/TestDbResourceGroupConfigurationManager.java index 372347aafd31..25b8d9bdaccc 100644 --- a/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/db/TestDbResourceGroupConfigurationManager.java +++ b/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/db/TestDbResourceGroupConfigurationManager.java @@ -20,7 +20,7 @@ import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; import com.facebook.presto.spi.resourceGroups.SchedulingPolicy; -import com.facebook.presto.spi.resourceGroups.SelectionContext; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.google.common.collect.ImmutableSet; import io.airlift.units.DataSize; import io.airlift.units.Duration; @@ -79,11 +79,11 @@ public void testEnvironments() List groups = manager.getRootGroups(); assertEquals(groups.size(), 1); InternalResourceGroup prodGlobal = new InternalResourceGroup.RootInternalResourceGroup("prod_global", (group, export) -> {}, directExecutor()); - manager.configure(prodGlobal, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(prodGlobal, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); assertEqualsResourceGroup(prodGlobal, "10MB", 1000, 100, 100, WEIGHTED, DEFAULT_WEIGHT, true, new Duration(1, HOURS), new Duration(1, DAYS), new Duration(1, HOURS), new Duration(1, HOURS)); assertEquals(manager.getSelectors().size(), 1); ResourceGroupSelector prodSelector = manager.getSelectors().get(0); - Optional prodResourceGroupId = prodSelector.match(new SelectionContext(true, "prod_user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + Optional prodResourceGroupId = prodSelector.match(new SelectionCriteria(true, "prod_user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); assertTrue(prodResourceGroupId.isPresent()); assertEquals(prodResourceGroupId.get().toString(), "prod_global"); @@ -91,11 +91,11 @@ public void testEnvironments() manager = new DbResourceGroupConfigurationManager((poolId, listener) -> {}, new DbResourceGroupConfig(), daoProvider.get(), devEnvironment); assertEquals(groups.size(), 1); InternalResourceGroup devGlobal = new InternalResourceGroup.RootInternalResourceGroup("dev_global", (group, export) -> {}, directExecutor()); - manager.configure(devGlobal, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(devGlobal, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); assertEqualsResourceGroup(devGlobal, "1MB", 1000, 100, 100, WEIGHTED, DEFAULT_WEIGHT, true, new Duration(1, HOURS), new Duration(1, DAYS), new Duration(1, HOURS), new Duration(1, HOURS)); assertEquals(manager.getSelectors().size(), 1); ResourceGroupSelector devSelector = manager.getSelectors().get(0); - Optional devResourceGroupId = devSelector.match(new SelectionContext(true, "dev_user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + Optional devResourceGroupId = devSelector.match(new SelectionCriteria(true, "dev_user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); assertTrue(devResourceGroupId.isPresent()); assertEquals(devResourceGroupId.get().toString(), "dev_global"); } @@ -115,11 +115,11 @@ public void testConfiguration() DbResourceGroupConfigurationManager manager = new DbResourceGroupConfigurationManager((poolId, listener) -> {}, new DbResourceGroupConfig(), daoProvider.get(), ENVIRONMENT); AtomicBoolean exported = new AtomicBoolean(); InternalResourceGroup global = new InternalResourceGroup.RootInternalResourceGroup("global", (group, export) -> exported.set(export), directExecutor()); - manager.configure(global, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(global, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); assertEqualsResourceGroup(global, "1MB", 1000, 100, 100, WEIGHTED, DEFAULT_WEIGHT, true, new Duration(1, HOURS), new Duration(1, DAYS), new Duration(1, HOURS), new Duration(1, HOURS)); exported.set(false); InternalResourceGroup sub = global.getOrCreateSubGroup("sub"); - manager.configure(sub, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(sub, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); assertEqualsResourceGroup(sub, "2MB", 4, 3, 3, FAIR, 5, false, new Duration(Long.MAX_VALUE, MILLISECONDS), new Duration(Long.MAX_VALUE, MILLISECONDS), new Duration(1, HOURS), new Duration(1, HOURS)); } @@ -175,7 +175,7 @@ public void testMissing() dao.insertSelector(2, 1, null, null, null, null); DbResourceGroupConfigurationManager manager = new DbResourceGroupConfigurationManager((poolId, listener) -> {}, new DbResourceGroupConfig(), daoProvider.get(), ENVIRONMENT); InternalResourceGroup missing = new InternalResourceGroup.RootInternalResourceGroup("missing", (group, export) -> {}, directExecutor()); - manager.configure(missing, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(missing, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); } @Test(timeOut = 60_000) @@ -195,9 +195,9 @@ public void testReconfig() manager.start(); AtomicBoolean exported = new AtomicBoolean(); InternalResourceGroup global = new InternalResourceGroup.RootInternalResourceGroup("global", (group, export) -> exported.set(export), directExecutor()); - manager.configure(global, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(global, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); InternalResourceGroup globalSub = global.getOrCreateSubGroup("sub"); - manager.configure(globalSub, new SelectionContext(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); + manager.configure(globalSub, new SelectionCriteria(true, "user", Optional.empty(), ImmutableSet.of(), 1, Optional.empty())); // Verify record exists assertEqualsResourceGroup(globalSub, "2MB", 4, 3, 3, FAIR, 5, false, new Duration(Long.MAX_VALUE, MILLISECONDS), new Duration(Long.MAX_VALUE, MILLISECONDS), new Duration(Long.MAX_VALUE, MILLISECONDS), new Duration(Long.MAX_VALUE, MILLISECONDS)); dao.updateResourceGroup(2, "sub", "3MB", 2, 1, 1, "weighted", 6, true, "1h", "1d", null, null, 1L, ENVIRONMENT); diff --git a/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/db/TestDbSourceExactMatchSelector.java b/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/db/TestDbSourceExactMatchSelector.java index 06e534229ca4..e4874d021165 100644 --- a/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/db/TestDbSourceExactMatchSelector.java +++ b/presto-resource-group-managers/src/test/java/com/facebook/presto/resourceGroups/db/TestDbSourceExactMatchSelector.java @@ -14,7 +14,7 @@ package com.facebook.presto.resourceGroups.db; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; -import com.facebook.presto.spi.resourceGroups.SelectionContext; +import com.facebook.presto.spi.resourceGroups.SelectionCriteria; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import io.airlift.json.JsonCodec; @@ -52,20 +52,20 @@ public void testMatch() DbSourceExactMatchSelector selector = new DbSourceExactMatchSelector("test", dao); assertEquals( - selector.match(new SelectionContext(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), 1, Optional.empty())), + selector.match(new SelectionCriteria(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), 1, Optional.empty())), Optional.empty()); assertEquals( - selector.match(new SelectionContext(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), 1, Optional.of(INSERT.name()))), + selector.match(new SelectionCriteria(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), 1, Optional.of(INSERT.name()))), Optional.of(resourceGroupId1)); assertEquals( - selector.match(new SelectionContext(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), 1, Optional.of(SELECT.name()))), + selector.match(new SelectionCriteria(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), 1, Optional.of(SELECT.name()))), Optional.of(resourceGroupId2)); assertEquals( - selector.match(new SelectionContext(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), 1, Optional.of(DELETE.name()))), + selector.match(new SelectionCriteria(true, "testuser", Optional.of("@test@test_pipeline"), ImmutableSet.of("tag"), 1, Optional.of(DELETE.name()))), Optional.empty()); assertEquals( - selector.match(new SelectionContext(true, "testuser", Optional.of("@test@test_new"), ImmutableSet.of(), 1, Optional.of(INSERT.name()))), + selector.match(new SelectionCriteria(true, "testuser", Optional.of("@test@test_new"), ImmutableSet.of(), 1, Optional.of(INSERT.name()))), Optional.empty()); } } diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/ResourceGroupConfigurationManager.java b/presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/ResourceGroupConfigurationManager.java index 91895055163b..66584ea88594 100644 --- a/presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/ResourceGroupConfigurationManager.java +++ b/presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/ResourceGroupConfigurationManager.java @@ -21,10 +21,10 @@ public interface ResourceGroupConfigurationManager * Implementations may retain a reference to the group, and re-configure it asynchronously. * This method is called, once, when the group is created. */ - void configure(ResourceGroup group, SelectionContext context); + void configure(ResourceGroup group, SelectionCriteria criteria); /** * This method is called for every query that is submitted, so it should be fast. */ - Optional match(SelectionContext context); + Optional match(SelectionCriteria criteria); } diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/SelectionContext.java b/presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/SelectionCriteria.java similarity index 90% rename from presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/SelectionContext.java rename to presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/SelectionCriteria.java index 247eb20f96ce..228614ab4387 100644 --- a/presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/SelectionContext.java +++ b/presto-spi/src/main/java/com/facebook/presto/spi/resourceGroups/SelectionCriteria.java @@ -19,7 +19,7 @@ import static java.util.Collections.unmodifiableSet; import static java.util.Objects.requireNonNull; -public final class SelectionContext +public final class SelectionCriteria { private final boolean authenticated; private final String user; @@ -28,7 +28,7 @@ public final class SelectionContext private final int queryPriority; private final Optional queryType; - public SelectionContext(boolean authenticated, String user, Optional source, Set clientTags, int queryPriority, Optional queryType) + public SelectionCriteria(boolean authenticated, String user, Optional source, Set clientTags, int queryPriority, Optional queryType) { this.authenticated = authenticated; this.user = requireNonNull(user, "user is null");