From 656c10ec97cdf8882b27bf764499ab4c27a5c45b Mon Sep 17 00:00:00 2001 From: RyanHolstien Date: Thu, 16 May 2024 00:26:52 -0500 Subject: [PATCH 1/6] feat(graphql): limit potential for lineage subqueries to cause performance issues --- .../datahub/graphql/GraphQLEngine.java | 4 +- .../DataHubFieldComplexityCalculator.java | 65 +++++++++++++++++++ .../datahub/graphql/GraphQLController.java | 5 +- 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GraphQLEngine.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GraphQLEngine.java index 58b0be1d16c18..286f222fea6e1 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GraphQLEngine.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GraphQLEngine.java @@ -3,6 +3,7 @@ import static graphql.schema.idl.RuntimeWiring.*; import com.linkedin.datahub.graphql.exception.DataHubDataFetcherExceptionHandler; +import com.linkedin.datahub.graphql.instrumentation.DataHubFieldComplexityCalculator; import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.GraphQL; @@ -76,7 +77,8 @@ private GraphQLEngine( List instrumentations = new ArrayList<>(3); instrumentations.add(new TracingInstrumentation()); instrumentations.add(new MaxQueryDepthInstrumentation(graphQLQueryDepthLimit)); - instrumentations.add(new MaxQueryComplexityInstrumentation(graphQLQueryComplexityLimit)); + instrumentations.add(new MaxQueryComplexityInstrumentation(graphQLQueryComplexityLimit, + new DataHubFieldComplexityCalculator())); ChainedInstrumentation chainedInstrumentation = new ChainedInstrumentation(instrumentations); _graphQL = new GraphQL.Builder(graphQLSchema) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java new file mode 100644 index 0000000000000..9989f70b371a0 --- /dev/null +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java @@ -0,0 +1,65 @@ +package com.linkedin.datahub.graphql.instrumentation; + +import graphql.analysis.FieldComplexityCalculator; +import graphql.analysis.FieldComplexityEnvironment; +import graphql.language.Field; +import graphql.language.FragmentSpread; +import graphql.language.Selection; +import graphql.language.SelectionSet; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import lombok.extern.slf4j.Slf4j; + + +@Slf4j +public class DataHubFieldComplexityCalculator implements FieldComplexityCalculator { + + private static final String COUNT_ARG = "count"; + private static final String INPUT_ARG = "input"; + private static final String SEARCH_RESULTS_FIELD = "searchResults"; + private static final String ENTITY_FIELD = "entity"; + private static final String SEARCH_RESULT_FIELDS_FIELD = "searchResultFields"; + private static final String GRAPHQL_QUERY_TYPE = "Query"; + + @SuppressWarnings("rawtypes") + @Override + public int calculate(FieldComplexityEnvironment environment, int childComplexity) { + int complexity = 1; + Map args = environment.getArguments(); + if (args.containsKey(INPUT_ARG)) { + Map input = (Map) args.get(INPUT_ARG); + if (input.containsKey(COUNT_ARG) && (Integer) input.get(COUNT_ARG) > 1) { + Integer count = (Integer) input.get(COUNT_ARG); + Field field = environment.getField(); + List subFields = field.getSelectionSet().getSelections(); + Optional searchResultsFieldsField = subFields.stream() + .filter(selection -> selection instanceof Field) + .map(selection -> (Field) selection) + .filter(subField -> SEARCH_RESULTS_FIELD.equals(subField.getName())) + .map(Field::getSelectionSet) + .map(SelectionSet::getSelections) + .flatMap(List::stream) + .filter(selection -> selection instanceof Field) + .map(selection -> (Field) selection) + .filter(subField -> ENTITY_FIELD.equals(subField.getName())) + .map(Field::getSelectionSet) + .map(SelectionSet::getSelections) + .flatMap(List::stream) + .filter(selection -> selection instanceof FragmentSpread) + .map(selection -> (FragmentSpread) selection) + .filter(subField -> SEARCH_RESULT_FIELDS_FIELD.equals(subField.getName())).findFirst(); + if (searchResultsFieldsField.isPresent()) { + // This fragment includes 2 lineage queries, we account for this additional complexity by multiplying + // by the count of entities attempting to be returned + complexity += 2 * count; + } + + } + } + if (GRAPHQL_QUERY_TYPE.equals(environment.getParentType().getName())) { + log.info("Query complexity for query: {} is {}", environment.getField().getName(), complexity + childComplexity); + } + return complexity + childComplexity; + } +} diff --git a/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java b/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java index e53e59b863c9c..052c539f3719a 100644 --- a/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java +++ b/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ForkJoinPool; import java.util.concurrent.TimeUnit; import javax.annotation.Nonnull; import lombok.extern.slf4j.Slf4j; @@ -50,6 +51,8 @@ public GraphQLController() { @Inject AuthorizerChain _authorizerChain; + public static final ForkJoinPool GRAPHQL_FORK_JOIN_POOL = new ForkJoinPool(ForkJoinPool.getCommonPoolParallelism()); + @Nonnull @Inject @Named("systemOperationContext") @@ -164,7 +167,7 @@ CompletableFuture> postGraphQL(HttpEntity httpEnt executionResult.toSpecification()); return new ResponseEntity<>(HttpStatus.SERVICE_UNAVAILABLE); } - }); + }, GRAPHQL_FORK_JOIN_POOL); } @GetMapping("/graphql") From 321fb684c124d472a17d56fd6dab5bee3a0f3174 Mon Sep 17 00:00:00 2001 From: RyanHolstien Date: Tue, 21 May 2024 16:13:17 -0500 Subject: [PATCH 2/6] graphQL separate thread pool --- .../datahub/graphql/GmsGraphQLEngine.java | 4 +- .../datahub/graphql/GraphQLEngine.java | 5 ++- .../datahub/graphql/SubTypesResolver.java | 3 +- .../graphql/WeaklyTypedAspectsResolver.java | 3 +- .../concurrency/GraphQLConcurrencyUtils.java | 28 ++++++++++++ .../GraphQLWorkerPoolThreadFactory.java | 25 +++++++++++ .../DataHubFieldComplexityCalculator.java | 44 ++++++++++--------- .../datahub/graphql/resolvers/MeResolver.java | 3 +- .../assertion/AssertionRunEventResolver.java | 3 +- .../assertion/DeleteAssertionResolver.java | 3 +- .../assertion/EntityAssertionsResolver.java | 3 +- .../auth/CreateAccessTokenResolver.java | 3 +- .../resolvers/auth/DebugAccessResolver.java | 3 +- .../auth/GetAccessTokenMetadataResolver.java | 3 +- .../auth/GetAccessTokenResolver.java | 3 +- .../auth/ListAccessTokensResolver.java | 3 +- .../auth/RevokeAccessTokenResolver.java | 3 +- .../resolvers/browse/BrowsePathsResolver.java | 3 +- .../resolvers/browse/BrowseResolver.java | 3 +- .../browse/EntityBrowsePathsResolver.java | 3 +- .../AddBusinessAttributeResolver.java | 3 +- .../CreateBusinessAttributeResolver.java | 3 +- .../DeleteBusinessAttributeResolver.java | 3 +- .../ListBusinessAttributesResolver.java | 3 +- .../RemoveBusinessAttributeResolver.java | 3 +- .../UpdateBusinessAttributeResolver.java | 3 +- .../resolvers/chart/BrowseV2Resolver.java | 3 +- .../container/ContainerEntitiesResolver.java | 3 +- .../container/ParentContainersResolver.java | 3 +- .../DashboardStatsSummaryResolver.java | 3 +- .../DashboardUsageStatsResolver.java | 3 +- .../BatchSetDataProductResolver.java | 3 +- .../CreateDataProductResolver.java | 3 +- .../DeleteDataProductResolver.java | 3 +- .../ListDataProductAssetsResolver.java | 3 +- .../UpdateDataProductResolver.java | 3 +- .../dataset/DatasetHealthResolver.java | 3 +- .../dataset/DatasetStatsSummaryResolver.java | 3 +- .../dataset/DatasetUsageStatsResolver.java | 3 +- .../dataset/IsAssignedToMeResolver.java | 3 +- .../UpdateDeprecationResolver.java | 3 +- .../domain/CreateDomainResolver.java | 3 +- .../domain/DeleteDomainResolver.java | 3 +- .../domain/DomainEntitiesResolver.java | 3 +- .../resolvers/domain/ListDomainsResolver.java | 3 +- .../domain/ParentDomainsResolver.java | 3 +- .../resolvers/domain/SetDomainResolver.java | 3 +- .../resolvers/domain/UnsetDomainResolver.java | 3 +- .../resolvers/embed/UpdateEmbedResolver.java | 3 +- .../entity/EntityExistsResolver.java | 3 +- .../entity/EntityPrivilegesResolver.java | 3 +- .../form/BatchAssignFormResolver.java | 3 +- .../form/BatchRemoveFormResolver.java | 3 +- .../CreateDynamicFormAssignmentResolver.java | 3 +- .../form/IsFormAssignedToMeResolver.java | 3 +- .../form/SubmitFormPromptResolver.java | 3 +- .../resolvers/form/VerifyFormResolver.java | 3 +- .../glossary/AddRelatedTermsResolver.java | 3 +- .../glossary/CreateGlossaryNodeResolver.java | 3 +- .../glossary/CreateGlossaryTermResolver.java | 3 +- .../DeleteGlossaryEntityResolver.java | 3 +- .../GetRootGlossaryNodesResolver.java | 3 +- .../GetRootGlossaryTermsResolver.java | 3 +- .../glossary/ParentNodesResolver.java | 3 +- .../glossary/RemoveRelatedTermsResolver.java | 3 +- .../group/AddGroupMembersResolver.java | 3 +- .../resolvers/group/CreateGroupResolver.java | 3 +- .../resolvers/group/EntityCountsResolver.java | 3 +- .../resolvers/group/ListGroupsResolver.java | 3 +- .../group/RemoveGroupMembersResolver.java | 3 +- .../resolvers/group/RemoveGroupResolver.java | 3 +- .../health/EntityHealthResolver.java | 3 +- .../incident/EntityIncidentsResolver.java | 3 +- .../incident/RaiseIncidentResolver.java | 3 +- .../UpdateIncidentStatusResolver.java | 3 +- ...ncelIngestionExecutionRequestResolver.java | 3 +- ...eateIngestionExecutionRequestResolver.java | 3 +- .../CreateTestConnectionRequestResolver.java | 3 +- .../GetIngestionExecutionRequestResolver.java | 3 +- ...estionSourceExecutionRequestsResolver.java | 3 +- .../execution/RollbackIngestionResolver.java | 5 ++- .../ingest/secret/CreateSecretResolver.java | 3 +- .../ingest/secret/DeleteSecretResolver.java | 3 +- .../secret/GetSecretValuesResolver.java | 3 +- .../ingest/secret/ListSecretsResolver.java | 3 +- .../ingest/secret/UpdateSecretResolver.java | 3 +- .../source/DeleteIngestionSourceResolver.java | 3 +- .../source/GetIngestionSourceResolver.java | 3 +- .../source/ListIngestionSourcesResolver.java | 3 +- .../source/UpsertIngestionSourceResolver.java | 3 +- .../resolvers/jobs/DataJobRunsResolver.java | 3 +- .../resolvers/jobs/EntityRunsResolver.java | 3 +- .../lineage/UpdateLineageResolver.java | 3 +- .../load/EntityLineageResultResolver.java | 3 +- .../EntityRelationshipsResultResolver.java | 3 +- .../load/TimeSeriesAspectResolver.java | 3 +- .../resolvers/mutate/AddLinkResolver.java | 3 +- .../resolvers/mutate/AddOwnerResolver.java | 3 +- .../resolvers/mutate/AddOwnersResolver.java | 3 +- .../resolvers/mutate/AddTagResolver.java | 3 +- .../resolvers/mutate/AddTagsResolver.java | 3 +- .../resolvers/mutate/AddTermResolver.java | 3 +- .../resolvers/mutate/AddTermsResolver.java | 3 +- .../mutate/BatchAddOwnersResolver.java | 3 +- .../mutate/BatchAddTagsResolver.java | 3 +- .../mutate/BatchAddTermsResolver.java | 3 +- .../mutate/BatchRemoveOwnersResolver.java | 3 +- .../mutate/BatchRemoveTagsResolver.java | 3 +- .../mutate/BatchRemoveTermsResolver.java | 3 +- .../mutate/BatchSetDomainResolver.java | 3 +- .../BatchUpdateDeprecationResolver.java | 3 +- .../BatchUpdateSoftDeletedResolver.java | 3 +- .../resolvers/mutate/MoveDomainResolver.java | 3 +- .../mutate/MutableTypeBatchResolver.java | 3 +- .../resolvers/mutate/MutableTypeResolver.java | 3 +- .../resolvers/mutate/RemoveLinkResolver.java | 3 +- .../resolvers/mutate/RemoveOwnerResolver.java | 3 +- .../resolvers/mutate/RemoveTagResolver.java | 3 +- .../resolvers/mutate/RemoveTermResolver.java | 3 +- .../mutate/UpdateDescriptionResolver.java | 31 ++++++------- .../resolvers/mutate/UpdateNameResolver.java | 3 +- .../mutate/UpdateParentNodeResolver.java | 3 +- .../mutate/UpdateUserSettingResolver.java | 3 +- .../operation/ReportOperationResolver.java | 3 +- .../CreateOwnershipTypeResolver.java | 3 +- .../DeleteOwnershipTypeResolver.java | 3 +- .../ownership/ListOwnershipTypesResolver.java | 3 +- .../UpdateOwnershipTypeResolver.java | 3 +- .../policy/DeletePolicyResolver.java | 3 +- .../policy/GetGrantedPrivilegesResolver.java | 3 +- .../policy/UpsertPolicyResolver.java | 3 +- .../resolvers/post/CreatePostResolver.java | 3 +- .../resolvers/post/DeletePostResolver.java | 3 +- .../resolvers/post/ListPostsResolver.java | 3 +- .../resolvers/post/UpdatePostResolver.java | 3 +- .../resolvers/query/CreateQueryResolver.java | 3 +- .../resolvers/query/DeleteQueryResolver.java | 3 +- .../resolvers/query/ListQueriesResolver.java | 3 +- .../resolvers/query/UpdateQueryResolver.java | 3 +- .../ListRecommendationsResolver.java | 3 +- .../resolvers/role/AcceptRoleResolver.java | 3 +- .../role/BatchAssignRoleResolver.java | 3 +- .../role/CreateInviteTokenResolver.java | 3 +- .../role/GetInviteTokenResolver.java | 3 +- .../resolvers/role/ListRolesResolver.java | 3 +- .../AggregateAcrossEntitiesResolver.java | 3 +- .../search/AutoCompleteResolver.java | 3 +- .../resolvers/search/AutocompleteUtils.java | 3 +- .../search/GetQuickFiltersResolver.java | 3 +- .../search/ScrollAcrossEntitiesResolver.java | 3 +- .../search/ScrollAcrossLineageResolver.java | 3 +- .../search/SearchAcrossEntitiesResolver.java | 3 +- .../search/SearchAcrossLineageResolver.java | 3 +- .../resolvers/search/SearchResolver.java | 3 +- .../UpdateCorpUserViewsSettingsResolver.java | 3 +- .../view/GlobalViewsSettingsResolver.java | 3 +- .../UpdateGlobalViewsSettingsResolver.java | 3 +- .../step/BatchGetStepStatesResolver.java | 3 +- .../step/BatchUpdateStepStatesResolver.java | 3 +- .../UpsertStructuredPropertiesResolver.java | 3 +- .../resolvers/tag/CreateTagResolver.java | 3 +- .../resolvers/tag/DeleteTagResolver.java | 3 +- .../resolvers/tag/SetTagColorResolver.java | 3 +- .../resolvers/test/CreateTestResolver.java | 3 +- .../resolvers/test/DeleteTestResolver.java | 3 +- .../resolvers/test/ListTestsResolver.java | 3 +- .../resolvers/test/TestResultsResolver.java | 3 +- .../resolvers/test/UpdateTestResolver.java | 3 +- .../timeline/GetSchemaBlameResolver.java | 3 +- .../GetSchemaVersionListResolver.java | 3 +- .../CreateNativeUserResetTokenResolver.java | 3 +- .../resolvers/user/ListUsersResolver.java | 3 +- .../resolvers/user/RemoveUserResolver.java | 3 +- .../user/UpdateUserStatusResolver.java | 3 +- .../resolvers/view/CreateViewResolver.java | 3 +- .../resolvers/view/DeleteViewResolver.java | 3 +- .../view/ListGlobalViewsResolver.java | 3 +- .../resolvers/view/ListMyViewsResolver.java | 3 +- .../resolvers/view/UpdateViewResolver.java | 3 +- .../CreateERModelRelationshipResolver.java | 3 +- .../UpdateERModelRelationshipResolver.java | 3 +- .../GraphQLConcurrencyConfiguration.java | 12 +++++ .../metadata/config/GraphQLConfiguration.java | 1 + .../src/main/resources/application.yaml | 6 +++ .../factory/graphql/GraphQLEngineFactory.java | 38 ++++++++++++++++ .../datahub/graphql/GraphQLController.java | 8 ++-- .../datahub/graphql/GraphiQLController.java | 3 +- 187 files changed, 511 insertions(+), 221 deletions(-) create mode 100644 datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLConcurrencyUtils.java create mode 100644 datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java create mode 100644 metadata-service/configuration/src/main/java/com/linkedin/metadata/config/GraphQLConcurrencyConfiguration.java diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java index e4418eade7a4c..98868834500c4 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java @@ -22,6 +22,7 @@ import com.linkedin.datahub.graphql.analytics.resolver.GetMetadataAnalyticsResolver; import com.linkedin.datahub.graphql.analytics.resolver.IsAnalyticsEnabledResolver; import com.linkedin.datahub.graphql.analytics.service.AnalyticsService; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.featureflags.FeatureFlags; import com.linkedin.datahub.graphql.generated.AccessToken; import com.linkedin.datahub.graphql.generated.AccessTokenMetadata; @@ -390,7 +391,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.concurrent.CompletableFuture; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -2886,7 +2886,7 @@ private DataLoader> createDataLoader( DataLoaderOptions.newOptions().setBatchLoaderContextProvider(contextProvider); return DataLoader.newDataLoader( (keys, context) -> - CompletableFuture.supplyAsync( + GraphQLConcurrencyUtils.supplyAsync( () -> { try { log.debug( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GraphQLEngine.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GraphQLEngine.java index 286f222fea6e1..e076bf7d3c8a0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GraphQLEngine.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GraphQLEngine.java @@ -77,8 +77,9 @@ private GraphQLEngine( List instrumentations = new ArrayList<>(3); instrumentations.add(new TracingInstrumentation()); instrumentations.add(new MaxQueryDepthInstrumentation(graphQLQueryDepthLimit)); - instrumentations.add(new MaxQueryComplexityInstrumentation(graphQLQueryComplexityLimit, - new DataHubFieldComplexityCalculator())); + instrumentations.add( + new MaxQueryComplexityInstrumentation( + graphQLQueryComplexityLimit, new DataHubFieldComplexityCalculator())); ChainedInstrumentation chainedInstrumentation = new ChainedInstrumentation(instrumentations); _graphQL = new GraphQL.Builder(graphQLSchema) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/SubTypesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/SubTypesResolver.java index de0ff137e1de4..a11c37624e853 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/SubTypesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/SubTypesResolver.java @@ -2,6 +2,7 @@ import com.linkedin.common.SubTypes; import com.linkedin.common.urn.Urn; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.entity.EntityResponse; import com.linkedin.entity.client.EntityClient; @@ -26,7 +27,7 @@ public class SubTypesResolver implements DataFetcher @Override @Nullable public CompletableFuture get(DataFetchingEnvironment environment) throws Exception { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); SubTypes subType = null; diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/WeaklyTypedAspectsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/WeaklyTypedAspectsResolver.java index 0dc17bc02ea10..5926f6caec0a2 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/WeaklyTypedAspectsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/WeaklyTypedAspectsResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.data.DataMap; import com.linkedin.data.codec.JacksonDataCodec; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AspectParams; import com.linkedin.datahub.graphql.generated.AspectRenderSpec; import com.linkedin.datahub.graphql.generated.Entity; @@ -48,7 +49,7 @@ private boolean shouldReturnAspect(AspectSpec aspectSpec, AspectParams params) { @Override public CompletableFuture> get(DataFetchingEnvironment environment) throws Exception { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { List results = new ArrayList<>(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLConcurrencyUtils.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLConcurrencyUtils.java new file mode 100644 index 0000000000000..019de30504b0a --- /dev/null +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLConcurrencyUtils.java @@ -0,0 +1,28 @@ +package com.linkedin.datahub.graphql.concurrency; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.function.Supplier; + +public class GraphQLConcurrencyUtils { + private GraphQLConcurrencyUtils() {} + + private static ExecutorService graphQLExecutorService = null; + + public static ExecutorService getExecutorService() { + return GraphQLConcurrencyUtils.graphQLExecutorService; + } + + public static void setExecutorService(ExecutorService executorService) { + GraphQLConcurrencyUtils.graphQLExecutorService = executorService; + } + + public static CompletableFuture supplyAsync(Supplier supplier) { + if (GraphQLConcurrencyUtils.graphQLExecutorService == null) { + return CompletableFuture.supplyAsync(supplier); + } else { + return CompletableFuture.supplyAsync( + supplier, GraphQLConcurrencyUtils.graphQLExecutorService); + } + } +} diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java new file mode 100644 index 0000000000000..3429e481e7f74 --- /dev/null +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java @@ -0,0 +1,25 @@ +package com.linkedin.datahub.graphql.concurrency; + +import java.util.concurrent.ThreadFactory; + +public class GraphQLWorkerPoolThreadFactory implements ThreadFactory { + + private static int threadInitNumber; + + private static synchronized int nextThreadNum() { + return threadInitNumber++; + } + + private long stackSize; + + public GraphQLWorkerPoolThreadFactory(long stackSize) { + this.stackSize = stackSize; + } + + @Override + public final Thread newThread(Runnable runnable) { + Thread thread = new Thread(null, runnable, "GraphQLWorkerThread-" + nextThreadNum(), stackSize); + + return thread; + } +} diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java index 9989f70b371a0..a4045a5ac34ff 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java @@ -11,7 +11,6 @@ import java.util.Optional; import lombok.extern.slf4j.Slf4j; - @Slf4j public class DataHubFieldComplexityCalculator implements FieldComplexityCalculator { @@ -33,32 +32,37 @@ public int calculate(FieldComplexityEnvironment environment, int childComplexity Integer count = (Integer) input.get(COUNT_ARG); Field field = environment.getField(); List subFields = field.getSelectionSet().getSelections(); - Optional searchResultsFieldsField = subFields.stream() - .filter(selection -> selection instanceof Field) - .map(selection -> (Field) selection) - .filter(subField -> SEARCH_RESULTS_FIELD.equals(subField.getName())) - .map(Field::getSelectionSet) - .map(SelectionSet::getSelections) - .flatMap(List::stream) - .filter(selection -> selection instanceof Field) - .map(selection -> (Field) selection) - .filter(subField -> ENTITY_FIELD.equals(subField.getName())) - .map(Field::getSelectionSet) - .map(SelectionSet::getSelections) - .flatMap(List::stream) - .filter(selection -> selection instanceof FragmentSpread) - .map(selection -> (FragmentSpread) selection) - .filter(subField -> SEARCH_RESULT_FIELDS_FIELD.equals(subField.getName())).findFirst(); + Optional searchResultsFieldsField = + subFields.stream() + .filter(selection -> selection instanceof Field) + .map(selection -> (Field) selection) + .filter(subField -> SEARCH_RESULTS_FIELD.equals(subField.getName())) + .map(Field::getSelectionSet) + .map(SelectionSet::getSelections) + .flatMap(List::stream) + .filter(selection -> selection instanceof Field) + .map(selection -> (Field) selection) + .filter(subField -> ENTITY_FIELD.equals(subField.getName())) + .map(Field::getSelectionSet) + .map(SelectionSet::getSelections) + .flatMap(List::stream) + .filter(selection -> selection instanceof FragmentSpread) + .map(selection -> (FragmentSpread) selection) + .filter(subField -> SEARCH_RESULT_FIELDS_FIELD.equals(subField.getName())) + .findFirst(); if (searchResultsFieldsField.isPresent()) { - // This fragment includes 2 lineage queries, we account for this additional complexity by multiplying + // This fragment includes 2 lineage queries, we account for this additional complexity by + // multiplying // by the count of entities attempting to be returned complexity += 2 * count; } - } } if (GRAPHQL_QUERY_TYPE.equals(environment.getParentType().getName())) { - log.info("Query complexity for query: {} is {}", environment.getField().getName(), complexity + childComplexity); + log.info( + "Query complexity for query: {} is {}", + environment.getField().getName(), + complexity + childComplexity); } return complexity + childComplexity; } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/MeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/MeResolver.java index a2ef87b1ce98b..65a38de333d66 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/MeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/MeResolver.java @@ -11,6 +11,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.featureflags.FeatureFlags; import com.linkedin.datahub.graphql.generated.AuthenticatedUser; import com.linkedin.datahub.graphql.generated.CorpUser; @@ -49,7 +50,7 @@ public MeResolver(final EntityClient entityClient, final FeatureFlags featureFla @Override public CompletableFuture get(DataFetchingEnvironment environment) { final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // 1. Get currently logged in user profile. diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/AssertionRunEventResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/AssertionRunEventResolver.java index b96191202087f..b47bc8917f523 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/AssertionRunEventResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/AssertionRunEventResolver.java @@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Assertion; import com.linkedin.datahub.graphql.generated.AssertionResultType; import com.linkedin.datahub.graphql.generated.AssertionRunEvent; @@ -40,7 +41,7 @@ public AssertionRunEventResolver(final EntityClient client) { @Override public CompletableFuture get(DataFetchingEnvironment environment) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/DeleteAssertionResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/DeleteAssertionResolver.java index d3a545b5adf03..2abf61c8439a7 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/DeleteAssertionResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/DeleteAssertionResolver.java @@ -9,6 +9,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.entity.client.EntityClient; import com.linkedin.metadata.Constants; @@ -38,7 +39,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { final QueryContext context = environment.getContext(); final Urn assertionUrn = Urn.createFromString(environment.getArgument("urn")); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // 1. check the entity exists. If not, return false. diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/EntityAssertionsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/EntityAssertionsResolver.java index 528b9bf46ded3..00691bbf6f284 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/EntityAssertionsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/EntityAssertionsResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Assertion; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.EntityAssertionsResult; @@ -45,7 +46,7 @@ public EntityAssertionsResolver(final EntityClient entityClient, final GraphClie @Override public CompletableFuture get(DataFetchingEnvironment environment) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/CreateAccessTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/CreateAccessTokenResolver.java index 14a1b9a1f7a01..c5264235ae5e9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/CreateAccessTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/CreateAccessTokenResolver.java @@ -10,6 +10,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.AccessToken; import com.linkedin.datahub.graphql.generated.AccessTokenMetadata; @@ -37,7 +38,7 @@ public CreateAccessTokenResolver(final StatefulTokenService statefulTokenService @Override public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); final CreateAccessTokenInput input = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/DebugAccessResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/DebugAccessResolver.java index c56be89385835..2e91aae1660aa 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/DebugAccessResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/DebugAccessResolver.java @@ -9,6 +9,7 @@ import com.linkedin.data.template.StringArray; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.DebugAccessResult; import com.linkedin.entity.EntityResponse; @@ -54,7 +55,7 @@ public DebugAccessResolver(EntityClient entityClient, GraphClient graphClient) { @Override public CompletableFuture get(DataFetchingEnvironment environment) throws Exception { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenMetadataResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenMetadataResolver.java index c3e14565e0e27..30fa23cc76f0e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenMetadataResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenMetadataResolver.java @@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.AccessTokenMetadata; import com.linkedin.datahub.graphql.types.auth.AccessTokenMetadataType; @@ -31,7 +32,7 @@ public GetAccessTokenMetadataResolver( @Override public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); final String token = environment.getArgument("token"); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenResolver.java index aed6bd6cb98af..fea7ff0085f8a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenResolver.java @@ -9,6 +9,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.AccessToken; import com.linkedin.datahub.graphql.generated.AccessTokenType; @@ -33,7 +34,7 @@ public GetAccessTokenResolver(final StatelessTokenService tokenService) { @Override public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); final GetAccessTokenInput input = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/ListAccessTokensResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/ListAccessTokensResolver.java index 83789ec488e64..f61669e663760 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/ListAccessTokensResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/ListAccessTokensResolver.java @@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.AccessTokenMetadata; import com.linkedin.datahub.graphql.generated.EntityType; @@ -40,7 +41,7 @@ public ListAccessTokensResolver(final EntityClient entityClient) { @Override public CompletableFuture get(DataFetchingEnvironment environment) throws Exception { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); final ListAccessTokenInput input = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/RevokeAccessTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/RevokeAccessTokenResolver.java index 79c8f4c15fe8c..b95ff343e4f18 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/RevokeAccessTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/RevokeAccessTokenResolver.java @@ -9,6 +9,7 @@ import com.linkedin.data.DataMap; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.entity.EntityResponse; import com.linkedin.entity.client.EntityClient; @@ -35,7 +36,7 @@ public RevokeAccessTokenResolver( @Override public CompletableFuture get(DataFetchingEnvironment environment) throws Exception { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); final String tokenId = bindArgument(environment.getArgument("tokenId"), String.class); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowsePathsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowsePathsResolver.java index 40c91b43850f7..0b7db150132d9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowsePathsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowsePathsResolver.java @@ -2,6 +2,7 @@ import static com.linkedin.datahub.graphql.resolvers.ResolverUtils.bindArgument; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BrowsePath; import com.linkedin.datahub.graphql.generated.BrowsePathsInput; import com.linkedin.datahub.graphql.generated.EntityType; @@ -35,7 +36,7 @@ public CompletableFuture> get(DataFetchingEnvironment environme final BrowsePathsInput input = bindArgument(environment.getArgument("input"), BrowsePathsInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _logger.debug( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowseResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowseResolver.java index 287d0eef8aec8..4d859906a8ffd 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowseResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowseResolver.java @@ -2,6 +2,7 @@ import static com.linkedin.datahub.graphql.resolvers.ResolverUtils.bindArgument; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BrowseInput; import com.linkedin.datahub.graphql.generated.BrowseResults; import com.linkedin.datahub.graphql.generated.EntityType; @@ -38,7 +39,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) final int start = input.getStart() != null ? input.getStart() : DEFAULT_START; final int count = input.getCount() != null ? input.getCount() : DEFAULT_COUNT; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _logger.debug( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/EntityBrowsePathsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/EntityBrowsePathsResolver.java index 396d91c37d81c..6fb220b38fc52 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/EntityBrowsePathsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/EntityBrowsePathsResolver.java @@ -1,6 +1,7 @@ package com.linkedin.datahub.graphql.resolvers.browse; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BrowsePath; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.types.BrowsableEntityType; @@ -24,7 +25,7 @@ public CompletableFuture> get(DataFetchingEnvironment environme final QueryContext context = environment.getContext(); final String urn = ((Entity) environment.getSource()).getUrn(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { return _browsableType.browsePaths(urn, context); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/AddBusinessAttributeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/AddBusinessAttributeResolver.java index 4ff2e64fad0a4..e35b1269ee19b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/AddBusinessAttributeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/AddBusinessAttributeResolver.java @@ -10,6 +10,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AddBusinessAttributeInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; import com.linkedin.metadata.entity.EntityService; @@ -39,7 +40,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final Urn businessAttributeUrn = UrnUtils.getUrn(input.getBusinessAttributeUrn()); final List resourceRefInputs = input.getResourceUrn(); validateBusinessAttribute(context.getOperationContext(), businessAttributeUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { addBusinessAttributeToResource( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/CreateBusinessAttributeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/CreateBusinessAttributeResolver.java index 38397a535fb8f..496fbd16df6fa 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/CreateBusinessAttributeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/CreateBusinessAttributeResolver.java @@ -12,6 +12,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -51,7 +52,7 @@ public CompletableFuture get(DataFetchingEnvironment environm throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final BusinessAttributeKey businessAttributeKey = new BusinessAttributeKey(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/DeleteBusinessAttributeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/DeleteBusinessAttributeResolver.java index b11cad412cf6c..35e2e5e11f12e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/DeleteBusinessAttributeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/DeleteBusinessAttributeResolver.java @@ -3,6 +3,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.entity.client.EntityClient; import graphql.schema.DataFetcher; @@ -29,7 +30,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("This urn does not exist: %s", businessAttributeUrn)); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _entityClient.deleteEntity(context.getOperationContext(), businessAttributeUrn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/ListBusinessAttributesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/ListBusinessAttributesResolver.java index 00ea5975d260e..6d92de27ba967 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/ListBusinessAttributesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/ListBusinessAttributesResolver.java @@ -4,6 +4,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BusinessAttribute; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.ListBusinessAttributesInput; @@ -46,7 +47,7 @@ public CompletableFuture get( final ListBusinessAttributesInput input = bindArgument(environment.getArgument("input"), ListBusinessAttributesInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final Integer start = input.getStart() == null ? DEFAULT_START : input.getStart(); final Integer count = input.getCount() == null ? DEFAULT_COUNT : input.getCount(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/RemoveBusinessAttributeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/RemoveBusinessAttributeResolver.java index 369b1ae3d5bad..4c9ef8ae4ec82 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/RemoveBusinessAttributeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/RemoveBusinessAttributeResolver.java @@ -8,6 +8,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AddBusinessAttributeInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; import com.linkedin.metadata.entity.EntityService; @@ -36,7 +37,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final Urn businessAttributeUrn = UrnUtils.getUrn(input.getBusinessAttributeUrn()); final List resourceRefInputs = input.getResourceUrn(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { removeBusinessAttribute( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/UpdateBusinessAttributeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/UpdateBusinessAttributeResolver.java index 90d2f58d92300..8fb0b3e9c19be 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/UpdateBusinessAttributeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/UpdateBusinessAttributeResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -52,7 +53,7 @@ public CompletableFuture get(DataFetchingEnvironment environm throw new RuntimeException( String.format("This urn does not exist: %s", businessAttributeUrn)); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { Urn updatedBusinessAttributeUrn = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/chart/BrowseV2Resolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/chart/BrowseV2Resolver.java index d698e21c799a9..07b8871642674 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/chart/BrowseV2Resolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/chart/BrowseV2Resolver.java @@ -7,6 +7,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BrowseResultGroupV2; import com.linkedin.datahub.graphql.generated.BrowseResultMetadata; import com.linkedin.datahub.graphql.generated.BrowseResultsV2; @@ -58,7 +59,7 @@ public CompletableFuture get(DataFetchingEnvironment environmen // escape forward slash since it is a reserved character in Elasticsearch final String sanitizedQuery = ResolverUtils.escapeForwardSlash(query); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final DataHubViewInfo maybeResolvedView = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ContainerEntitiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ContainerEntitiesResolver.java index f9cb75052dcc4..01bcb22fb06c6 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ContainerEntitiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ContainerEntitiesResolver.java @@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Container; import com.linkedin.datahub.graphql.generated.ContainerEntitiesInput; import com.linkedin.datahub.graphql.generated.SearchResults; @@ -67,7 +68,7 @@ public CompletableFuture get(final DataFetchingEnvironment enviro final int start = input.getStart() != null ? input.getStart() : 0; final int count = input.getCount() != null ? input.getCount() : 20; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ParentContainersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ParentContainersResolver.java index ae31b2d4b02a5..e48d946eb26a2 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ParentContainersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ParentContainersResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.data.DataMap; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; import com.linkedin.datahub.graphql.generated.Container; import com.linkedin.datahub.graphql.generated.Entity; @@ -65,7 +66,7 @@ public CompletableFuture get(DataFetchingEnvironment env final String urn = ((Entity) environment.getSource()).getUrn(); final List containers = new ArrayList<>(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { aggregateParentContainers(containers, urn, context); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardStatsSummaryResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardStatsSummaryResolver.java index 2e5fc0d6c156d..436d79cc0abc9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardStatsSummaryResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardStatsSummaryResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.CorpUser; import com.linkedin.datahub.graphql.generated.DashboardStatsSummary; import com.linkedin.datahub.graphql.generated.DashboardUsageMetrics; @@ -42,7 +43,7 @@ public CompletableFuture get(DataFetchingEnvironment envi final Urn resourceUrn = UrnUtils.getUrn(((Entity) environment.getSource()).getUrn()); final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardUsageStatsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardUsageStatsResolver.java index c143f6065afe9..22691e0e75906 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardUsageStatsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardUsageStatsResolver.java @@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.DashboardUsageAggregation; import com.linkedin.datahub.graphql.generated.DashboardUsageMetrics; import com.linkedin.datahub.graphql.generated.DashboardUsageQueryResult; @@ -55,7 +56,7 @@ public CompletableFuture get(DataFetchingEnvironment // Max number of aspects to return for absolute dashboard usage. final Integer maybeLimit = environment.getArgumentOrDefault("limit", null); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { DashboardUsageQueryResult usageQueryResult = new DashboardUsageQueryResult(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/BatchSetDataProductResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/BatchSetDataProductResolver.java index 522dc7d0f0a32..8c78b0d06d435 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/BatchSetDataProductResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/BatchSetDataProductResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.BatchSetDataProductInput; import com.linkedin.metadata.service.DataProductService; @@ -31,7 +32,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final String maybeDataProductUrn = input.getDataProductUrn(); final List resources = input.getResourceUrns(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { verifyResources(resources, context); verifyDataProduct(maybeDataProductUrn, context); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/CreateDataProductResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/CreateDataProductResolver.java index 77dc2732e6693..ce63a86d2773a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/CreateDataProductResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/CreateDataProductResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateDataProductInput; import com.linkedin.datahub.graphql.generated.DataProduct; @@ -34,7 +35,7 @@ public CompletableFuture get(final DataFetchingEnvironment environm final Authentication authentication = context.getAuthentication(); final Urn domainUrn = UrnUtils.getUrn(input.getDomainUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!_dataProductService.verifyEntityExists(context.getOperationContext(), domainUrn)) { throw new IllegalArgumentException("The Domain provided dos not exist"); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/DeleteDataProductResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/DeleteDataProductResolver.java index 22e3a4c498f7e..3e3339d782a11 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/DeleteDataProductResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/DeleteDataProductResolver.java @@ -4,6 +4,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.domain.Domains; import com.linkedin.metadata.service.DataProductService; @@ -26,7 +27,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final Urn dataProductUrn = UrnUtils.getUrn(environment.getArgument("urn")); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!_dataProductService.verifyEntityExists( context.getOperationContext(), dataProductUrn)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/ListDataProductAssetsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/ListDataProductAssetsResolver.java index 457e99487ae50..27e2e75dd730e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/ListDataProductAssetsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/ListDataProductAssetsResolver.java @@ -8,6 +8,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.data.DataMap; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.DataProduct; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.SearchAcrossEntitiesInput; @@ -116,7 +117,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) final int start = input.getStart() != null ? input.getStart() : DEFAULT_START; final int count = input.getCount() != null ? input.getCount() : DEFAULT_COUNT; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // if no assets in data product properties, exit early before search and return empty // results diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/UpdateDataProductResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/UpdateDataProductResolver.java index e42ea88d9e3d2..c33899206632e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/UpdateDataProductResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/UpdateDataProductResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.DataProduct; import com.linkedin.datahub.graphql.generated.UpdateDataProductInput; @@ -35,7 +36,7 @@ public CompletableFuture get(final DataFetchingEnvironment environm final Urn dataProductUrn = UrnUtils.getUrn(environment.getArgument("urn")); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!_dataProductService.verifyEntityExists( context.getOperationContext(), dataProductUrn)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetHealthResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetHealthResolver.java index 1746c03f3dcf1..6b100c9489f89 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetHealthResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetHealthResolver.java @@ -7,6 +7,7 @@ import com.linkedin.data.template.StringArray; import com.linkedin.data.template.StringArrayArray; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Dataset; import com.linkedin.datahub.graphql.generated.Health; import com.linkedin.datahub.graphql.generated.HealthStatus; @@ -79,7 +80,7 @@ public DatasetHealthResolver( public CompletableFuture> get(final DataFetchingEnvironment environment) throws Exception { final Dataset parent = environment.getSource(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final CachedHealth cachedStatus = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetStatsSummaryResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetStatsSummaryResolver.java index 298308c778015..2c830cfbc4066 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetStatsSummaryResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetStatsSummaryResolver.java @@ -4,6 +4,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.CorpUser; import com.linkedin.datahub.graphql.generated.DatasetStatsSummary; import com.linkedin.datahub.graphql.generated.Entity; @@ -41,7 +42,7 @@ public CompletableFuture get(DataFetchingEnvironment enviro final QueryContext context = environment.getContext(); final Urn resourceUrn = UrnUtils.getUrn(((Entity) environment.getSource()).getUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { if (!AuthorizationUtils.isViewDatasetUsageAuthorized(context, resourceUrn)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetUsageStatsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetUsageStatsResolver.java index 53d392baf4eb0..8ccb611128aec 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetUsageStatsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetUsageStatsResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.UsageQueryResult; import com.linkedin.datahub.graphql.types.usage.UsageQueryResultMapper; @@ -32,7 +33,7 @@ public CompletableFuture get(DataFetchingEnvironment environme final Urn resourceUrn = UrnUtils.getUrn(((Entity) environment.getSource()).getUrn()); final UsageTimeRange range = UsageTimeRange.valueOf(environment.getArgument("range")); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!isViewDatasetUsageAuthorized(context, resourceUrn)) { log.debug( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/IsAssignedToMeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/IsAssignedToMeResolver.java index e5781ec781c4e..a07538c818c52 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/IsAssignedToMeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/IsAssignedToMeResolver.java @@ -1,6 +1,7 @@ package com.linkedin.datahub.graphql.resolvers.dataset; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.CorpUser; import com.linkedin.datahub.graphql.generated.Role; import com.linkedin.datahub.graphql.generated.RoleUser; @@ -20,7 +21,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { final QueryContext context = environment.getContext(); final Role role = environment.getSource(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final Set assignedUserUrns = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/deprecation/UpdateDeprecationResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/deprecation/UpdateDeprecationResolver.java index d9d8b37cb304b..2d60766b7b6f6 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/deprecation/UpdateDeprecationResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/deprecation/UpdateDeprecationResolver.java @@ -12,6 +12,7 @@ import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.UpdateDeprecationInput; import com.linkedin.datahub.graphql.resolvers.mutate.MutationUtils; @@ -50,7 +51,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw bindArgument(environment.getArgument("input"), UpdateDeprecationInput.class); final Urn entityUrn = Urn.createFromString(input.getUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!isAuthorizedToUpdateDeprecationForEntity(context, entityUrn)) { throw new AuthorizationException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/CreateDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/CreateDomainResolver.java index dbfe8d22709c6..1cb4a4a31dbf2 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/CreateDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/CreateDomainResolver.java @@ -10,6 +10,7 @@ import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -52,7 +53,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws final Urn parentDomain = input.getParentDomain() != null ? UrnUtils.getUrn(input.getParentDomain()) : null; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!AuthorizationUtils.canCreateDomains(context)) { throw new AuthorizationException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DeleteDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DeleteDomainResolver.java index fb0d75272dc3e..03b6a4df422d9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DeleteDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DeleteDomainResolver.java @@ -3,6 +3,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.resolvers.mutate.util.DomainUtils; import com.linkedin.entity.client.EntityClient; @@ -27,7 +28,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final QueryContext context = environment.getContext(); final String domainUrn = environment.getArgument("urn"); final Urn urn = Urn.createFromString(domainUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (AuthorizationUtils.canManageDomains(context) || AuthorizationUtils.canDeleteEntity(urn, context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DomainEntitiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DomainEntitiesResolver.java index dabce90aea21f..8f4c2c33c7b28 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DomainEntitiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DomainEntitiesResolver.java @@ -4,6 +4,7 @@ import static com.linkedin.datahub.graphql.resolvers.search.SearchUtils.*; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Domain; import com.linkedin.datahub.graphql.generated.DomainEntitiesInput; import com.linkedin.datahub.graphql.generated.SearchResults; @@ -61,7 +62,7 @@ public CompletableFuture get(final DataFetchingEnvironment enviro final int start = input.getStart() != null ? input.getStart() : DEFAULT_START; final int count = input.getCount() != null ? input.getCount() : DEFAULT_COUNT; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ListDomainsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ListDomainsResolver.java index fe4a7f23cfaab..c97cf99bb0e5d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ListDomainsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ListDomainsResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Domain; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.ListDomainsInput; @@ -46,7 +47,7 @@ public CompletableFuture get(final DataFetchingEnvironment en final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final ListDomainsInput input = bindArgument(environment.getArgument("input"), ListDomainsInput.class); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ParentDomainsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ParentDomainsResolver.java index 3478cffb032b2..43430e9e3737a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ParentDomainsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ParentDomainsResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.ParentDomainsResult; import com.linkedin.datahub.graphql.resolvers.mutate.util.DomainUtils; @@ -39,7 +40,7 @@ public CompletableFuture get(DataFetchingEnvironment enviro String.format("Failed to resolve parents for entity type %s", urn)); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { Entity parentDomain = DomainUtils.getParentDomain(urn, context, _entityClient); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/SetDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/SetDomainResolver.java index c4b7fe3224e53..d1d4574b347dd 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/SetDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/SetDomainResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.UrnArray; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.resolvers.mutate.util.DomainUtils; import com.linkedin.domain.Domains; @@ -40,7 +41,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final Urn entityUrn = Urn.createFromString(environment.getArgument("entityUrn")); final Urn domainUrn = Urn.createFromString(environment.getArgument("domainUrn")); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DomainUtils.isAuthorizedToUpdateDomainsForEntity( environment.getContext(), entityUrn)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/UnsetDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/UnsetDomainResolver.java index 0b5e3dad3b4c7..74f1d9abeabf9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/UnsetDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/UnsetDomainResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.UrnArray; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.resolvers.mutate.util.DomainUtils; import com.linkedin.domain.Domains; @@ -39,7 +40,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final QueryContext context = environment.getContext(); final Urn entityUrn = Urn.createFromString(environment.getArgument("entityUrn")); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DomainUtils.isAuthorizedToUpdateDomainsForEntity( environment.getContext(), entityUrn)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/embed/UpdateEmbedResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/embed/UpdateEmbedResolver.java index 572e652555e6a..5443dd78d6f5c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/embed/UpdateEmbedResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/embed/UpdateEmbedResolver.java @@ -10,6 +10,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.UpdateEmbedInput; import com.linkedin.datahub.graphql.resolvers.mutate.util.EmbedUtils; @@ -39,7 +40,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw bindArgument(environment.getArgument("input"), UpdateEmbedInput.class); final Urn entityUrn = UrnUtils.getUrn(input.getUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!EmbedUtils.isAuthorizedToUpdateEmbedForEntity(entityUrn, environment.getContext())) { throw new AuthorizationException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityExistsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityExistsResolver.java index 8ea4146301038..50383a6da7025 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityExistsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityExistsResolver.java @@ -4,6 +4,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.metadata.entity.EntityService; import graphql.schema.DataFetcher; @@ -32,7 +33,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) Objects.requireNonNull(entityUrnString, "Entity urn must not be null!"); final Urn entityUrn = Urn.createFromString(entityUrnString); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { return _entityService diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityPrivilegesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityPrivilegesResolver.java index 82a9b6a939e6d..5a08bd847fe19 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityPrivilegesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityPrivilegesResolver.java @@ -9,6 +9,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.EntityPrivileges; import com.linkedin.datahub.graphql.resolvers.mutate.util.EmbedUtils; @@ -37,7 +38,7 @@ public CompletableFuture get(DataFetchingEnvironment environme final String urnString = ((Entity) environment.getSource()).getUrn(); final Urn urn = UrnUtils.getUrn(urnString); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { switch (urn.getEntityType()) { case Constants.GLOSSARY_TERM_ENTITY_NAME: diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchAssignFormResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchAssignFormResolver.java index 7eb27cf1edf03..7dcf663b21444 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchAssignFormResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchAssignFormResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BatchAssignFormInput; import com.linkedin.metadata.service.FormService; import graphql.schema.DataFetcher; @@ -35,7 +36,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final List entityUrns = input.getEntityUrns(); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _formService.batchAssignFormToEntities( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchRemoveFormResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchRemoveFormResolver.java index eb212b5ed0ea8..1dc2b3ef4d330 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchRemoveFormResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchRemoveFormResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BatchAssignFormInput; import com.linkedin.metadata.service.FormService; import graphql.schema.DataFetcher; @@ -37,7 +38,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) // TODO: (PRD-1062) Add permission check once permission exists - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _formService.batchUnassignFormForEntities( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/CreateDynamicFormAssignmentResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/CreateDynamicFormAssignmentResolver.java index 5f5d700732a3a..82fae83200bfb 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/CreateDynamicFormAssignmentResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/CreateDynamicFormAssignmentResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.CreateDynamicFormAssignmentInput; import com.linkedin.datahub.graphql.resolvers.mutate.util.FormUtils; import com.linkedin.form.DynamicFormAssignment; @@ -34,7 +35,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final Urn formUrn = UrnUtils.getUrn(input.getFormUrn()); final DynamicFormAssignment formAssignment = FormUtils.mapDynamicFormAssignment(input); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _formService.createDynamicFormAssignment( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/IsFormAssignedToMeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/IsFormAssignedToMeResolver.java index 9a90eee7f1bf2..5ce819e996df8 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/IsFormAssignedToMeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/IsFormAssignedToMeResolver.java @@ -3,6 +3,7 @@ import com.datahub.authentication.group.GroupService; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.CorpGroup; import com.linkedin.datahub.graphql.generated.CorpUser; import com.linkedin.datahub.graphql.generated.FormActorAssignment; @@ -31,7 +32,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) { final QueryContext context = environment.getContext(); final FormActorAssignment parent = environment.getSource(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/SubmitFormPromptResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/SubmitFormPromptResolver.java index 63094ca9820d3..16293d3b0c6e5 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/SubmitFormPromptResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/SubmitFormPromptResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.FormPromptType; import com.linkedin.datahub.graphql.generated.SubmitFormPromptInput; import com.linkedin.datahub.graphql.resolvers.mutate.util.FormUtils; @@ -36,7 +37,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final Urn formUrn = UrnUtils.getUrn(input.getFormUrn()); final String fieldPath = input.getFieldPath(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { if (input.getType().equals(FormPromptType.STRUCTURED_PROPERTY)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/VerifyFormResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/VerifyFormResolver.java index 82efa476457eb..3dbdaa4ba2956 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/VerifyFormResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/VerifyFormResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.VerifyFormInput; import com.linkedin.metadata.service.FormService; @@ -40,7 +41,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final Authentication authentication = context.getAuthentication(); final Urn actorUrn = UrnUtils.getUrn(authentication.getActor().toUrnStr()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final List groupsForUser = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/AddRelatedTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/AddRelatedTermsResolver.java index c27b2245528b5..4d140611d9bcc 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/AddRelatedTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/AddRelatedTermsResolver.java @@ -8,6 +8,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.RelatedTermsInput; import com.linkedin.datahub.graphql.generated.TermRelationshipType; @@ -43,7 +44,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw bindArgument(environment.getArgument("input"), RelatedTermsInput.class); final Urn urn = Urn.createFromString(input.getUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final Urn parentUrn = GlossaryUtils.getParentUrn(urn, context, _entityClient); if (GlossaryUtils.canManageChildrenEntities(context, parentUrn, _entityClient)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryNodeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryNodeResolver.java index 71201600bcd87..70a174e1281d0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryNodeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryNodeResolver.java @@ -9,6 +9,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateGlossaryEntityInput; import com.linkedin.datahub.graphql.generated.OwnerEntityType; @@ -43,7 +44,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws final Urn parentNode = input.getParentNode() != null ? UrnUtils.getUrn(input.getParentNode()) : null; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (GlossaryUtils.canManageChildrenEntities(context, parentNode, _entityClient)) { try { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryTermResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryTermResolver.java index c68ef0df4965e..a5ed848fefa1c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryTermResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryTermResolver.java @@ -10,6 +10,7 @@ import com.linkedin.data.DataMap; import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateGlossaryEntityInput; import com.linkedin.datahub.graphql.generated.OwnerEntityType; @@ -58,7 +59,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws final Urn parentNode = input.getParentNode() != null ? UrnUtils.getUrn(input.getParentNode()) : null; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (GlossaryUtils.canManageChildrenEntities(context, parentNode, _entityClient)) { // Ensure there isn't another glossary term with the same name at this level of the diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/DeleteGlossaryEntityResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/DeleteGlossaryEntityResolver.java index b8a2bd223bdab..84bcbc8c8cb8a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/DeleteGlossaryEntityResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/DeleteGlossaryEntityResolver.java @@ -2,6 +2,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.resolvers.mutate.util.GlossaryUtils; import com.linkedin.entity.client.EntityClient; @@ -30,7 +31,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final Urn entityUrn = Urn.createFromString(environment.getArgument("urn")); final Urn parentNodeUrn = GlossaryUtils.getParentUrn(entityUrn, context, _entityClient); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (GlossaryUtils.canManageChildrenEntities(context, parentNodeUrn, _entityClient)) { if (!_entityService.exists(context.getOperationContext(), entityUrn, true)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryNodesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryNodesResolver.java index 700a38d50b317..083a111a7b99e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryNodesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryNodesResolver.java @@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.GetRootGlossaryEntitiesInput; import com.linkedin.datahub.graphql.generated.GetRootGlossaryNodesResult; @@ -42,7 +43,7 @@ public CompletableFuture get( final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final GetRootGlossaryEntitiesInput input = bindArgument(environment.getArgument("input"), GetRootGlossaryEntitiesInput.class); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryTermsResolver.java index 9669d406344e7..93b656bb7d2a3 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryTermsResolver.java @@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.GetRootGlossaryEntitiesInput; import com.linkedin.datahub.graphql.generated.GetRootGlossaryTermsResult; @@ -42,7 +43,7 @@ public CompletableFuture get( final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final GetRootGlossaryEntitiesInput input = bindArgument(environment.getArgument("input"), GetRootGlossaryEntitiesInput.class); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/ParentNodesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/ParentNodesResolver.java index 12edb6246de6b..e24515cf9653e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/ParentNodesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/ParentNodesResolver.java @@ -9,6 +9,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.data.DataMap; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.GlossaryNode; @@ -111,7 +112,7 @@ public CompletableFuture get(DataFetchingEnvironment environm final String urn = ((Entity) environment.getSource()).getUrn(); final List nodes = new ArrayList<>(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final String type = Urn.createFromString(urn).getEntityType(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/RemoveRelatedTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/RemoveRelatedTermsResolver.java index b9dcf8f9e52a2..c01d640af4d07 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/RemoveRelatedTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/RemoveRelatedTermsResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.RelatedTermsInput; import com.linkedin.datahub.graphql.generated.TermRelationshipType; @@ -39,7 +40,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw bindArgument(environment.getArgument("input"), RelatedTermsInput.class); final Urn urn = Urn.createFromString(input.getUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final Urn parentUrn = GlossaryUtils.getParentUrn(urn, context, _entityClient); if (GlossaryUtils.canManageChildrenEntities(context, parentUrn, _entityClient)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/AddGroupMembersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/AddGroupMembersResolver.java index 5813dcdfc9fce..70e6df6adadf2 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/AddGroupMembersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/AddGroupMembersResolver.java @@ -10,6 +10,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -51,7 +52,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) String.format("Failed to add members to group %s. Group does not exist.", groupUrnStr), DataHubGraphQLErrorCode.NOT_FOUND); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { Origin groupOrigin = _groupService.getGroupOrigin(context.getOperationContext(), groupUrn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/CreateGroupResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/CreateGroupResolver.java index 87572f3b20f6b..9be516febb71d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/CreateGroupResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/CreateGroupResolver.java @@ -6,6 +6,7 @@ import com.datahub.authentication.group.GroupService; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateGroupInput; import com.linkedin.metadata.key.CorpGroupKey; @@ -36,7 +37,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final CreateGroupInput input = bindArgument(environment.getArgument("input"), CreateGroupInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // First, check if the group already exists. diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/EntityCountsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/EntityCountsResolver.java index 06a672f464f70..70d77405f9d9e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/EntityCountsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/EntityCountsResolver.java @@ -3,6 +3,7 @@ import static com.linkedin.datahub.graphql.resolvers.ResolverUtils.*; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.EntityCountInput; import com.linkedin.datahub.graphql.generated.EntityCountResult; import com.linkedin.datahub.graphql.generated.EntityCountResults; @@ -39,7 +40,7 @@ public CompletableFuture get(final DataFetchingEnvironment e bindArgument(environment.getArgument("input"), EntityCountInput.class); final EntityCountResults results = new EntityCountResults(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // First, get all counts diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/ListGroupsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/ListGroupsResolver.java index 671c92546e1a4..0fdee54c226f9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/ListGroupsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/ListGroupsResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CorpGroup; import com.linkedin.datahub.graphql.generated.EntityType; @@ -51,7 +52,7 @@ public CompletableFuture get(final DataFetchingEnvironment env final Integer count = input.getCount() == null ? DEFAULT_COUNT : input.getCount(); final String query = input.getQuery() == null ? DEFAULT_QUERY : input.getQuery(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // First, get all group Urns. diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupMembersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupMembersResolver.java index d93e30f62da22..40458e08468fc 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupMembersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupMembersResolver.java @@ -10,6 +10,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -55,7 +56,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) DataHubGraphQLErrorCode.NOT_FOUND); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { Origin groupOrigin = _groupService.getGroupOrigin(context.getOperationContext(), groupUrn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupResolver.java index 8a54129afcf55..63f8e4026b712 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupResolver.java @@ -3,6 +3,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.entity.client.EntityClient; import graphql.schema.DataFetcher; @@ -27,7 +28,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) if (AuthorizationUtils.canManageUsersAndGroups(context)) { final String groupUrn = environment.getArgument("urn"); final Urn urn = Urn.createFromString(groupUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _entityClient.deleteEntity(context.getOperationContext(), urn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/health/EntityHealthResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/health/EntityHealthResolver.java index 5db47f5bde2c9..cedcb87c0edc0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/health/EntityHealthResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/health/EntityHealthResolver.java @@ -5,6 +5,7 @@ import com.linkedin.data.template.StringArray; import com.linkedin.data.template.StringArrayArray; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.Health; import com.linkedin.datahub.graphql.generated.HealthStatus; @@ -86,7 +87,7 @@ public EntityHealthResolver( public CompletableFuture> get(final DataFetchingEnvironment environment) throws Exception { final Entity parent = environment.getSource(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final HealthStatuses statuses = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/EntityIncidentsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/EntityIncidentsResolver.java index 0aaf71303f04d..818e4aa2aa8bb 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/EntityIncidentsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/EntityIncidentsResolver.java @@ -2,6 +2,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.EntityIncidentsResult; import com.linkedin.datahub.graphql.generated.Incident; @@ -45,7 +46,7 @@ public EntityIncidentsResolver(final EntityClient entityClient) { @Override public CompletableFuture get(DataFetchingEnvironment environment) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/RaiseIncidentResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/RaiseIncidentResolver.java index 180b3120191b8..d116d24020736 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/RaiseIncidentResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/RaiseIncidentResolver.java @@ -14,6 +14,7 @@ import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.RaiseIncidentInput; import com.linkedin.entity.client.EntityClient; @@ -49,7 +50,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws bindArgument(environment.getArgument("input"), RaiseIncidentInput.class); final Urn resourceUrn = Urn.createFromString(input.getResourceUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!isAuthorizedToCreateIncidentForResource(resourceUrn, context)) { throw new AuthorizationException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/UpdateIncidentStatusResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/UpdateIncidentStatusResolver.java index 774bcc55e43dc..3529e091b0d71 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/UpdateIncidentStatusResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/UpdateIncidentStatusResolver.java @@ -13,6 +13,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -44,7 +45,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final Urn incidentUrn = Urn.createFromString(environment.getArgument("urn")); final UpdateIncidentStatusInput input = bindArgument(environment.getArgument("input"), UpdateIncidentStatusInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // Check whether the incident exists. diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CancelIngestionExecutionRequestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CancelIngestionExecutionRequestResolver.java index d998fd118bd04..0efd928d98a6f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CancelIngestionExecutionRequestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CancelIngestionExecutionRequestResolver.java @@ -10,6 +10,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -42,7 +43,7 @@ public CancelIngestionExecutionRequestResolver(final EntityClient entityClient) public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (IngestionAuthUtils.canManageIngestion(context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateIngestionExecutionRequestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateIngestionExecutionRequestResolver.java index 39b8c65bdbd51..481e52dd0cca0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateIngestionExecutionRequestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateIngestionExecutionRequestResolver.java @@ -10,6 +10,7 @@ import com.linkedin.data.template.SetMode; import com.linkedin.data.template.StringMap; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -58,7 +59,7 @@ public CreateIngestionExecutionRequestResolver( public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (IngestionAuthUtils.canManageIngestion(context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateTestConnectionRequestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateTestConnectionRequestResolver.java index de99044cb22ca..c88932ee99e97 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateTestConnectionRequestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateTestConnectionRequestResolver.java @@ -8,6 +8,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.data.template.StringMap; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateTestConnectionRequestInput; import com.linkedin.datahub.graphql.resolvers.ingest.IngestionAuthUtils; @@ -48,7 +49,7 @@ public CreateTestConnectionRequestResolver( public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!IngestionAuthUtils.canManageIngestion(context)) { throw new AuthorizationException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/GetIngestionExecutionRequestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/GetIngestionExecutionRequestResolver.java index ba7f0102a5edf..2f7125db59c14 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/GetIngestionExecutionRequestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/GetIngestionExecutionRequestResolver.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableSet; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -38,7 +39,7 @@ public CompletableFuture get(final DataFetchingEnvironment env if (IngestionAuthUtils.canManageIngestion(context)) { final String urnStr = environment.getArgument("urn"); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // Fetch specific execution request diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/IngestionSourceExecutionRequestsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/IngestionSourceExecutionRequestsResolver.java index ed70c7bd0d771..7c7a729cc3c92 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/IngestionSourceExecutionRequestsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/IngestionSourceExecutionRequestsResolver.java @@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableSet; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.IngestionSource; import com.linkedin.datahub.graphql.generated.IngestionSourceExecutionRequests; import com.linkedin.datahub.graphql.resolvers.ingest.IngestionResolverUtils; @@ -54,7 +55,7 @@ public CompletableFuture get( final Integer count = environment.getArgument("count") != null ? environment.getArgument("count") : 10; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/RollbackIngestionResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/RollbackIngestionResolver.java index 44233bf3bed9e..9761526902bd8 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/RollbackIngestionResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/RollbackIngestionResolver.java @@ -3,6 +3,7 @@ import static com.linkedin.datahub.graphql.resolvers.ResolverUtils.bindArgument; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.RollbackIngestionInput; import com.linkedin.datahub.graphql.resolvers.ingest.IngestionAuthUtils; @@ -23,7 +24,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!IngestionAuthUtils.canManageIngestion(context)) { throw new AuthorizationException( @@ -41,7 +42,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) public CompletableFuture rollbackIngestion( final String runId, final QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _entityClient.rollbackIngestion( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/CreateSecretResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/CreateSecretResolver.java index 509f4dde93ed4..79f9e40981e1b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/CreateSecretResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/CreateSecretResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.AuditStamp; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateSecretInput; import com.linkedin.datahub.graphql.resolvers.ingest.IngestionAuthUtils; @@ -41,7 +42,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final CreateSecretInput input = bindArgument(environment.getArgument("input"), CreateSecretInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (IngestionAuthUtils.canManageSecrets(context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/DeleteSecretResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/DeleteSecretResolver.java index 424c34a86c0c7..b5b7542921135 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/DeleteSecretResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/DeleteSecretResolver.java @@ -2,6 +2,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.resolvers.ingest.IngestionAuthUtils; import com.linkedin.entity.client.EntityClient; @@ -24,7 +25,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) if (IngestionAuthUtils.canManageSecrets(context)) { final String secretUrn = environment.getArgument("urn"); final Urn urn = Urn.createFromString(secretUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _entityClient.deleteEntity(context.getOperationContext(), urn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/GetSecretValuesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/GetSecretValuesResolver.java index 710a90d88facd..5770ce92286c4 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/GetSecretValuesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/GetSecretValuesResolver.java @@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableSet; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.GetSecretValuesInput; import com.linkedin.datahub.graphql.generated.SecretValue; @@ -50,7 +51,7 @@ public CompletableFuture> get(final DataFetchingEnvironment en final GetSecretValuesInput input = bindArgument(environment.getArgument("input"), GetSecretValuesInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // Fetch secrets diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/ListSecretsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/ListSecretsResolver.java index 09423acc57ef4..97be3e3466ac2 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/ListSecretsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/ListSecretsResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.data.template.GetMode; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.ListSecretsInput; import com.linkedin.datahub.graphql.generated.ListSecretsResult; @@ -60,7 +61,7 @@ public CompletableFuture get(final DataFetchingEnvironment en final Integer count = input.getCount() == null ? DEFAULT_COUNT : input.getCount(); final String query = input.getQuery() == null ? DEFAULT_QUERY : input.getQuery(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // First, get all secrets diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/UpdateSecretResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/UpdateSecretResolver.java index be8db572c5e77..43dde86d62d05 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/UpdateSecretResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/UpdateSecretResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.UpdateSecretInput; import com.linkedin.datahub.graphql.resolvers.ingest.IngestionAuthUtils; @@ -38,7 +39,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final UpdateSecretInput input = bindArgument(environment.getArgument("input"), UpdateSecretInput.class); final Urn secretUrn = Urn.createFromString(input.getUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (IngestionAuthUtils.canManageSecrets(context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/DeleteIngestionSourceResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/DeleteIngestionSourceResolver.java index 80b20be669ad7..1ffc0c18b5ac9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/DeleteIngestionSourceResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/DeleteIngestionSourceResolver.java @@ -2,6 +2,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.resolvers.ingest.IngestionAuthUtils; import com.linkedin.entity.client.EntityClient; @@ -27,7 +28,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) if (IngestionAuthUtils.canManageIngestion(context)) { final String ingestionSourceUrn = environment.getArgument("urn"); final Urn urn = Urn.createFromString(ingestionSourceUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _entityClient.deleteEntity(context.getOperationContext(), urn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/GetIngestionSourceResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/GetIngestionSourceResolver.java index 23a1e99cce4d4..13ae9b062e00d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/GetIngestionSourceResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/GetIngestionSourceResolver.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableSet; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -37,7 +38,7 @@ public CompletableFuture get(final DataFetchingEnvironment envi if (IngestionAuthUtils.canManageIngestion(context)) { final String urnStr = environment.getArgument("urn"); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final Urn urn = Urn.createFromString(urnStr); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/ListIngestionSourcesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/ListIngestionSourcesResolver.java index 3d5e2e8ae1e0c..b2d0463a78e7e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/ListIngestionSourcesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/ListIngestionSourcesResolver.java @@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableSet; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.FacetFilterInput; import com.linkedin.datahub.graphql.generated.ListIngestionSourcesInput; @@ -56,7 +57,7 @@ public CompletableFuture get( final List filters = input.getFilters() == null ? Collections.emptyList() : input.getFilters(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // First, get all ingestion sources Urns. diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/UpsertIngestionSourceResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/UpsertIngestionSourceResolver.java index 5d595167d0eb0..b71def0972deb 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/UpsertIngestionSourceResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/UpsertIngestionSourceResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.data.template.StringMap; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -45,7 +46,7 @@ public UpsertIngestionSourceResolver(final EntityClient entityClient) { public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (IngestionAuthUtils.canManageIngestion(context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/DataJobRunsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/DataJobRunsResolver.java index 580bf22ad6a6c..eb92276685be0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/DataJobRunsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/DataJobRunsResolver.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.DataProcessInstance; import com.linkedin.datahub.graphql.generated.DataProcessInstanceResult; import com.linkedin.datahub.graphql.generated.Entity; @@ -47,7 +48,7 @@ public DataJobRunsResolver(final EntityClient entityClient) { @Override public CompletableFuture get(DataFetchingEnvironment environment) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/EntityRunsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/EntityRunsResolver.java index 273361dd8a760..666990391ad1d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/EntityRunsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/EntityRunsResolver.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.DataProcessInstance; import com.linkedin.datahub.graphql.generated.DataProcessInstanceResult; import com.linkedin.datahub.graphql.generated.Entity; @@ -49,7 +50,7 @@ public EntityRunsResolver(final EntityClient entityClient) { @Override public CompletableFuture get(DataFetchingEnvironment environment) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/lineage/UpdateLineageResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/lineage/UpdateLineageResolver.java index 27ffe14ca065b..1fbe5e756065e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/lineage/UpdateLineageResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/lineage/UpdateLineageResolver.java @@ -10,6 +10,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.LineageEdge; import com.linkedin.datahub.graphql.generated.UpdateLineageInput; @@ -57,7 +58,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw downstreamUrns.addAll(downstreamToUpstreamsToAdd.keySet()); downstreamUrns.addAll(downstreamToUpstreamsToRemove.keySet()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final Set existingDownstreamUrns = _entityService.exists(context.getOperationContext(), downstreamUrns, true); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityLineageResultResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityLineageResultResolver.java index d1d3e23fac75a..a3ab375bc9785 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityLineageResultResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityLineageResultResolver.java @@ -10,6 +10,7 @@ import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.EntityLineageResult; import com.linkedin.datahub.graphql.generated.EntityType; @@ -68,7 +69,7 @@ public CompletableFuture get(DataFetchingEnvironment enviro com.linkedin.metadata.graph.LineageDirection.valueOf(lineageDirection.toString()); final Urn finalUrn = urn; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { com.linkedin.metadata.graph.EntityLineageResult entityLineageResult = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityRelationshipsResultResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityRelationshipsResultResolver.java index f3edbf8a3a737..66f690c763feb 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityRelationshipsResultResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityRelationshipsResultResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.EntityRelationship; import com.linkedin.common.EntityRelationships; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.EntityRelationshipsResult; import com.linkedin.datahub.graphql.generated.RelationshipsInput; @@ -46,7 +47,7 @@ public CompletableFuture get(DataFetchingEnvironment final Integer count = input.getCount(); // Optional! final RelationshipDirection resolvedDirection = RelationshipDirection.valueOf(relationshipDirection.toString()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> mapEntityRelationships( context, diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/TimeSeriesAspectResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/TimeSeriesAspectResolver.java index f14032859c628..24c539a80ef11 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/TimeSeriesAspectResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/TimeSeriesAspectResolver.java @@ -5,6 +5,7 @@ import com.datahub.authorization.AuthUtil; import com.datahub.authorization.EntitySpec; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.FilterInput; import com.linkedin.datahub.graphql.generated.TimeSeriesAspect; @@ -86,7 +87,7 @@ private boolean isAuthorized(QueryContext context, String urn) { @Override public CompletableFuture> get(DataFetchingEnvironment environment) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QueryContext context = environment.getContext(); // Fetch the urn, assuming the parent has an urn field. diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddLinkResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddLinkResolver.java index 7290de024c2d4..fb5bda729afa9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddLinkResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddLinkResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.AddLinkInput; import com.linkedin.datahub.graphql.resolvers.mutate.util.GlossaryUtils; @@ -40,7 +41,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { LinkUtils.validateAddRemoveInput( context.getOperationContext(), linkUrl, targetUrn, _entityService); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnerResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnerResolver.java index 5f3b290e562f9..36afc4a7eef1c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnerResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnerResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AddOwnerInput; import com.linkedin.datahub.graphql.generated.OwnerInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -42,7 +43,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw OwnerInput ownerInput = ownerInputBuilder.build(); OwnerUtils.validateAuthorizedToUpdateOwners(context, targetUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { OwnerUtils.validateAddOwnerInput( context.getOperationContext(), ownerInput, ownerUrn, _entityService); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnersResolver.java index 4ff6bdcff1269..e6d99c02f5c61 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnersResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AddOwnersInput; import com.linkedin.datahub.graphql.generated.OwnerInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -32,7 +33,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw List owners = input.getOwners(); Urn targetUrn = Urn.createFromString(input.getResourceUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { OwnerUtils.validateAuthorizedToUpdateOwners(environment.getContext(), targetUrn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagResolver.java index 05e73c274a131..167bd52c2f740 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.ResourceRefInput; import com.linkedin.datahub.graphql.generated.TagAssociationInput; @@ -37,7 +38,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { LabelUtils.validateResourceAndLabel( context.getOperationContext(), diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagsResolver.java index e35bd7c20f9ec..b09f542d03019 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagsResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.AddTagsInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -35,7 +36,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw input.getTagUrns().stream().map(UrnUtils::getUrn).collect(Collectors.toList()); Urn targetUrn = Urn.createFromString(input.getResourceUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!LabelUtils.isAuthorizedToUpdateTags(context, targetUrn, input.getSubResource())) { throw new AuthorizationException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermResolver.java index 6c1f1b2f045a3..25f49b4e58aac 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.ResourceRefInput; import com.linkedin.datahub.graphql.generated.TermAssociationInput; @@ -36,7 +37,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { LabelUtils.validateResourceAndLabel( context.getOperationContext(), diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermsResolver.java index feb6f77bcd2fc..059a81fb6ce99 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermsResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.AddTermsInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -34,7 +35,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw input.getTermUrns().stream().map(UrnUtils::getUrn).collect(Collectors.toList()); Urn targetUrn = Urn.createFromString(input.getResourceUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!LabelUtils.isAuthorizedToUpdateTerms(context, targetUrn, input.getSubResource())) { throw new AuthorizationException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddOwnersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddOwnersResolver.java index c89558b5ec4a2..77803a2e2e672 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddOwnersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddOwnersResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BatchAddOwnersInput; import com.linkedin.datahub.graphql.generated.OwnerInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -35,7 +36,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final List resources = input.getResources(); final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // First, validate the batch diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTagsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTagsResolver.java index 33b8b919283e3..a3e0d7a658725 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTagsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTagsResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.BatchAddTagsInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -40,7 +41,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw input.getTagUrns().stream().map(UrnUtils::getUrn).collect(Collectors.toList()); final List resources = input.getResources(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // First, validate the batch diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTermsResolver.java index c616eb93f3686..1ed497dfdfb30 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTermsResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.BatchAddTermsInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -40,7 +41,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw input.getTermUrns().stream().map(UrnUtils::getUrn).collect(Collectors.toList()); final List resources = input.getResources(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // First, validate the batch diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveOwnersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveOwnersResolver.java index 3037c3ea67337..81ba279963b4d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveOwnersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveOwnersResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BatchRemoveOwnersInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; import com.linkedin.datahub.graphql.resolvers.mutate.util.LabelUtils; @@ -36,7 +37,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw : Urn.createFromString(input.getOwnershipTypeUrn()); final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // First, validate the batch diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTagsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTagsResolver.java index 1dab9a990af23..2a3d8f4870cca 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTagsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTagsResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.BatchRemoveTagsInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -35,7 +36,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw input.getTagUrns().stream().map(UrnUtils::getUrn).collect(Collectors.toList()); final List resources = input.getResources(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // First, validate the batch diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTermsResolver.java index 0c8a15882c056..82ae9eebc986e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTermsResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.BatchRemoveTermsInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -35,7 +36,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw input.getTermUrns().stream().map(UrnUtils::getUrn).collect(Collectors.toList()); final List resources = input.getResources(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // First, validate the batch diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchSetDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchSetDomainResolver.java index e733e23d1faf3..6f922b677fe26 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchSetDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchSetDomainResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.BatchSetDomainInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -36,7 +37,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final String maybeDomainUrn = input.getDomainUrn(); final List resources = input.getResources(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // First, validate the domain diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateDeprecationResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateDeprecationResolver.java index 1aee88f0dd919..1769632e6a648 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateDeprecationResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateDeprecationResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.BatchUpdateDeprecationInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; @@ -33,7 +34,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw bindArgument(environment.getArgument("input"), BatchUpdateDeprecationInput.class); final List resources = input.getResources(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // First, validate the resources diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateSoftDeletedResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateSoftDeletedResolver.java index 97f5c9676bd38..8db5b45318c07 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateSoftDeletedResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateSoftDeletedResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.BatchUpdateSoftDeletedInput; import com.linkedin.datahub.graphql.resolvers.mutate.util.DeleteUtils; @@ -30,7 +31,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final List urns = input.getUrns(); final boolean deleted = input.getDeleted(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // First, validate the entities exist diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MoveDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MoveDomainResolver.java index 8f17ba4321904..795b1291dc529 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MoveDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MoveDomainResolver.java @@ -6,6 +6,7 @@ import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -39,7 +40,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final Urn newParentDomainUrn = input.getParentDomain() != null ? UrnUtils.getUrn(input.getParentDomain()) : null; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!AuthorizationUtils.canManageDomains(context)) { throw new AuthorizationException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeBatchResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeBatchResolver.java index 064b532a792c1..b755067691ff9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeBatchResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeBatchResolver.java @@ -3,6 +3,7 @@ import static com.linkedin.datahub.graphql.resolvers.ResolverUtils.*; import com.codahale.metrics.Timer; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.types.BatchMutableType; import com.linkedin.metadata.utils.metrics.MetricUtils; @@ -35,7 +36,7 @@ public CompletableFuture> get(DataFetchingEnvironment environment) throw final B[] input = bindArgument(environment.getArgument("input"), _batchMutableType.batchInputClass()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { Timer.Context timer = MetricUtils.timer(this.getClass(), "batchMutate").time(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeResolver.java index c62282c906597..bd7298e2bdb92 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeResolver.java @@ -2,6 +2,7 @@ import static com.linkedin.datahub.graphql.resolvers.ResolverUtils.*; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.types.MutableType; import graphql.schema.DataFetcher; @@ -31,7 +32,7 @@ public MutableTypeResolver(final MutableType mutableType) { public CompletableFuture get(DataFetchingEnvironment environment) throws Exception { final String urn = environment.getArgument("urn"); final I input = bindArgument(environment.getArgument("input"), _mutableType.inputClass()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _logger.debug(String.format("Mutating entity. input: %s", input)); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveLinkResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveLinkResolver.java index 8628487638bff..36c4888793179 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveLinkResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveLinkResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.RemoveLinkInput; import com.linkedin.datahub.graphql.resolvers.mutate.util.LinkUtils; @@ -35,7 +36,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { LinkUtils.validateAddRemoveInput( context.getOperationContext(), linkUrl, targetUrn, _entityService); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveOwnerResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveOwnerResolver.java index 74727c02a778d..39563c567e3e3 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveOwnerResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveOwnerResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.RemoveOwnerInput; import com.linkedin.datahub.graphql.generated.ResourceRefInput; import com.linkedin.datahub.graphql.resolvers.mutate.util.OwnerUtils; @@ -37,7 +38,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw OwnerUtils.validateAuthorizedToUpdateOwners(context, targetUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { OwnerUtils.validateRemoveInput(context.getOperationContext(), targetUrn, _entityService); try { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTagResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTagResolver.java index 6bb3766a885d0..68435182299db 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTagResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTagResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.ResourceRefInput; import com.linkedin.datahub.graphql.generated.TagAssociationInput; @@ -36,7 +37,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { LabelUtils.validateResourceAndLabel( context.getOperationContext(), diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTermResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTermResolver.java index e44da52ec7e4e..e103d14ede77a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTermResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTermResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.ResourceRefInput; import com.linkedin.datahub.graphql.generated.TermAssociationInput; @@ -36,7 +37,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { LabelUtils.validateResourceAndLabel( context.getOperationContext(), diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateDescriptionResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateDescriptionResolver.java index 460616513fb96..16cf862ee126d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateDescriptionResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateDescriptionResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.DescriptionUpdateInput; import com.linkedin.datahub.graphql.resolvers.mutate.util.GlossaryUtils; @@ -74,7 +75,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw private CompletableFuture updateContainerDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateContainerDescription(context, targetUrn)) { throw new AuthorizationException( @@ -104,7 +105,7 @@ private CompletableFuture updateContainerDescription( private CompletableFuture updateDomainDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateDomainDescription(context, targetUrn)) { throw new AuthorizationException( @@ -179,7 +180,7 @@ private Boolean attemptUpdateDatasetSchemaFieldDescription( private CompletableFuture updateDatasetSchemaFieldDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateFieldDescription(context, targetUrn)) { throw new AuthorizationException( @@ -202,7 +203,7 @@ private CompletableFuture updateDatasetSchemaFieldDescription( private CompletableFuture updateTagDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn)) { throw new AuthorizationException( @@ -231,7 +232,7 @@ private CompletableFuture updateTagDescription( private CompletableFuture updateGlossaryTermDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final Urn parentNodeUrn = GlossaryUtils.getParentUrn(targetUrn, context, _entityClient); if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn) @@ -262,7 +263,7 @@ private CompletableFuture updateGlossaryTermDescription( private CompletableFuture updateGlossaryNodeDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final Urn parentNodeUrn = GlossaryUtils.getParentUrn(targetUrn, context, _entityClient); if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn) @@ -293,7 +294,7 @@ private CompletableFuture updateGlossaryNodeDescription( private CompletableFuture updateCorpGroupDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn)) { throw new AuthorizationException( @@ -322,7 +323,7 @@ private CompletableFuture updateCorpGroupDescription( private CompletableFuture updateNotebookDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn)) { throw new AuthorizationException( @@ -351,7 +352,7 @@ private CompletableFuture updateNotebookDescription( private CompletableFuture updateMlModelDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn)) { throw new AuthorizationException( @@ -380,7 +381,7 @@ private CompletableFuture updateMlModelDescription( private CompletableFuture updateMlModelGroupDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn)) { throw new AuthorizationException( @@ -409,7 +410,7 @@ private CompletableFuture updateMlModelGroupDescription( private CompletableFuture updateMlFeatureDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn)) { throw new AuthorizationException( @@ -438,7 +439,7 @@ private CompletableFuture updateMlFeatureDescription( private CompletableFuture updateMlPrimaryKeyDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn)) { throw new AuthorizationException( @@ -467,7 +468,7 @@ private CompletableFuture updateMlPrimaryKeyDescription( private CompletableFuture updateMlFeatureTableDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn)) { throw new AuthorizationException( @@ -496,7 +497,7 @@ private CompletableFuture updateMlFeatureTableDescription( private CompletableFuture updateDataProductDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn)) { throw new AuthorizationException( @@ -525,7 +526,7 @@ private CompletableFuture updateDataProductDescription( private CompletableFuture updateBusinessAttributeDescription( Urn targetUrn, DescriptionUpdateInput input, QueryContext context) { - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // check if user has the rights to update description for business attribute if (!DescriptionUtils.isAuthorizedToUpdateDescription(context, targetUrn)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateNameResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateNameResolver.java index 6f9ceec34bbf2..56e652aad8b48 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateNameResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateNameResolver.java @@ -9,6 +9,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -49,7 +50,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw Urn targetUrn = Urn.createFromString(input.getUrn()); log.info("Updating name. input: {}", input); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!_entityService.exists(context.getOperationContext(), targetUrn, true)) { throw new IllegalArgumentException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateParentNodeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateParentNodeResolver.java index 55461647374b8..2019da8280616 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateParentNodeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateParentNodeResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.GlossaryNodeUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.UpdateParentNodeInput; import com.linkedin.datahub.graphql.resolvers.mutate.util.GlossaryUtils; @@ -55,7 +56,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw } GlossaryNodeUrn finalParentNodeUrn = parentNodeUrn; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { Urn currentParentUrn = GlossaryUtils.getParentUrn(targetUrn, context, _entityClient); // need to be able to manage current parent node and new parent node diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateUserSettingResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateUserSettingResolver.java index 966b3d1b6a538..faeba458a14a2 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateUserSettingResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateUserSettingResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.UpdateUserSettingInput; import com.linkedin.datahub.graphql.generated.UserSetting; import com.linkedin.datahub.graphql.resolvers.settings.user.UpdateCorpUserViewsSettingsResolver; @@ -38,7 +39,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final boolean value = input.getValue(); final Urn actor = UrnUtils.getUrn(context.getActorUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // In the future with more settings, we'll need to do a read-modify-write diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/operation/ReportOperationResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/operation/ReportOperationResolver.java index fea323a050280..9e234bdb8dbfb 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/operation/ReportOperationResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/operation/ReportOperationResolver.java @@ -17,6 +17,7 @@ import com.linkedin.data.template.StringMap; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -51,7 +52,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final ReportOperationInput input = bindArgument(environment.getArgument("input"), ReportOperationInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { Urn entityUrn = UrnUtils.getUrn(input.getUrn()); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/CreateOwnershipTypeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/CreateOwnershipTypeResolver.java index 25a88846cbe46..b7e1524dbccd6 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/CreateOwnershipTypeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/CreateOwnershipTypeResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateOwnershipTypeInput; import com.linkedin.datahub.graphql.generated.EntityType; @@ -37,7 +38,7 @@ public CompletableFuture get(DataFetchingEnvironment enviro "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final Urn urn = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/DeleteOwnershipTypeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/DeleteOwnershipTypeResolver.java index e221bf4d38960..083292a6d84f7 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/DeleteOwnershipTypeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/DeleteOwnershipTypeResolver.java @@ -4,6 +4,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.metadata.service.OwnershipTypeService; import graphql.schema.DataFetcher; @@ -34,7 +35,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _ownershipTypeService.deleteOwnershipType( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/ListOwnershipTypesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/ListOwnershipTypesResolver.java index aec3848f96640..ee0de0738f2a0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/ListOwnershipTypesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/ListOwnershipTypesResolver.java @@ -4,6 +4,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.FacetFilterInput; import com.linkedin.datahub.graphql.generated.ListOwnershipTypesInput; @@ -47,7 +48,7 @@ public CompletableFuture get(DataFetchingEnvironment e final ListOwnershipTypesInput input = bindArgument(environment.getArgument("input"), ListOwnershipTypesInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final Integer start = input.getStart() == null ? DEFAULT_START : input.getStart(); final Integer count = input.getCount() == null ? DEFAULT_COUNT : input.getCount(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/UpdateOwnershipTypeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/UpdateOwnershipTypeResolver.java index 2eafd35a281bc..3ddefee20d13f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/UpdateOwnershipTypeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/UpdateOwnershipTypeResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.OwnershipTypeEntity; import com.linkedin.datahub.graphql.generated.UpdateOwnershipTypeInput; @@ -40,7 +41,7 @@ public CompletableFuture get(DataFetchingEnvironment enviro "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _ownershipTypeService.updateOwnershipType( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/DeletePolicyResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/DeletePolicyResolver.java index aaaac898f656b..4268c856c8416 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/DeletePolicyResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/DeletePolicyResolver.java @@ -3,6 +3,7 @@ import com.datahub.authorization.AuthorizerChain; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.entity.client.EntityClient; import graphql.schema.DataFetcher; @@ -24,7 +25,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) if (PolicyAuthUtils.canManagePolicies(context)) { final String policyUrn = environment.getArgument("urn"); final Urn urn = Urn.createFromString(policyUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _entityClient.deleteEntity(context.getOperationContext(), urn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/GetGrantedPrivilegesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/GetGrantedPrivilegesResolver.java index 7bfd166b18a20..37c295001a29f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/GetGrantedPrivilegesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/GetGrantedPrivilegesResolver.java @@ -6,6 +6,7 @@ import com.datahub.authorization.DataHubAuthorizer; import com.datahub.authorization.EntitySpec; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.GetGrantedPrivilegesInput; import com.linkedin.datahub.graphql.generated.Privileges; @@ -44,7 +45,7 @@ public CompletableFuture get(final DataFetchingEnvironment environme DataHubAuthorizer dataHubAuthorizer = ((AuthorizerChain) context.getAuthorizer()).getDefaultAuthorizer(); List privileges = dataHubAuthorizer.getGrantedPrivileges(actor, resourceSpec); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> Privileges.builder().setPrivileges(privileges).build()); } throw new UnsupportedOperationException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/UpsertPolicyResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/UpsertPolicyResolver.java index 8b4a404271f12..73790fb9b50a4 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/UpsertPolicyResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/UpsertPolicyResolver.java @@ -6,6 +6,7 @@ import com.datahub.authorization.AuthorizerChain; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.PolicyUpdateInput; import com.linkedin.datahub.graphql.resolvers.policy.mappers.PolicyUpdateInputInfoMapper; @@ -65,7 +66,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) key, POLICY_ENTITY_NAME, POLICY_INFO_ASPECT_NAME, info); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { String urn = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/CreatePostResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/CreatePostResolver.java index cae02f67f4f44..12334b1b543e9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/CreatePostResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/CreatePostResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.Media; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreatePostInput; import com.linkedin.datahub.graphql.generated.PostContentType; @@ -54,7 +55,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) PostContent postContent = _postService.mapPostContent(contentType.toString(), title, description, link, media); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { return _postService.createPost( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/DeletePostResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/DeletePostResolver.java index 884722d96aa8a..83209b33dc799 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/DeletePostResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/DeletePostResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; @@ -31,7 +32,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final Urn postUrn = UrnUtils.getUrn(environment.getArgument("urn")); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { return _postService.deletePost(context.getOperationContext(), postUrn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/ListPostsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/ListPostsResolver.java index 4b348b9167363..e99e6c26e0f5c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/ListPostsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/ListPostsResolver.java @@ -6,6 +6,7 @@ import com.datahub.authentication.Authentication; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.ListPostsInput; import com.linkedin.datahub.graphql.generated.ListPostsResult; import com.linkedin.datahub.graphql.types.post.PostMapper; @@ -45,7 +46,7 @@ public CompletableFuture get(final DataFetchingEnvironment envi final Integer count = input.getCount() == null ? DEFAULT_COUNT : input.getCount(); final String query = input.getQuery() == null ? DEFAULT_QUERY : input.getQuery(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final SortCriterion sortCriterion = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/UpdatePostResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/UpdatePostResolver.java index d6ff37f8e5d5f..cbfa45470d602 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/UpdatePostResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/UpdatePostResolver.java @@ -8,6 +8,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.PostContentType; import com.linkedin.datahub.graphql.generated.PostType; @@ -58,7 +59,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) PostContent postContent = postService.mapPostContent(contentType.toString(), title, description, link, media); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { return postService.updatePost( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/CreateQueryResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/CreateQueryResolver.java index 4e390599bc7db..6ad4b85b7d0de 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/CreateQueryResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/CreateQueryResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateQueryInput; import com.linkedin.datahub.graphql.generated.CreateQuerySubjectInput; @@ -39,7 +40,7 @@ public CompletableFuture get(final DataFetchingEnvironment environm bindArgument(environment.getArgument("input"), CreateQueryInput.class); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!AuthorizationUtils.canCreateQuery( input.getSubjects().stream() diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/DeleteQueryResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/DeleteQueryResolver.java index 70b6822cdc94a..639c30268a085 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/DeleteQueryResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/DeleteQueryResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.metadata.service.QueryService; import com.linkedin.query.QuerySubject; @@ -31,7 +32,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final Urn queryUrn = UrnUtils.getUrn(environment.getArgument("urn")); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QuerySubjects existingSubjects = _queryService.getQuerySubjects(context.getOperationContext(), queryUrn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/ListQueriesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/ListQueriesResolver.java index 6fcc0fee76303..d4998bcdb74d7 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/ListQueriesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/ListQueriesResolver.java @@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AndFilterInput; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.FacetFilterInput; @@ -56,7 +57,7 @@ public CompletableFuture get(final DataFetchingEnvironment en final Integer count = input.getCount() == null ? DEFAULT_COUNT : input.getCount(); final String query = input.getQuery() == null ? DEFAULT_QUERY : input.getQuery(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final SortCriterion sortCriterion = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/UpdateQueryResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/UpdateQueryResolver.java index 4276185d435b0..64ca4fb327271 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/UpdateQueryResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/UpdateQueryResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.exception.DataHubGraphQLErrorCode; import com.linkedin.datahub.graphql.exception.DataHubGraphQLException; @@ -44,7 +45,7 @@ public CompletableFuture get(final DataFetchingEnvironment environm final Urn queryUrn = UrnUtils.getUrn(environment.getArgument("urn")); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final QuerySubjects existingSubjects = _queryService.getQuerySubjects(context.getOperationContext(), queryUrn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/recommendation/ListRecommendationsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/recommendation/ListRecommendationsResolver.java index c13a6ce732b91..2cb6a405b6242 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/recommendation/ListRecommendationsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/recommendation/ListRecommendationsResolver.java @@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.ContentParams; import com.linkedin.datahub.graphql.generated.EntityProfileParams; import com.linkedin.datahub.graphql.generated.FacetFilter; @@ -54,7 +55,7 @@ public CompletableFuture get(DataFetchingEnvironment final ListRecommendationsInput input = bindArgument(environment.getArgument("input"), ListRecommendationsInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { log.debug("Listing recommendations for input {}", input); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/AcceptRoleResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/AcceptRoleResolver.java index e1d3e7fe3d47c..2a4eecdab78b1 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/AcceptRoleResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/AcceptRoleResolver.java @@ -7,6 +7,7 @@ import com.datahub.authorization.role.RoleService; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AcceptRoleInput; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; @@ -30,7 +31,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final String inviteTokenStr = input.getInviteToken(); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final Urn inviteTokenUrn = _inviteTokenService.getInviteTokenUrn(inviteTokenStr); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/BatchAssignRoleResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/BatchAssignRoleResolver.java index 8c14ffdb4c403..a8bae6c88539f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/BatchAssignRoleResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/BatchAssignRoleResolver.java @@ -7,6 +7,7 @@ import com.datahub.authorization.role.RoleService; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.BatchAssignRoleInput; import graphql.schema.DataFetcher; @@ -35,7 +36,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final List actors = input.getActors(); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final Urn roleUrn = roleUrnStr == null ? null : Urn.createFromString(roleUrnStr); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/CreateInviteTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/CreateInviteTokenResolver.java index 3bf11b9febc63..7852046fb23cf 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/CreateInviteTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/CreateInviteTokenResolver.java @@ -6,6 +6,7 @@ import com.datahub.authentication.Authentication; import com.datahub.authentication.invite.InviteTokenService; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateInviteTokenInput; import com.linkedin.datahub.graphql.generated.InviteToken; @@ -34,7 +35,7 @@ public CompletableFuture get(final DataFetchingEnvironment environm final String roleUrnStr = input.getRoleUrn(); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { return new InviteToken( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/GetInviteTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/GetInviteTokenResolver.java index 039a1730e7e67..0e2791cd952da 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/GetInviteTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/GetInviteTokenResolver.java @@ -6,6 +6,7 @@ import com.datahub.authentication.Authentication; import com.datahub.authentication.invite.InviteTokenService; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.GetInviteTokenInput; import com.linkedin.datahub.graphql.generated.InviteToken; @@ -34,7 +35,7 @@ public CompletableFuture get(final DataFetchingEnvironment environm final String roleUrnStr = input.getRoleUrn(); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { return new InviteToken( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/ListRolesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/ListRolesResolver.java index b3c5e5485c951..765d2b062ca61 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/ListRolesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/ListRolesResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.DataHubRole; import com.linkedin.datahub.graphql.generated.ListRolesInput; import com.linkedin.datahub.graphql.generated.ListRolesResult; @@ -47,7 +48,7 @@ public CompletableFuture get(final DataFetchingEnvironment envi final Integer count = input.getCount() == null ? DEFAULT_COUNT : input.getCount(); final String query = input.getQuery() == null ? DEFAULT_QUERY : input.getQuery(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // First, get all role Urns. diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AggregateAcrossEntitiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AggregateAcrossEntitiesResolver.java index 783789c738de0..1205b74aa3a0b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AggregateAcrossEntitiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AggregateAcrossEntitiesResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AggregateAcrossEntitiesInput; import com.linkedin.datahub.graphql.generated.AggregateResults; import com.linkedin.datahub.graphql.resolvers.ResolverUtils; @@ -52,7 +53,7 @@ public CompletableFuture get(DataFetchingEnvironment environme // escape forward slash since it is a reserved character in Elasticsearch final String sanitizedQuery = ResolverUtils.escapeForwardSlash(input.getQuery()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final DataHubViewInfo maybeResolvedView = (input.getViewUrn() != null) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutoCompleteResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutoCompleteResolver.java index 235f5f8d27899..dba763a4b193b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutoCompleteResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutoCompleteResolver.java @@ -3,6 +3,7 @@ import static com.linkedin.datahub.graphql.resolvers.ResolverUtils.bindArgument; import static org.apache.commons.lang3.StringUtils.isBlank; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.ValidationException; import com.linkedin.datahub.graphql.generated.AutoCompleteInput; import com.linkedin.datahub.graphql.generated.AutoCompleteResults; @@ -50,7 +51,7 @@ public CompletableFuture get(DataFetchingEnvironment enviro final Filter filter = ResolverUtils.buildFilter(input.getFilters(), input.getOrFilters()); final int limit = input.getLimit() != null ? input.getLimit() : DEFAULT_LIMIT; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _logger.debug( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutocompleteUtils.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutocompleteUtils.java index 9cd860781c0d6..1014966af542b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutocompleteUtils.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutocompleteUtils.java @@ -1,5 +1,6 @@ package com.linkedin.datahub.graphql.resolvers.search; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AutoCompleteMultipleInput; import com.linkedin.datahub.graphql.generated.AutoCompleteMultipleResults; import com.linkedin.datahub.graphql.generated.AutoCompleteResultForEntity; @@ -37,7 +38,7 @@ public static CompletableFuture batchGetAutocomplet entities.stream() .map( entity -> - CompletableFuture.supplyAsync( + GraphQLConcurrencyUtils.supplyAsync( () -> { final Filter filter = ResolverUtils.buildFilter(input.getFilters(), input.getOrFilters()); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/GetQuickFiltersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/GetQuickFiltersResolver.java index 06f05cb73000c..eb098934c291a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/GetQuickFiltersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/GetQuickFiltersResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.GetQuickFiltersInput; import com.linkedin.datahub.graphql.generated.GetQuickFiltersResult; @@ -53,7 +54,7 @@ public CompletableFuture get(final DataFetchingEnvironmen final GetQuickFiltersInput input = bindArgument(environment.getArgument("input"), GetQuickFiltersInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final GetQuickFiltersResult result = new GetQuickFiltersResult(); final List quickFilters = new ArrayList<>(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossEntitiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossEntitiesResolver.java index 036e1bb6717f7..94336055aff20 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossEntitiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossEntitiesResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.ScrollAcrossEntitiesInput; import com.linkedin.datahub.graphql.generated.ScrollResults; @@ -61,7 +62,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) @Nullable final String scrollId = input.getScrollId(); final int count = input.getCount() != null ? input.getCount() : DEFAULT_COUNT; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final DataHubViewInfo maybeResolvedView = (input.getViewUrn() != null) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossLineageResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossLineageResolver.java index f5ce7f8257355..3b1502a928c4d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossLineageResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossLineageResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AndFilterInput; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.FacetFilterInput; @@ -91,7 +92,7 @@ public CompletableFuture get(DataFetchingEnvironment com.linkedin.metadata.graph.LineageDirection resolvedDirection = com.linkedin.metadata.graph.LineageDirection.valueOf(lineageDirection.toString()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { log.debug( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossEntitiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossEntitiesResolver.java index 88e5dd0a94f0b..f46fddbc307cd 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossEntitiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossEntitiesResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.SearchAcrossEntitiesInput; import com.linkedin.datahub.graphql.generated.SearchResults; import com.linkedin.datahub.graphql.resolvers.ResolverUtils; @@ -47,7 +48,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) final int start = input.getStart() != null ? input.getStart() : DEFAULT_START; final int count = input.getCount() != null ? input.getCount() : DEFAULT_COUNT; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final DataHubViewInfo maybeResolvedView = (input.getViewUrn() != null) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossLineageResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossLineageResolver.java index 8df6c241f2965..f31859700a21a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossLineageResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossLineageResolver.java @@ -7,6 +7,7 @@ import com.google.common.collect.ImmutableSet; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AndFilterInput; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.FacetFilterInput; @@ -123,7 +124,7 @@ public CompletableFuture get(DataFetchingEnvironment com.linkedin.metadata.graph.LineageDirection resolvedDirection = com.linkedin.metadata.graph.LineageDirection.valueOf(lineageDirection.toString()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { log.debug( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchResolver.java index ed9838b7074c7..db513485d1040 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchResolver.java @@ -5,6 +5,7 @@ import static com.linkedin.metadata.search.utils.SearchUtils.applyDefaultSearchFlags; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.SearchInput; import com.linkedin.datahub.graphql.generated.SearchResults; import com.linkedin.datahub.graphql.resolvers.ResolverUtils; @@ -65,7 +66,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) searchFlags = applyDefaultSearchFlags(null, sanitizedQuery, SEARCH_RESOLVER_DEFAULTS); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { log.debug( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/user/UpdateCorpUserViewsSettingsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/user/UpdateCorpUserViewsSettingsResolver.java index dc38679d14091..94b8458327fbd 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/user/UpdateCorpUserViewsSettingsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/user/UpdateCorpUserViewsSettingsResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.UpdateCorpUserViewsSettingsInput; import com.linkedin.identity.CorpUserAppearanceSettings; import com.linkedin.identity.CorpUserSettings; @@ -32,7 +33,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final UpdateCorpUserViewsSettingsInput input = bindArgument(environment.getArgument("input"), UpdateCorpUserViewsSettingsInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/GlobalViewsSettingsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/GlobalViewsSettingsResolver.java index a9736f15e79f7..05ad51be74fd2 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/GlobalViewsSettingsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/GlobalViewsSettingsResolver.java @@ -1,6 +1,7 @@ package com.linkedin.datahub.graphql.resolvers.settings.view; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.GlobalViewsSettings; import com.linkedin.metadata.service.SettingsService; import com.linkedin.settings.global.GlobalSettingsInfo; @@ -30,7 +31,7 @@ public GlobalViewsSettingsResolver(final SettingsService settingsService) { public CompletableFuture get(final DataFetchingEnvironment environment) throws Exception { final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final GlobalSettingsInfo globalSettings = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/UpdateGlobalViewsSettingsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/UpdateGlobalViewsSettingsResolver.java index d4b6db3f5ae99..87065397ba5dc 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/UpdateGlobalViewsSettingsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/UpdateGlobalViewsSettingsResolver.java @@ -6,6 +6,7 @@ import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.UpdateGlobalViewsSettingsInput; import com.linkedin.metadata.service.SettingsService; @@ -37,7 +38,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final UpdateGlobalViewsSettingsInput input = bindArgument(environment.getArgument("input"), UpdateGlobalViewsSettingsInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (AuthorizationUtils.canManageGlobalViews(context)) { try { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchGetStepStatesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchGetStepStatesResolver.java index 8a4b1c2ff0d38..fe6c165813dd1 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchGetStepStatesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchGetStepStatesResolver.java @@ -8,6 +8,7 @@ import com.google.common.collect.ImmutableSet; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BatchGetStepStatesInput; import com.linkedin.datahub.graphql.generated.BatchGetStepStatesResult; import com.linkedin.datahub.graphql.generated.StepStateResult; @@ -46,7 +47,7 @@ public CompletableFuture get( final BatchGetStepStatesInput input = bindArgument(environment.getArgument("input"), BatchGetStepStatesInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { Map urnsToIdsMap; Set urns; diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchUpdateStepStatesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchUpdateStepStatesResolver.java index ea04f0fd2af34..644dc78568227 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchUpdateStepStatesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchUpdateStepStatesResolver.java @@ -10,6 +10,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.data.template.StringMap; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.BatchUpdateStepStatesInput; import com.linkedin.datahub.graphql.generated.BatchUpdateStepStatesResult; import com.linkedin.datahub.graphql.generated.StepStateInput; @@ -47,7 +48,7 @@ public CompletableFuture get( final List states = input.getStates(); final String actorUrnStr = authentication.getActor().toUrnStr(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final Urn actorUrn = UrnUtils.getUrn(actorUrnStr); final AuditStamp auditStamp = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/structuredproperties/UpsertStructuredPropertiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/structuredproperties/UpsertStructuredPropertiesResolver.java index 95c3bebeeecf8..869a43734e8e4 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/structuredproperties/UpsertStructuredPropertiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/structuredproperties/UpsertStructuredPropertiesResolver.java @@ -9,6 +9,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.PropertyValueInput; import com.linkedin.datahub.graphql.generated.UpsertStructuredPropertiesInput; @@ -60,7 +61,7 @@ public CompletableFuture updateMap.put(param.getStructuredPropertyUrn(), param.getValues())); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // check authorization first diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/CreateTagResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/CreateTagResolver.java index 0e756b336bcae..78bf1da48ba4f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/CreateTagResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/CreateTagResolver.java @@ -7,6 +7,7 @@ import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateTagInput; import com.linkedin.datahub.graphql.generated.OwnerEntityType; @@ -42,7 +43,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws final CreateTagInput input = bindArgument(environment.getArgument("input"), CreateTagInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (!AuthorizationUtils.canCreateTags(context)) { throw new AuthorizationException( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/DeleteTagResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/DeleteTagResolver.java index b29ca8335247f..6466f83a589d9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/DeleteTagResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/DeleteTagResolver.java @@ -4,6 +4,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.entity.client.EntityClient; import graphql.schema.DataFetcher; @@ -28,7 +29,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final String tagUrn = environment.getArgument("urn"); final Urn urn = Urn.createFromString(tagUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (AuthorizationUtils.canManageTags(context) || AuthorizationUtils.canDeleteEntity(UrnUtils.getUrn(tagUrn), context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/SetTagColorResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/SetTagColorResolver.java index d5e3c423f0d79..a8314421e9645 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/SetTagColorResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/SetTagColorResolver.java @@ -10,6 +10,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.entity.client.EntityClient; import com.linkedin.metadata.authorization.PoliciesConfig; @@ -43,7 +44,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw final Urn tagUrn = Urn.createFromString(environment.getArgument("urn")); final String colorHex = environment.getArgument("colorHex"); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { // If user is not authorized, then throw exception. diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/CreateTestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/CreateTestResolver.java index 88e8f3e530410..f49a6d19266da 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/CreateTestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/CreateTestResolver.java @@ -8,6 +8,7 @@ import com.datahub.authentication.Authentication; import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateTestInput; import com.linkedin.entity.client.EntityClient; @@ -36,7 +37,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final CreateTestInput input = bindArgument(environment.getArgument("input"), CreateTestInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (canManageTests(context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/DeleteTestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/DeleteTestResolver.java index fab6bb3c412cd..43d80d68a30d6 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/DeleteTestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/DeleteTestResolver.java @@ -4,6 +4,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.entity.client.EntityClient; import graphql.schema.DataFetcher; @@ -28,7 +29,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final QueryContext context = environment.getContext(); final String testUrn = environment.getArgument("urn"); final Urn urn = Urn.createFromString(testUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (canManageTests(context)) { try { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/ListTestsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/ListTestsResolver.java index 3f4a0367af05a..869336b467c9e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/ListTestsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/ListTestsResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.EntityType; import com.linkedin.datahub.graphql.generated.ListTestsInput; @@ -43,7 +44,7 @@ public CompletableFuture get(final DataFetchingEnvironment envi final QueryContext context = environment.getContext(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (canManageTests(context)) { final ListTestsInput input = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/TestResultsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/TestResultsResolver.java index 0a834e8a665b1..6eb895b1aeadc 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/TestResultsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/TestResultsResolver.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableSet; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.Entity; import com.linkedin.datahub.graphql.generated.Test; import com.linkedin.datahub.graphql.generated.TestResult; @@ -35,7 +36,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) t final QueryContext context = environment.getContext(); final Urn entityUrn = Urn.createFromString(((Entity) environment.getSource()).getUrn()); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final com.linkedin.test.TestResults gmsTestResults = getTestResults(entityUrn, context); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/UpdateTestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/UpdateTestResolver.java index 3c469b2d4f3f3..42a230e40c77d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/UpdateTestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/UpdateTestResolver.java @@ -9,6 +9,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.data.template.SetMode; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.UpdateTestInput; import com.linkedin.entity.client.EntityClient; @@ -32,7 +33,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final QueryContext context = environment.getContext(); final Authentication authentication = context.getAuthentication(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (canManageTests(context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaBlameResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaBlameResolver.java index ea234280ed6c2..e636daed74d02 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaBlameResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaBlameResolver.java @@ -3,6 +3,7 @@ import static com.linkedin.datahub.graphql.resolvers.ResolverUtils.*; import com.linkedin.common.urn.Urn; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.GetSchemaBlameInput; import com.linkedin.datahub.graphql.generated.GetSchemaBlameResult; import com.linkedin.datahub.graphql.types.timeline.mappers.SchemaBlameMapper; @@ -42,7 +43,7 @@ public CompletableFuture get(final DataFetchingEnvironment final long endTime = 0; final String version = input.getVersion() == null ? null : input.getVersion(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final Set changeCategorySet = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaVersionListResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaVersionListResolver.java index 5063dbbf7ccf3..eefdfdbdfc5a0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaVersionListResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaVersionListResolver.java @@ -3,6 +3,7 @@ import static com.linkedin.datahub.graphql.resolvers.ResolverUtils.*; import com.linkedin.common.urn.Urn; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.GetSchemaVersionListInput; import com.linkedin.datahub.graphql.generated.GetSchemaVersionListResult; import com.linkedin.datahub.graphql.types.timeline.mappers.SchemaVersionListMapper; @@ -40,7 +41,7 @@ public CompletableFuture get( final long startTime = 0; final long endTime = 0; - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final Set changeCategorySet = new HashSet<>(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/CreateNativeUserResetTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/CreateNativeUserResetTokenResolver.java index a8c0fb7d376ae..e2ee9389c7043 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/CreateNativeUserResetTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/CreateNativeUserResetTokenResolver.java @@ -5,6 +5,7 @@ import com.datahub.authentication.user.NativeUserService; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateNativeUserResetTokenInput; import com.linkedin.datahub.graphql.generated.ResetToken; @@ -40,7 +41,7 @@ public CompletableFuture get(final DataFetchingEnvironment environme "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { String resetToken = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/ListUsersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/ListUsersResolver.java index 722b773d42632..936af172085d5 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/ListUsersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/ListUsersResolver.java @@ -6,6 +6,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CorpUser; import com.linkedin.datahub.graphql.generated.ListUsersInput; @@ -51,7 +52,7 @@ public CompletableFuture get(final DataFetchingEnvironment envi final Integer count = input.getCount() == null ? DEFAULT_COUNT : input.getCount(); final String query = input.getQuery() == null ? DEFAULT_QUERY : input.getQuery(); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { // First, get all policy Urns. diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/RemoveUserResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/RemoveUserResolver.java index f212b43807dc1..9421fa058c298 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/RemoveUserResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/RemoveUserResolver.java @@ -3,6 +3,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.entity.client.EntityClient; import graphql.schema.DataFetcher; @@ -27,7 +28,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) if (AuthorizationUtils.canManageUsersAndGroups(context)) { final String userUrn = environment.getArgument("urn"); final Urn urn = Urn.createFromString(userUrn); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { _entityClient.deleteEntity(context.getOperationContext(), urn); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/UpdateUserStatusResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/UpdateUserStatusResolver.java index 478bc087115e1..b65e1834d1e0a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/UpdateUserStatusResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/UpdateUserStatusResolver.java @@ -8,6 +8,7 @@ import com.linkedin.common.urn.UrnUtils; import com.linkedin.datahub.graphql.QueryContext; import com.linkedin.datahub.graphql.authorization.AuthorizationUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CorpUserStatus; import com.linkedin.entity.client.EntityClient; @@ -45,7 +46,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) .setTime(System.currentTimeMillis()) .setActor(Urn.createFromString(context.getActorUrn()))); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { final MetadataChangeProposal proposal = diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/CreateViewResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/CreateViewResolver.java index 332e92ba7edd8..d29ff9dbe8aa3 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/CreateViewResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/CreateViewResolver.java @@ -4,6 +4,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.CreateViewInput; import com.linkedin.datahub.graphql.generated.DataHubView; @@ -37,7 +38,7 @@ public CompletableFuture get(final DataFetchingEnvironment environm final CreateViewInput input = bindArgument(environment.getArgument("input"), CreateViewInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { if (ViewUtils.canCreateView( DataHubViewType.valueOf(input.getViewType().toString()), context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/DeleteViewResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/DeleteViewResolver.java index a10e0a5c7b962..90b613d0b8feb 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/DeleteViewResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/DeleteViewResolver.java @@ -2,6 +2,7 @@ import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.metadata.service.ViewService; import graphql.schema.DataFetcher; @@ -27,7 +28,7 @@ public CompletableFuture get(final DataFetchingEnvironment environment) final QueryContext context = environment.getContext(); final String urnStr = environment.getArgument("urn"); final Urn urn = Urn.createFromString(urnStr); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { if (ViewUtils.canUpdateView(_viewService, urn, context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListGlobalViewsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListGlobalViewsResolver.java index 80d33b84b4c76..8a60778ab3453 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListGlobalViewsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListGlobalViewsResolver.java @@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AndFilterInput; import com.linkedin.datahub.graphql.generated.DataHubView; import com.linkedin.datahub.graphql.generated.DataHubViewType; @@ -57,7 +58,7 @@ public CompletableFuture get(final DataFetchingEnvironment envi final ListGlobalViewsInput input = bindArgument(environment.getArgument("input"), ListGlobalViewsInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final Integer start = input.getStart() == null ? DEFAULT_START : input.getStart(); final Integer count = input.getCount() == null ? DEFAULT_COUNT : input.getCount(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListMyViewsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListMyViewsResolver.java index fd029f9d6d3b2..783320299245a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListMyViewsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListMyViewsResolver.java @@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableList; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.generated.AndFilterInput; import com.linkedin.datahub.graphql.generated.DataHubView; import com.linkedin.datahub.graphql.generated.EntityType; @@ -58,7 +59,7 @@ public CompletableFuture get(final DataFetchingEnvironment envi final ListMyViewsInput input = bindArgument(environment.getArgument("input"), ListMyViewsInput.class); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { final Integer start = input.getStart() == null ? DEFAULT_START : input.getStart(); final Integer count = input.getCount() == null ? DEFAULT_COUNT : input.getCount(); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/UpdateViewResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/UpdateViewResolver.java index f05195655177c..80166bdaf8500 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/UpdateViewResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/UpdateViewResolver.java @@ -5,6 +5,7 @@ import com.datahub.authentication.Authentication; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.DataHubView; import com.linkedin.datahub.graphql.generated.UpdateViewInput; @@ -38,7 +39,7 @@ public CompletableFuture get(final DataFetchingEnvironment environm bindArgument(environment.getArgument("input"), UpdateViewInput.class); final Urn urn = Urn.createFromString(urnStr); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { if (ViewUtils.canUpdateView(_viewService, urn, context)) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/CreateERModelRelationshipResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/CreateERModelRelationshipResolver.java index cc1896027492f..e762c70ceb2d7 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/CreateERModelRelationshipResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/CreateERModelRelationshipResolver.java @@ -7,6 +7,7 @@ import com.linkedin.common.urn.ERModelRelationshipUrn; import com.linkedin.common.urn.Urn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.ERModelRelationship; import com.linkedin.datahub.graphql.generated.ERModelRelationshipPropertiesInput; @@ -83,7 +84,7 @@ public CompletableFuture get(DataFetchingEnvironment enviro throw new AuthorizationException( "Unauthorized to create erModelRelationship. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { log.debug("Create ERModelRelation input: {}", input); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/UpdateERModelRelationshipResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/UpdateERModelRelationshipResolver.java index b71a99522eba6..d9a19a74aada5 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/UpdateERModelRelationshipResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/UpdateERModelRelationshipResolver.java @@ -5,6 +5,7 @@ import com.linkedin.common.urn.CorpuserUrn; import com.linkedin.common.urn.ERModelRelationshipUrn; import com.linkedin.datahub.graphql.QueryContext; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.AuthorizationException; import com.linkedin.datahub.graphql.generated.ERModelRelationshipUpdateInput; import com.linkedin.datahub.graphql.types.ermodelrelationship.mappers.ERModelRelationshipUpdateInputMapper; @@ -36,7 +37,7 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); } - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { try { log.debug("Create ERModelRelation input: {}", input); diff --git a/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/GraphQLConcurrencyConfiguration.java b/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/GraphQLConcurrencyConfiguration.java new file mode 100644 index 0000000000000..4728e6f8ac103 --- /dev/null +++ b/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/GraphQLConcurrencyConfiguration.java @@ -0,0 +1,12 @@ +package com.linkedin.metadata.config; + +import lombok.Data; + +@Data +public class GraphQLConcurrencyConfiguration { + boolean separateThreadPool; + long stackSize; + int corePoolSize; + int maxPoolSize; + int keepAlive; +} diff --git a/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/GraphQLConfiguration.java b/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/GraphQLConfiguration.java index 93292a5edafee..2b9905b48d610 100644 --- a/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/GraphQLConfiguration.java +++ b/metadata-service/configuration/src/main/java/com/linkedin/metadata/config/GraphQLConfiguration.java @@ -5,4 +5,5 @@ @Data public class GraphQLConfiguration { private GraphQLQueryConfiguration query; + private GraphQLConcurrencyConfiguration concurrency; } diff --git a/metadata-service/configuration/src/main/resources/application.yaml b/metadata-service/configuration/src/main/resources/application.yaml index 27ccd8851fdf0..bc9aeb6945c8e 100644 --- a/metadata-service/configuration/src/main/resources/application.yaml +++ b/metadata-service/configuration/src/main/resources/application.yaml @@ -440,6 +440,12 @@ cache: dashboardUsageStatistics: 21600 # 6hrs graphQL: + concurrency: + separateThreadPool: ${GRAPHQL_CONCURRENCY_SEPARATE_THREAD_POOL:false} # Enable the separate thread pool, the following configurations only apply if enabled + stackSize: ${GRAPHQL_CONCURRENCY_STACK_SIZE:256000} # Default to JVM default of 256 KB + corePoolSize: ${GRAPHQL_CONCURRENCY_CORE_POOL_SIZE:-1} # Base thread pool size for GraphQL executor service, default 5 * # of cores + maxPoolSize: ${GRAPHQL_CONCURRENCY_MAX_POOL_SIZE:-1} # Maximum thread pool size for GraphQL executor service, default 100 * # of cores + keepAlive: ${GRAPHQL_CONCURRENCY_KEEP_ALIVE:60} # Number of seconds to keep inactive threads alive query: complexityLimit: ${GRAPHQL_QUERY_COMPLEXITY_LIMIT:2000} depthLimit: ${GRAPHQL_QUERY_DEPTH_LIMIT:50} diff --git a/metadata-service/factories/src/main/java/com/linkedin/gms/factory/graphql/GraphQLEngineFactory.java b/metadata-service/factories/src/main/java/com/linkedin/gms/factory/graphql/GraphQLEngineFactory.java index 678d442396d0f..5f4d4ea5020d6 100644 --- a/metadata-service/factories/src/main/java/com/linkedin/gms/factory/graphql/GraphQLEngineFactory.java +++ b/metadata-service/factories/src/main/java/com/linkedin/gms/factory/graphql/GraphQLEngineFactory.java @@ -10,6 +10,8 @@ import com.linkedin.datahub.graphql.GmsGraphQLEngineArgs; import com.linkedin.datahub.graphql.GraphQLEngine; import com.linkedin.datahub.graphql.analytics.service.AnalyticsService; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; +import com.linkedin.datahub.graphql.concurrency.GraphQLWorkerPoolThreadFactory; import com.linkedin.entity.client.EntityClient; import com.linkedin.entity.client.SystemEntityClient; import com.linkedin.gms.factory.auth.DataHubTokenServiceFactory; @@ -21,6 +23,7 @@ import com.linkedin.gms.factory.entityregistry.EntityRegistryFactory; import com.linkedin.gms.factory.recommendation.RecommendationServiceFactory; import com.linkedin.metadata.client.UsageStatsJavaClient; +import com.linkedin.metadata.config.GraphQLConcurrencyConfiguration; import com.linkedin.metadata.entity.EntityService; import com.linkedin.metadata.graph.GraphClient; import com.linkedin.metadata.graph.GraphService; @@ -42,11 +45,16 @@ import com.linkedin.metadata.version.GitVersion; import io.datahubproject.metadata.services.RestrictedService; import io.datahubproject.metadata.services.SecretService; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.SynchronousQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; import javax.annotation.Nonnull; import org.opensearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -235,4 +243,34 @@ protected GraphQLEngine graphQLEngine( args.setBusinessAttributeService(businessAttributeService); return new GmsGraphQLEngine(args).builder().build(); } + + @Bean(name = "graphQLWorkerPool") + @ConditionalOnProperty("graphQL.concurrency.separateThreadPool") + protected ExecutorService graphQLWorkerPool() { + GraphQLConcurrencyConfiguration concurrencyConfig = + configProvider.getGraphQL().getConcurrency(); + GraphQLWorkerPoolThreadFactory threadFactory = + new GraphQLWorkerPoolThreadFactory(concurrencyConfig.getStackSize()); + int corePoolSize = + concurrencyConfig.getCorePoolSize() < 0 + ? Runtime.getRuntime().availableProcessors() * 5 + : concurrencyConfig.getCorePoolSize(); + int maxPoolSize = + concurrencyConfig.getMaxPoolSize() <= 0 + ? Runtime.getRuntime().availableProcessors() * 100 + : concurrencyConfig.getMaxPoolSize(); + + ThreadPoolExecutor graphQLWorkerPool = + new ThreadPoolExecutor( + corePoolSize, + maxPoolSize, + concurrencyConfig.getKeepAlive(), + TimeUnit.SECONDS, + new SynchronousQueue(), + threadFactory, + new ThreadPoolExecutor.CallerRunsPolicy()); + GraphQLConcurrencyUtils.setExecutorService(graphQLWorkerPool); + + return graphQLWorkerPool; + } } diff --git a/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java b/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java index 052c539f3719a..84cff483ee373 100644 --- a/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java +++ b/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java @@ -13,6 +13,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.inject.name.Named; import com.linkedin.datahub.graphql.GraphQLEngine; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import com.linkedin.datahub.graphql.exception.DataHubGraphQLError; import com.linkedin.metadata.utils.metrics.MetricUtils; import graphql.ExecutionResult; @@ -25,7 +26,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ForkJoinPool; import java.util.concurrent.TimeUnit; import javax.annotation.Nonnull; import lombok.extern.slf4j.Slf4j; @@ -51,8 +51,6 @@ public GraphQLController() { @Inject AuthorizerChain _authorizerChain; - public static final ForkJoinPool GRAPHQL_FORK_JOIN_POOL = new ForkJoinPool(ForkJoinPool.getCommonPoolParallelism()); - @Nonnull @Inject @Named("systemOperationContext") @@ -128,7 +126,7 @@ CompletableFuture> postGraphQL(HttpEntity httpEnt log.info("Processing request, operation: {}, actor urn: {}", queryName, context.getActorUrn()); log.debug("Query: {}, variables: {}", query, variables); - return CompletableFuture.supplyAsync( + return GraphQLConcurrencyUtils.supplyAsync( () -> { log.info("Executing operation {} for {}", queryName, threadName); @@ -167,7 +165,7 @@ CompletableFuture> postGraphQL(HttpEntity httpEnt executionResult.toSpecification()); return new ResponseEntity<>(HttpStatus.SERVICE_UNAVAILABLE); } - }, GRAPHQL_FORK_JOIN_POOL); + }); } @GetMapping("/graphql") diff --git a/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphiQLController.java b/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphiQLController.java index 35636bf07eb10..0d1b71ab504ac 100644 --- a/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphiQLController.java +++ b/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphiQLController.java @@ -2,6 +2,7 @@ import static java.nio.charset.StandardCharsets.*; +import com.linkedin.datahub.graphql.concurrency.GraphQLConcurrencyUtils; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; @@ -34,6 +35,6 @@ public GraphiQLController() { @GetMapping(value = "/graphiql", produces = MediaType.TEXT_HTML_VALUE) @ResponseBody CompletableFuture graphiQL() { - return CompletableFuture.supplyAsync(() -> this.graphiqlHtml); + return GraphQLConcurrencyUtils.supplyAsync(() -> this.graphiqlHtml); } } From 0cb5beb712772a9d0a2eba34e5dc81b2c41b7a88 Mon Sep 17 00:00:00 2001 From: RyanHolstien Date: Wed, 22 May 2024 16:52:18 -0500 Subject: [PATCH 3/6] review comments --- .../GraphQLWorkerPoolThreadFactory.java | 7 ++- .../DataHubFieldComplexityCalculator.java | 55 ++++++++++--------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java index 3429e481e7f74..943c78272adb9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java @@ -1,13 +1,14 @@ package com.linkedin.datahub.graphql.concurrency; import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicLong; public class GraphQLWorkerPoolThreadFactory implements ThreadFactory { - private static int threadInitNumber; + private static final AtomicLong THREAD_INIT_NUMBER = new AtomicLong(); - private static synchronized int nextThreadNum() { - return threadInitNumber++; + private static long nextThreadNum() { + return THREAD_INIT_NUMBER.getAndIncrement(); } private long stackSize; diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java index a4045a5ac34ff..300f04cdaa090 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/instrumentation/DataHubFieldComplexityCalculator.java @@ -31,31 +31,7 @@ public int calculate(FieldComplexityEnvironment environment, int childComplexity if (input.containsKey(COUNT_ARG) && (Integer) input.get(COUNT_ARG) > 1) { Integer count = (Integer) input.get(COUNT_ARG); Field field = environment.getField(); - List subFields = field.getSelectionSet().getSelections(); - Optional searchResultsFieldsField = - subFields.stream() - .filter(selection -> selection instanceof Field) - .map(selection -> (Field) selection) - .filter(subField -> SEARCH_RESULTS_FIELD.equals(subField.getName())) - .map(Field::getSelectionSet) - .map(SelectionSet::getSelections) - .flatMap(List::stream) - .filter(selection -> selection instanceof Field) - .map(selection -> (Field) selection) - .filter(subField -> ENTITY_FIELD.equals(subField.getName())) - .map(Field::getSelectionSet) - .map(SelectionSet::getSelections) - .flatMap(List::stream) - .filter(selection -> selection instanceof FragmentSpread) - .map(selection -> (FragmentSpread) selection) - .filter(subField -> SEARCH_RESULT_FIELDS_FIELD.equals(subField.getName())) - .findFirst(); - if (searchResultsFieldsField.isPresent()) { - // This fragment includes 2 lineage queries, we account for this additional complexity by - // multiplying - // by the count of entities attempting to be returned - complexity += 2 * count; - } + complexity += countRecursiveLineageComplexity(count, field); } } if (GRAPHQL_QUERY_TYPE.equals(environment.getParentType().getName())) { @@ -66,4 +42,33 @@ public int calculate(FieldComplexityEnvironment environment, int childComplexity } return complexity + childComplexity; } + + private int countRecursiveLineageComplexity(Integer count, Field field) { + List subFields = field.getSelectionSet().getSelections(); + Optional searchResultsFieldsField = + subFields.stream() + .filter(selection -> selection instanceof Field) + .map(selection -> (Field) selection) + .filter(subField -> SEARCH_RESULTS_FIELD.equals(subField.getName())) + .map(Field::getSelectionSet) + .map(SelectionSet::getSelections) + .flatMap(List::stream) + .filter(selection -> selection instanceof Field) + .map(selection -> (Field) selection) + .filter(subField -> ENTITY_FIELD.equals(subField.getName())) + .map(Field::getSelectionSet) + .map(SelectionSet::getSelections) + .flatMap(List::stream) + .filter(selection -> selection instanceof FragmentSpread) + .map(selection -> (FragmentSpread) selection) + .filter(subField -> SEARCH_RESULT_FIELDS_FIELD.equals(subField.getName())) + .findFirst(); + if (searchResultsFieldsField.isPresent()) { + // This fragment includes 2 lineage queries, we account for this additional complexity by + // multiplying + // by the count of entities attempting to be returned + return 2 * count; + } + return 0; + } } From 689941fb8ec2a4e1adc33d6217f0f08fe09e5e08 Mon Sep 17 00:00:00 2001 From: RyanHolstien Date: Tue, 28 May 2024 16:09:30 -0500 Subject: [PATCH 4/6] add metric --- .../datahub/graphql/GmsGraphQLEngine.java | 4 +- .../datahub/graphql/SubTypesResolver.java | 4 +- .../graphql/WeaklyTypedAspectsResolver.java | 4 +- .../concurrency/GraphQLConcurrencyUtils.java | 9 ++- .../datahub/graphql/resolvers/MeResolver.java | 4 +- .../assertion/AssertionRunEventResolver.java | 4 +- .../assertion/DeleteAssertionResolver.java | 4 +- .../assertion/EntityAssertionsResolver.java | 4 +- .../auth/CreateAccessTokenResolver.java | 4 +- .../resolvers/auth/DebugAccessResolver.java | 4 +- .../auth/GetAccessTokenMetadataResolver.java | 4 +- .../auth/GetAccessTokenResolver.java | 4 +- .../auth/ListAccessTokensResolver.java | 4 +- .../auth/RevokeAccessTokenResolver.java | 4 +- .../resolvers/browse/BrowsePathsResolver.java | 4 +- .../resolvers/browse/BrowseResolver.java | 4 +- .../browse/EntityBrowsePathsResolver.java | 4 +- .../AddBusinessAttributeResolver.java | 4 +- .../CreateBusinessAttributeResolver.java | 4 +- .../DeleteBusinessAttributeResolver.java | 4 +- .../ListBusinessAttributesResolver.java | 4 +- .../RemoveBusinessAttributeResolver.java | 4 +- .../UpdateBusinessAttributeResolver.java | 4 +- .../resolvers/chart/BrowseV2Resolver.java | 4 +- .../container/ContainerEntitiesResolver.java | 4 +- .../container/ParentContainersResolver.java | 4 +- .../DashboardStatsSummaryResolver.java | 4 +- .../DashboardUsageStatsResolver.java | 4 +- .../BatchSetDataProductResolver.java | 4 +- .../CreateDataProductResolver.java | 4 +- .../DeleteDataProductResolver.java | 4 +- .../ListDataProductAssetsResolver.java | 4 +- .../UpdateDataProductResolver.java | 4 +- .../dataset/DatasetHealthResolver.java | 4 +- .../dataset/DatasetStatsSummaryResolver.java | 4 +- .../dataset/DatasetUsageStatsResolver.java | 4 +- .../dataset/IsAssignedToMeResolver.java | 4 +- .../UpdateDeprecationResolver.java | 4 +- .../domain/CreateDomainResolver.java | 4 +- .../domain/DeleteDomainResolver.java | 4 +- .../domain/DomainEntitiesResolver.java | 4 +- .../resolvers/domain/ListDomainsResolver.java | 4 +- .../domain/ParentDomainsResolver.java | 4 +- .../resolvers/domain/SetDomainResolver.java | 4 +- .../resolvers/domain/UnsetDomainResolver.java | 4 +- .../resolvers/embed/UpdateEmbedResolver.java | 4 +- .../entity/EntityExistsResolver.java | 4 +- .../entity/EntityPrivilegesResolver.java | 4 +- .../form/BatchAssignFormResolver.java | 4 +- .../form/BatchRemoveFormResolver.java | 4 +- .../CreateDynamicFormAssignmentResolver.java | 4 +- .../form/IsFormAssignedToMeResolver.java | 4 +- .../form/SubmitFormPromptResolver.java | 4 +- .../resolvers/form/VerifyFormResolver.java | 4 +- .../glossary/AddRelatedTermsResolver.java | 4 +- .../glossary/CreateGlossaryNodeResolver.java | 4 +- .../glossary/CreateGlossaryTermResolver.java | 4 +- .../DeleteGlossaryEntityResolver.java | 4 +- .../GetRootGlossaryNodesResolver.java | 4 +- .../GetRootGlossaryTermsResolver.java | 4 +- .../glossary/ParentNodesResolver.java | 4 +- .../glossary/RemoveRelatedTermsResolver.java | 4 +- .../group/AddGroupMembersResolver.java | 4 +- .../resolvers/group/CreateGroupResolver.java | 4 +- .../resolvers/group/EntityCountsResolver.java | 4 +- .../resolvers/group/ListGroupsResolver.java | 4 +- .../group/RemoveGroupMembersResolver.java | 4 +- .../resolvers/group/RemoveGroupResolver.java | 4 +- .../health/EntityHealthResolver.java | 4 +- .../incident/EntityIncidentsResolver.java | 4 +- .../incident/RaiseIncidentResolver.java | 4 +- .../UpdateIncidentStatusResolver.java | 4 +- ...ncelIngestionExecutionRequestResolver.java | 4 +- ...eateIngestionExecutionRequestResolver.java | 4 +- .../CreateTestConnectionRequestResolver.java | 4 +- .../GetIngestionExecutionRequestResolver.java | 4 +- ...estionSourceExecutionRequestsResolver.java | 4 +- .../execution/RollbackIngestionResolver.java | 8 ++- .../ingest/secret/CreateSecretResolver.java | 4 +- .../ingest/secret/DeleteSecretResolver.java | 4 +- .../secret/GetSecretValuesResolver.java | 4 +- .../ingest/secret/ListSecretsResolver.java | 4 +- .../ingest/secret/UpdateSecretResolver.java | 4 +- .../source/DeleteIngestionSourceResolver.java | 4 +- .../source/GetIngestionSourceResolver.java | 4 +- .../source/ListIngestionSourcesResolver.java | 4 +- .../source/UpsertIngestionSourceResolver.java | 4 +- .../resolvers/jobs/DataJobRunsResolver.java | 4 +- .../resolvers/jobs/EntityRunsResolver.java | 4 +- .../lineage/UpdateLineageResolver.java | 4 +- .../load/EntityLineageResultResolver.java | 4 +- .../EntityRelationshipsResultResolver.java | 4 +- .../load/TimeSeriesAspectResolver.java | 4 +- .../resolvers/mutate/AddLinkResolver.java | 4 +- .../resolvers/mutate/AddOwnerResolver.java | 4 +- .../resolvers/mutate/AddOwnersResolver.java | 4 +- .../resolvers/mutate/AddTagResolver.java | 4 +- .../resolvers/mutate/AddTagsResolver.java | 4 +- .../resolvers/mutate/AddTermResolver.java | 4 +- .../resolvers/mutate/AddTermsResolver.java | 4 +- .../mutate/BatchAddOwnersResolver.java | 4 +- .../mutate/BatchAddTagsResolver.java | 4 +- .../mutate/BatchAddTermsResolver.java | 4 +- .../mutate/BatchRemoveOwnersResolver.java | 4 +- .../mutate/BatchRemoveTagsResolver.java | 4 +- .../mutate/BatchRemoveTermsResolver.java | 4 +- .../mutate/BatchSetDomainResolver.java | 4 +- .../BatchUpdateDeprecationResolver.java | 4 +- .../BatchUpdateSoftDeletedResolver.java | 4 +- .../resolvers/mutate/MoveDomainResolver.java | 4 +- .../mutate/MutableTypeBatchResolver.java | 4 +- .../resolvers/mutate/MutableTypeResolver.java | 4 +- .../resolvers/mutate/RemoveLinkResolver.java | 4 +- .../resolvers/mutate/RemoveOwnerResolver.java | 4 +- .../resolvers/mutate/RemoveTagResolver.java | 4 +- .../resolvers/mutate/RemoveTermResolver.java | 4 +- .../mutate/UpdateDescriptionResolver.java | 60 ++++++++++++++----- .../resolvers/mutate/UpdateNameResolver.java | 4 +- .../mutate/UpdateParentNodeResolver.java | 4 +- .../mutate/UpdateUserSettingResolver.java | 4 +- .../operation/ReportOperationResolver.java | 4 +- .../CreateOwnershipTypeResolver.java | 4 +- .../DeleteOwnershipTypeResolver.java | 4 +- .../ownership/ListOwnershipTypesResolver.java | 4 +- .../UpdateOwnershipTypeResolver.java | 4 +- .../policy/DeletePolicyResolver.java | 4 +- .../policy/GetGrantedPrivilegesResolver.java | 4 +- .../policy/UpsertPolicyResolver.java | 4 +- .../resolvers/post/CreatePostResolver.java | 4 +- .../resolvers/post/DeletePostResolver.java | 4 +- .../resolvers/post/ListPostsResolver.java | 4 +- .../resolvers/post/UpdatePostResolver.java | 4 +- .../resolvers/query/CreateQueryResolver.java | 4 +- .../resolvers/query/DeleteQueryResolver.java | 4 +- .../resolvers/query/ListQueriesResolver.java | 4 +- .../resolvers/query/UpdateQueryResolver.java | 4 +- .../ListRecommendationsResolver.java | 4 +- .../resolvers/role/AcceptRoleResolver.java | 4 +- .../role/BatchAssignRoleResolver.java | 4 +- .../role/CreateInviteTokenResolver.java | 4 +- .../role/GetInviteTokenResolver.java | 4 +- .../resolvers/role/ListRolesResolver.java | 4 +- .../AggregateAcrossEntitiesResolver.java | 4 +- .../search/AutoCompleteResolver.java | 4 +- .../resolvers/search/AutocompleteUtils.java | 4 +- .../search/GetQuickFiltersResolver.java | 4 +- .../search/ScrollAcrossEntitiesResolver.java | 4 +- .../search/ScrollAcrossLineageResolver.java | 4 +- .../search/SearchAcrossEntitiesResolver.java | 4 +- .../search/SearchAcrossLineageResolver.java | 4 +- .../resolvers/search/SearchResolver.java | 4 +- .../UpdateCorpUserViewsSettingsResolver.java | 4 +- .../view/GlobalViewsSettingsResolver.java | 4 +- .../UpdateGlobalViewsSettingsResolver.java | 4 +- .../step/BatchGetStepStatesResolver.java | 4 +- .../step/BatchUpdateStepStatesResolver.java | 4 +- .../UpsertStructuredPropertiesResolver.java | 4 +- .../resolvers/tag/CreateTagResolver.java | 4 +- .../resolvers/tag/DeleteTagResolver.java | 4 +- .../resolvers/tag/SetTagColorResolver.java | 4 +- .../resolvers/test/CreateTestResolver.java | 4 +- .../resolvers/test/DeleteTestResolver.java | 4 +- .../resolvers/test/ListTestsResolver.java | 4 +- .../resolvers/test/TestResultsResolver.java | 4 +- .../resolvers/test/UpdateTestResolver.java | 4 +- .../timeline/GetSchemaBlameResolver.java | 4 +- .../GetSchemaVersionListResolver.java | 4 +- .../CreateNativeUserResetTokenResolver.java | 4 +- .../resolvers/user/ListUsersResolver.java | 4 +- .../resolvers/user/RemoveUserResolver.java | 4 +- .../user/UpdateUserStatusResolver.java | 4 +- .../resolvers/view/CreateViewResolver.java | 4 +- .../resolvers/view/DeleteViewResolver.java | 4 +- .../view/ListGlobalViewsResolver.java | 4 +- .../resolvers/view/ListMyViewsResolver.java | 4 +- .../resolvers/view/UpdateViewResolver.java | 4 +- .../CreateERModelRelationshipResolver.java | 4 +- .../UpdateERModelRelationshipResolver.java | 4 +- .../datahub/graphql/GraphQLController.java | 4 +- .../datahub/graphql/GraphiQLController.java | 3 +- 180 files changed, 589 insertions(+), 195 deletions(-) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java index a37985f748ae9..b2c96c65acb06 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/GmsGraphQLEngine.java @@ -2919,7 +2919,9 @@ private DataLoader> createDataLoader( String.format("Failed to retrieve entities of type %s", graphType.name()), e); } - }), + }, + graphType.getClass().getSimpleName(), + "batchLoad"), loaderOptions); } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/SubTypesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/SubTypesResolver.java index a11c37624e853..b0422ed4bde6a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/SubTypesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/SubTypesResolver.java @@ -51,6 +51,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) thro "Failed to fetch aspect " + _aspectName + " for urn " + urnStr + " ", e); } return subType; - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/WeaklyTypedAspectsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/WeaklyTypedAspectsResolver.java index 5926f6caec0a2..b6599c38e6f42 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/WeaklyTypedAspectsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/WeaklyTypedAspectsResolver.java @@ -112,6 +112,8 @@ public CompletableFuture> get(DataFetchingEnvironment environmen } }); return results; - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLConcurrencyUtils.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLConcurrencyUtils.java index 019de30504b0a..25ed4face564d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLConcurrencyUtils.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLConcurrencyUtils.java @@ -1,5 +1,7 @@ package com.linkedin.datahub.graphql.concurrency; +import com.codahale.metrics.MetricRegistry; +import com.linkedin.metadata.utils.metrics.MetricUtils; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.function.Supplier; @@ -17,7 +19,12 @@ public static void setExecutorService(ExecutorService executorService) { GraphQLConcurrencyUtils.graphQLExecutorService = executorService; } - public static CompletableFuture supplyAsync(Supplier supplier) { + public static CompletableFuture supplyAsync( + Supplier supplier, String caller, String task) { + MetricUtils.counter( + MetricRegistry.name( + GraphQLConcurrencyUtils.class.getSimpleName(), "supplyAsync", caller, task)) + .inc(); if (GraphQLConcurrencyUtils.graphQLExecutorService == null) { return CompletableFuture.supplyAsync(supplier); } else { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/MeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/MeResolver.java index 65a38de333d66..f7d6b6a8c2b12 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/MeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/MeResolver.java @@ -100,7 +100,9 @@ public CompletableFuture get(DataFetchingEnvironment environm } catch (URISyntaxException | RemoteInvocationException e) { throw new RuntimeException("Failed to fetch authenticated user!", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } /** Returns true if the authenticated user has privileges to view analytics. */ diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/AssertionRunEventResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/AssertionRunEventResolver.java index b47bc8917f523..3ca78d643679b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/AssertionRunEventResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/AssertionRunEventResolver.java @@ -103,7 +103,9 @@ public CompletableFuture get(DataFetchingEnvironment e } catch (RemoteInvocationException e) { throw new RuntimeException("Failed to retrieve Assertion Run Events from GMS", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } @Nullable diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/DeleteAssertionResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/DeleteAssertionResolver.java index 2abf61c8439a7..1cf233221d4d3 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/DeleteAssertionResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/DeleteAssertionResolver.java @@ -76,7 +76,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } /** Determine whether the current user is allowed to remove an assertion. */ diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/EntityAssertionsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/EntityAssertionsResolver.java index 00691bbf6f284..a56d1cdd2a02b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/EntityAssertionsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/assertion/EntityAssertionsResolver.java @@ -103,7 +103,9 @@ public CompletableFuture get(DataFetchingEnvironment env } catch (URISyntaxException | RemoteInvocationException e) { throw new RuntimeException("Failed to retrieve Assertion Run Events from GMS", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private boolean assertionExists( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/CreateAccessTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/CreateAccessTokenResolver.java index c5264235ae5e9..e17e3cb6fb64a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/CreateAccessTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/CreateAccessTokenResolver.java @@ -98,7 +98,9 @@ public CompletableFuture get(final DataFetchingEnvironment environm } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private boolean isAuthorizedToGenerateToken( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/DebugAccessResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/DebugAccessResolver.java index 2e91aae1660aa..44604e92c35de 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/DebugAccessResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/DebugAccessResolver.java @@ -66,7 +66,9 @@ public CompletableFuture get(DataFetchingEnvironment environm final String userUrn = environment.getArgument("userUrn"); return populateDebugAccessResult(userUrn, context); - }); + }, + this.getClass().getSimpleName(), + "get"); } public DebugAccessResult populateDebugAccessResult(String userUrn, QueryContext context) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenMetadataResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenMetadataResolver.java index 30fa23cc76f0e..186dfe658c2cf 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenMetadataResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenMetadataResolver.java @@ -55,6 +55,8 @@ public CompletableFuture get(final DataFetchingEnvironment } catch (Exception e) { throw new RuntimeException(e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenResolver.java index fea7ff0085f8a..4594fa5f89186 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/GetAccessTokenResolver.java @@ -58,7 +58,9 @@ public CompletableFuture get(final DataFetchingEnvironment environm } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private boolean isAuthorizedToGenerateToken( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/ListAccessTokensResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/ListAccessTokensResolver.java index f61669e663760..eaac2aedef03a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/ListAccessTokensResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/ListAccessTokensResolver.java @@ -99,7 +99,9 @@ public CompletableFuture get(DataFetchingEnvironment envi } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } /** diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/RevokeAccessTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/RevokeAccessTokenResolver.java index b95ff343e4f18..53ae6d4509e7d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/RevokeAccessTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/auth/RevokeAccessTokenResolver.java @@ -53,7 +53,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private boolean isAuthorizedToRevokeToken(final QueryContext context, final String tokenId) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowsePathsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowsePathsResolver.java index 0b7db150132d9..a8636dc288082 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowsePathsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowsePathsResolver.java @@ -61,6 +61,8 @@ public CompletableFuture> get(DataFetchingEnvironment environme + String.format("entity type %s, urn %s", input.getType(), input.getUrn()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowseResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowseResolver.java index 4d859906a8ffd..619e950bd106f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowseResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/BrowseResolver.java @@ -65,6 +65,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) input.getType(), input.getPath(), input.getFilters(), start, count), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/EntityBrowsePathsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/EntityBrowsePathsResolver.java index 6fb220b38fc52..54faa56772336 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/EntityBrowsePathsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/browse/EntityBrowsePathsResolver.java @@ -33,6 +33,8 @@ public CompletableFuture> get(DataFetchingEnvironment environme throw new RuntimeException( String.format("Failed to retrieve browse paths for entity with urn %s", urn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/AddBusinessAttributeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/AddBusinessAttributeResolver.java index e35b1269ee19b..54812d3442c9c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/AddBusinessAttributeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/AddBusinessAttributeResolver.java @@ -61,7 +61,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw businessAttributeUrn, resourceRefInputs), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private void validateBusinessAttribute( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/CreateBusinessAttributeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/CreateBusinessAttributeResolver.java index 496fbd16df6fa..d9cb668cc051d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/CreateBusinessAttributeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/CreateBusinessAttributeResolver.java @@ -107,7 +107,9 @@ public CompletableFuture get(DataFetchingEnvironment environm String.format("Failed to create Business Attribute with name: %s", input.getName()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private BusinessAttributeInfo mapBusinessAttributeInfo( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/DeleteBusinessAttributeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/DeleteBusinessAttributeResolver.java index 35e2e5e11f12e..bec37731a4ca0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/DeleteBusinessAttributeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/DeleteBusinessAttributeResolver.java @@ -54,6 +54,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Failed to delete Business Attribute with urn %s", businessAttributeUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/ListBusinessAttributesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/ListBusinessAttributesResolver.java index 6d92de27ba967..ebcdbe5e06494 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/ListBusinessAttributesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/ListBusinessAttributesResolver.java @@ -77,7 +77,9 @@ public CompletableFuture get( } catch (Exception e) { throw new RuntimeException("Failed to list Business Attributes", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private List mapUnresolvedBusinessAttributes(final List entityUrns) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/RemoveBusinessAttributeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/RemoveBusinessAttributeResolver.java index 4c9ef8ae4ec82..d85282c921dff 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/RemoveBusinessAttributeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/RemoveBusinessAttributeResolver.java @@ -56,7 +56,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw businessAttributeUrn, resourceRefInputs), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private void removeBusinessAttribute( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/UpdateBusinessAttributeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/UpdateBusinessAttributeResolver.java index 8fb0b3e9c19be..16120a27261a4 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/UpdateBusinessAttributeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/businessattribute/UpdateBusinessAttributeResolver.java @@ -70,7 +70,9 @@ public CompletableFuture get(DataFetchingEnvironment environm "Failed to update Business Attribute with urn %s", businessAttributeUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private Urn updateBusinessAttribute( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/chart/BrowseV2Resolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/chart/BrowseV2Resolver.java index 07b8871642674..18ee5f595ce58 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/chart/BrowseV2Resolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/chart/BrowseV2Resolver.java @@ -92,7 +92,9 @@ public CompletableFuture get(DataFetchingEnvironment environmen } catch (Exception e) { throw new RuntimeException("Failed to execute browse V2", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } public static List getEntityNames(BrowseV2Input input) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ContainerEntitiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ContainerEntitiesResolver.java index 01bcb22fb06c6..15927eef236ca 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ContainerEntitiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ContainerEntitiesResolver.java @@ -101,6 +101,8 @@ public CompletableFuture get(final DataFetchingEnvironment enviro "Failed to resolve entities associated with container with urn %s", urn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ParentContainersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ParentContainersResolver.java index e48d946eb26a2..e7c0f6bb0729a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ParentContainersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/container/ParentContainersResolver.java @@ -80,6 +80,8 @@ public CompletableFuture get(DataFetchingEnvironment env } catch (DataHubGraphQLException e) { throw new RuntimeException("Failed to load all containers", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardStatsSummaryResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardStatsSummaryResolver.java index 436d79cc0abc9..46d5add9d3f99 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardStatsSummaryResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardStatsSummaryResolver.java @@ -86,7 +86,9 @@ public CompletableFuture get(DataFetchingEnvironment envi e); return null; // Do not throw when loading usage summary fails. } - }); + }, + this.getClass().getSimpleName(), + "get"); } private int getDashboardViewCount(@Nullable QueryContext context, final Urn resourceUrn) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardUsageStatsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardUsageStatsResolver.java index 22691e0e75906..7e4a9c8a80388 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardUsageStatsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dashboard/DashboardUsageStatsResolver.java @@ -85,7 +85,9 @@ public CompletableFuture get(DataFetchingEnvironment context, dashboardUrn, maybeStartTimeMillis, maybeEndTimeMillis, maybeLimit); usageQueryResult.setMetrics(dashboardUsageMetrics); return usageQueryResult; - }); + }, + this.getClass().getSimpleName(), + "get"); } private List getDashboardUsageMetrics( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/BatchSetDataProductResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/BatchSetDataProductResolver.java index 8c78b0d06d435..f128b9d27f997 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/BatchSetDataProductResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/BatchSetDataProductResolver.java @@ -52,7 +52,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private void verifyResources(List resources, QueryContext context) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/CreateDataProductResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/CreateDataProductResolver.java index ce63a86d2773a..470267264f12f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/CreateDataProductResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/CreateDataProductResolver.java @@ -69,6 +69,8 @@ public CompletableFuture get(final DataFetchingEnvironment environm throw new RuntimeException( String.format("Failed to create a new DataProduct from input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/DeleteDataProductResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/DeleteDataProductResolver.java index 3e3339d782a11..25c4529abf3ce 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/DeleteDataProductResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/DeleteDataProductResolver.java @@ -53,6 +53,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } catch (Exception e) { throw new RuntimeException("Failed to delete Data Product", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/ListDataProductAssetsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/ListDataProductAssetsResolver.java index 27e2e75dd730e..041de9f58db23 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/ListDataProductAssetsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/ListDataProductAssetsResolver.java @@ -179,6 +179,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) input.getTypes(), input.getQuery(), input.getOrFilters(), start, count), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/UpdateDataProductResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/UpdateDataProductResolver.java index c33899206632e..e49cdcfe94eb4 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/UpdateDataProductResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataproduct/UpdateDataProductResolver.java @@ -76,6 +76,8 @@ public CompletableFuture get(final DataFetchingEnvironment environm throw new RuntimeException( String.format("Failed to update DataProduct with urn %s", dataProductUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetHealthResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetHealthResolver.java index 6b100c9489f89..f38cf80f36ceb 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetHealthResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetHealthResolver.java @@ -92,7 +92,9 @@ public CompletableFuture> get(final DataFetchingEnvironment environ } catch (Exception e) { throw new RuntimeException("Failed to resolve dataset's health status.", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } /** diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetStatsSummaryResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetStatsSummaryResolver.java index 2c830cfbc4066..7d3603ec050e9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetStatsSummaryResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetStatsSummaryResolver.java @@ -81,7 +81,9 @@ public CompletableFuture get(DataFetchingEnvironment enviro e); return null; // Do not throw when loading usage summary fails. } - }); + }, + this.getClass().getSimpleName(), + "get"); } private List trimUsers(final List originalUsers) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetUsageStatsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetUsageStatsResolver.java index 8ccb611128aec..bed866db0fb3d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetUsageStatsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/DatasetUsageStatsResolver.java @@ -53,6 +53,8 @@ public CompletableFuture get(DataFetchingEnvironment environme } return UsageQueryResultMapper.EMPTY; - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/IsAssignedToMeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/IsAssignedToMeResolver.java index a07538c818c52..16a321d64f74e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/IsAssignedToMeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/dataset/IsAssignedToMeResolver.java @@ -36,6 +36,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( "Failed to determine if current user is assigned to Role", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/deprecation/UpdateDeprecationResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/deprecation/UpdateDeprecationResolver.java index 2d60766b7b6f6..c568ff6db3a27 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/deprecation/UpdateDeprecationResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/deprecation/UpdateDeprecationResolver.java @@ -85,7 +85,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Failed to update Deprecation for resource with entity urn %s", entityUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private boolean isAuthorizedToUpdateDeprecationForEntity( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/CreateDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/CreateDomainResolver.java index 1cb4a4a31dbf2..ec2b034628826 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/CreateDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/CreateDomainResolver.java @@ -116,7 +116,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws input.getId(), input.getName()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private DomainProperties mapDomainProperties( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DeleteDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DeleteDomainResolver.java index 03b6a4df422d9..eddb21303a7ee 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DeleteDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DeleteDomainResolver.java @@ -66,6 +66,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DomainEntitiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DomainEntitiesResolver.java index 8f4c2c33c7b28..9ca5de86034da 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DomainEntitiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/DomainEntitiesResolver.java @@ -104,6 +104,8 @@ public CompletableFuture get(final DataFetchingEnvironment enviro String.format("Failed to resolve entities associated with Domain with urn %s", urn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ListDomainsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ListDomainsResolver.java index c97cf99bb0e5d..0c16470c642b7 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ListDomainsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ListDomainsResolver.java @@ -86,7 +86,9 @@ public CompletableFuture get(final DataFetchingEnvironment en } catch (Exception e) { throw new RuntimeException("Failed to list domains", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } // This method maps urns returned from the list endpoint into Partial Domain objects which will be diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ParentDomainsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ParentDomainsResolver.java index 43430e9e3737a..d02bcedd0eb1a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ParentDomainsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/ParentDomainsResolver.java @@ -72,6 +72,8 @@ public CompletableFuture get(DataFetchingEnvironment enviro throw new RuntimeException( String.format("Failed to load parent domains for entity %s", urn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/SetDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/SetDomainResolver.java index d1d4574b347dd..6ada447ca59ee 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/SetDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/SetDomainResolver.java @@ -78,7 +78,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw entityUrn, domainUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } public static Boolean validateSetDomainInput( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/UnsetDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/UnsetDomainResolver.java index 74f1d9abeabf9..783cf250a7ca6 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/UnsetDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/domain/UnsetDomainResolver.java @@ -74,7 +74,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw String.format("Failed to unset Domains for resource with entity urn %s", entityUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } public static Boolean validateUnsetDomainInput( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/embed/UpdateEmbedResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/embed/UpdateEmbedResolver.java index 5443dd78d6f5c..2a8944456d0c8 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/embed/UpdateEmbedResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/embed/UpdateEmbedResolver.java @@ -75,7 +75,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Failed to update Embed for to resource with entity urn %s", entityUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } /** diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityExistsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityExistsResolver.java index 50383a6da7025..57570b431dd71 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityExistsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityExistsResolver.java @@ -43,6 +43,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to check whether entity %s exists", entityUrn.toString())); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityPrivilegesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityPrivilegesResolver.java index 5a08bd847fe19..b25f5598b44bc 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityPrivilegesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/entity/EntityPrivilegesResolver.java @@ -61,7 +61,9 @@ public CompletableFuture get(DataFetchingEnvironment environme addCommonPrivileges(commonPrivileges, urn, context); return commonPrivileges; } - }); + }, + this.getClass().getSimpleName(), + "get"); } private EntityPrivileges getGlossaryTermPrivileges(Urn termUrn, QueryContext context) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchAssignFormResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchAssignFormResolver.java index 7dcf663b21444..03282934293ea 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchAssignFormResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchAssignFormResolver.java @@ -48,6 +48,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to perform update against input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchRemoveFormResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchRemoveFormResolver.java index 1dc2b3ef4d330..ac2a5fc1ec0ea 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchRemoveFormResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/BatchRemoveFormResolver.java @@ -50,6 +50,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to perform update against input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/CreateDynamicFormAssignmentResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/CreateDynamicFormAssignmentResolver.java index 82fae83200bfb..b9d74f8af660e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/CreateDynamicFormAssignmentResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/CreateDynamicFormAssignmentResolver.java @@ -45,6 +45,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to perform update against input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/IsFormAssignedToMeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/IsFormAssignedToMeResolver.java index 5ce819e996df8..29e5cd55f15e2 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/IsFormAssignedToMeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/IsFormAssignedToMeResolver.java @@ -76,6 +76,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) { // Else the user is not directly assigned. return false; - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/SubmitFormPromptResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/SubmitFormPromptResolver.java index 16293d3b0c6e5..9528bb125473e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/SubmitFormPromptResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/SubmitFormPromptResolver.java @@ -85,6 +85,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to perform update against input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/VerifyFormResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/VerifyFormResolver.java index 3dbdaa4ba2956..76103d77fb32c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/VerifyFormResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/form/VerifyFormResolver.java @@ -59,6 +59,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to perform update against input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/AddRelatedTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/AddRelatedTermsResolver.java index 4d140611d9bcc..1e99ea120354e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/AddRelatedTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/AddRelatedTermsResolver.java @@ -103,7 +103,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } public Boolean validateRelatedTermsInput( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryNodeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryNodeResolver.java index 70a174e1281d0..75239ae8e7eeb 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryNodeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryNodeResolver.java @@ -88,7 +88,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private GlossaryNodeInfo mapGlossaryNodeInfo(final CreateGlossaryEntityInput input) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryTermResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryTermResolver.java index a5ed848fefa1c..d524a07b54162 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryTermResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/CreateGlossaryTermResolver.java @@ -106,7 +106,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private GlossaryTermInfo mapGlossaryTermInfo(final CreateGlossaryEntityInput input) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/DeleteGlossaryEntityResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/DeleteGlossaryEntityResolver.java index 84bcbc8c8cb8a..26f0c61de1b0f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/DeleteGlossaryEntityResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/DeleteGlossaryEntityResolver.java @@ -66,6 +66,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryNodesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryNodesResolver.java index 083a111a7b99e..451abfdaf1c06 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryNodesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryNodesResolver.java @@ -76,7 +76,9 @@ public CompletableFuture get( } catch (RemoteInvocationException e) { throw new RuntimeException("Failed to retrieve root glossary nodes from GMS", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private Filter buildGlossaryEntitiesFilter() { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryTermsResolver.java index 93b656bb7d2a3..7ca79b168819e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/GetRootGlossaryTermsResolver.java @@ -76,7 +76,9 @@ public CompletableFuture get( } catch (RemoteInvocationException e) { throw new RuntimeException("Failed to retrieve root glossary terms from GMS", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private Filter buildGlossaryEntitiesFilter() { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/ParentNodesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/ParentNodesResolver.java index e24515cf9653e..92c8aa7fd2d13 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/ParentNodesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/ParentNodesResolver.java @@ -145,6 +145,8 @@ public CompletableFuture get(DataFetchingEnvironment environm } catch (DataHubGraphQLException | URISyntaxException e) { throw new RuntimeException(("Failed to load parent nodes")); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/RemoveRelatedTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/RemoveRelatedTermsResolver.java index c01d640af4d07..59f820d7cbd36 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/RemoveRelatedTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/glossary/RemoveRelatedTermsResolver.java @@ -116,6 +116,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/AddGroupMembersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/AddGroupMembersResolver.java index 70e6df6adadf2..4a78547421518 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/AddGroupMembersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/AddGroupMembersResolver.java @@ -86,6 +86,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to add group members to group %s", groupUrnStr)); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/CreateGroupResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/CreateGroupResolver.java index 9be516febb71d..7116d99bd0aba 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/CreateGroupResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/CreateGroupResolver.java @@ -51,6 +51,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } catch (Exception e) { throw new RuntimeException("Failed to create group", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/EntityCountsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/EntityCountsResolver.java index 70d77405f9d9e..ac195ca5d8252 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/EntityCountsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/EntityCountsResolver.java @@ -68,6 +68,8 @@ public CompletableFuture get(final DataFetchingEnvironment e } catch (Exception e) { throw new RuntimeException("Failed to get entity counts", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/ListGroupsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/ListGroupsResolver.java index 0fdee54c226f9..fce404a6baa16 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/ListGroupsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/ListGroupsResolver.java @@ -95,7 +95,9 @@ public CompletableFuture get(final DataFetchingEnvironment env } catch (Exception e) { throw new RuntimeException("Failed to list groups", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupMembersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupMembersResolver.java index 40458e08468fc..55a26af603fbe 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupMembersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupMembersResolver.java @@ -83,6 +83,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } catch (Exception e) { throw new RuntimeException(e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupResolver.java index 63f8e4026b712..04196b01c108e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/group/RemoveGroupResolver.java @@ -52,7 +52,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to perform delete against group with urn %s", groupUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/health/EntityHealthResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/health/EntityHealthResolver.java index cedcb87c0edc0..380b7c920ab2f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/health/EntityHealthResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/health/EntityHealthResolver.java @@ -96,7 +96,9 @@ public CompletableFuture> get(final DataFetchingEnvironment environ } catch (Exception e) { throw new RuntimeException("Failed to resolve asset's health status.", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } /** diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/EntityIncidentsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/EntityIncidentsResolver.java index 818e4aa2aa8bb..2d4b24243073a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/EntityIncidentsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/EntityIncidentsResolver.java @@ -104,7 +104,9 @@ public CompletableFuture get(DataFetchingEnvironment envi } catch (URISyntaxException | RemoteInvocationException e) { throw new RuntimeException("Failed to retrieve incidents from GMS", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private Filter buildIncidentsEntityFilter( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/RaiseIncidentResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/RaiseIncidentResolver.java index d116d24020736..454ba693da95a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/RaiseIncidentResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/RaiseIncidentResolver.java @@ -77,7 +77,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws log.error("Failed to create incident. {}", e.getMessage()); throw new RuntimeException("Failed to incident", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private IncidentInfo mapIncidentInfo(final RaiseIncidentInput input, final QueryContext context) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/UpdateIncidentStatusResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/UpdateIncidentStatusResolver.java index 3529e091b0d71..d51ceab31e60e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/UpdateIncidentStatusResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/incident/UpdateIncidentStatusResolver.java @@ -90,7 +90,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new DataHubGraphQLException( "Failed to update incident. Incident does not exist.", DataHubGraphQLErrorCode.NOT_FOUND); - }); + }, + this.getClass().getSimpleName(), + "get"); } private boolean isAuthorizedToUpdateIncident(final Urn resourceUrn, final QueryContext context) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CancelIngestionExecutionRequestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CancelIngestionExecutionRequestResolver.java index 0efd928d98a6f..a373e4254d059 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CancelIngestionExecutionRequestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CancelIngestionExecutionRequestResolver.java @@ -95,6 +95,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateIngestionExecutionRequestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateIngestionExecutionRequestResolver.java index 481e52dd0cca0..160624a4b0fe5 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateIngestionExecutionRequestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateIngestionExecutionRequestResolver.java @@ -154,7 +154,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } /** diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateTestConnectionRequestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateTestConnectionRequestResolver.java index c88932ee99e97..aeb4dd4f94801 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateTestConnectionRequestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateTestConnectionRequestResolver.java @@ -98,6 +98,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) "Failed to create new test ingestion connection request %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/GetIngestionExecutionRequestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/GetIngestionExecutionRequestResolver.java index 2f7125db59c14..474ab342256ac 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/GetIngestionExecutionRequestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/GetIngestionExecutionRequestResolver.java @@ -63,7 +63,9 @@ public CompletableFuture get(final DataFetchingEnvironment env } catch (Exception e) { throw new RuntimeException("Failed to retrieve execution request", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/IngestionSourceExecutionRequestsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/IngestionSourceExecutionRequestsResolver.java index 7c7a729cc3c92..4a3b75deddc45 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/IngestionSourceExecutionRequestsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/IngestionSourceExecutionRequestsResolver.java @@ -117,6 +117,8 @@ public CompletableFuture get( urn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/RollbackIngestionResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/RollbackIngestionResolver.java index 9761526902bd8..62977b6b92676 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/RollbackIngestionResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/RollbackIngestionResolver.java @@ -37,7 +37,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) rollbackIngestion(runId, context); return true; - }); + }, + this.getClass().getSimpleName(), + "get"); } public CompletableFuture rollbackIngestion( @@ -51,6 +53,8 @@ public CompletableFuture rollbackIngestion( } catch (Exception e) { throw new RuntimeException("Failed to rollback ingestion execution", e); } - }); + }, + this.getClass().getSimpleName(), + "rollbackIngestion"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/CreateSecretResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/CreateSecretResolver.java index 79f9e40981e1b..8bd8325bf16c0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/CreateSecretResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/CreateSecretResolver.java @@ -80,6 +80,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/DeleteSecretResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/DeleteSecretResolver.java index b5b7542921135..f557b9889f604 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/DeleteSecretResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/DeleteSecretResolver.java @@ -35,7 +35,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) String.format("Failed to perform delete against secret with urn %s", secretUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/GetSecretValuesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/GetSecretValuesResolver.java index 5770ce92286c4..100965d457a1d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/GetSecretValuesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/GetSecretValuesResolver.java @@ -93,7 +93,9 @@ public CompletableFuture> get(final DataFetchingEnvironment en throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/ListSecretsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/ListSecretsResolver.java index 97be3e3466ac2..106a2d0d1e18e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/ListSecretsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/ListSecretsResolver.java @@ -106,7 +106,9 @@ public CompletableFuture get(final DataFetchingEnvironment en } catch (Exception e) { throw new RuntimeException("Failed to list secrets", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/UpdateSecretResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/UpdateSecretResolver.java index 43dde86d62d05..e23dd800478d4 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/UpdateSecretResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/secret/UpdateSecretResolver.java @@ -78,6 +78,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/DeleteIngestionSourceResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/DeleteIngestionSourceResolver.java index 1ffc0c18b5ac9..4d693f2acab30 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/DeleteIngestionSourceResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/DeleteIngestionSourceResolver.java @@ -40,7 +40,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) ingestionSourceUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/GetIngestionSourceResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/GetIngestionSourceResolver.java index 13ae9b062e00d..3dcbf7b1f7b8e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/GetIngestionSourceResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/GetIngestionSourceResolver.java @@ -59,7 +59,9 @@ public CompletableFuture get(final DataFetchingEnvironment envi } catch (Exception e) { throw new RuntimeException("Failed to retrieve ingestion source", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/ListIngestionSourcesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/ListIngestionSourcesResolver.java index b2d0463a78e7e..8ead47aa65ceb 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/ListIngestionSourcesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/ListIngestionSourcesResolver.java @@ -109,7 +109,9 @@ public CompletableFuture get( } catch (Exception e) { throw new RuntimeException("Failed to list ingestion sources", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/UpsertIngestionSourceResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/UpsertIngestionSourceResolver.java index b71def0972deb..77fabd7167300 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/UpsertIngestionSourceResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/source/UpsertIngestionSourceResolver.java @@ -95,7 +95,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private DataHubIngestionSourceInfo mapIngestionSourceInfo( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/DataJobRunsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/DataJobRunsResolver.java index eb92276685be0..591712ef3f55b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/DataJobRunsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/DataJobRunsResolver.java @@ -104,7 +104,9 @@ public CompletableFuture get(DataFetchingEnvironment } catch (URISyntaxException | RemoteInvocationException e) { throw new RuntimeException("Failed to retrieve incidents from GMS", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private Filter buildTaskRunsEntityFilter(final String entityUrn) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/EntityRunsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/EntityRunsResolver.java index 666990391ad1d..163fc30fb6e6c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/EntityRunsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/jobs/EntityRunsResolver.java @@ -110,7 +110,9 @@ public CompletableFuture get(DataFetchingEnvironment } catch (URISyntaxException | RemoteInvocationException e) { throw new RuntimeException("Failed to retrieve incidents from GMS", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private Filter buildTaskRunsEntityFilter( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/lineage/UpdateLineageResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/lineage/UpdateLineageResolver.java index 1fbe5e756065e..d462fb0820aa0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/lineage/UpdateLineageResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/lineage/UpdateLineageResolver.java @@ -169,7 +169,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw } return true; - }); + }, + this.getClass().getSimpleName(), + "get"); } private List filterOutDataJobUrns(@Nonnull final List urns) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityLineageResultResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityLineageResultResolver.java index a3ab375bc9785..51b00bbe7b799 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityLineageResultResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityLineageResultResolver.java @@ -107,7 +107,9 @@ public CompletableFuture get(DataFetchingEnvironment enviro throw new RuntimeException( String.format("Failed to fetch lineage for %s", finalUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private EntityLineageResult mapEntityRelationships( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityRelationshipsResultResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityRelationshipsResultResolver.java index 66f690c763feb..f775853dd5956 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityRelationshipsResultResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/EntityRelationshipsResultResolver.java @@ -53,7 +53,9 @@ public CompletableFuture get(DataFetchingEnvironment context, fetchEntityRelationships( urn, relationshipTypes, resolvedDirection, start, count, context.getActorUrn()), - resolvedDirection)); + resolvedDirection), + this.getClass().getSimpleName(), + "get"); } private EntityRelationships fetchEntityRelationships( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/TimeSeriesAspectResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/TimeSeriesAspectResolver.java index 24c539a80ef11..1839fd3cc5705 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/TimeSeriesAspectResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/load/TimeSeriesAspectResolver.java @@ -130,7 +130,9 @@ public CompletableFuture> get(DataFetchingEnvironment env } catch (RemoteInvocationException e) { throw new RuntimeException("Failed to retrieve aspects from GMS", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private Filter buildFilters(@Nullable FilterInput maybeFilters) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddLinkResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddLinkResolver.java index fb5bda729afa9..5cffcd9c35c00 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddLinkResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddLinkResolver.java @@ -66,7 +66,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to add link to resource with input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } // Returns whether this is a glossary entity and whether you can edit this glossary entity with diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnerResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnerResolver.java index 36afc4a7eef1c..7c0f7b3757ee9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnerResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnerResolver.java @@ -65,6 +65,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to add owner to resource with input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnersResolver.java index e6d99c02f5c61..ade4e7b744801 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddOwnersResolver.java @@ -56,6 +56,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to add owners to resource with input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagResolver.java index 167bd52c2f740..4275f869b2908 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagResolver.java @@ -75,6 +75,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagsResolver.java index b09f542d03019..b2fc05720064c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTagsResolver.java @@ -72,6 +72,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermResolver.java index 25f49b4e58aac..ffdb394369d17 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermResolver.java @@ -69,6 +69,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermsResolver.java index 059a81fb6ce99..68ba5f977c2bf 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/AddTermsResolver.java @@ -72,6 +72,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddOwnersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddOwnersResolver.java index 77803a2e2e672..28daef1b11062 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddOwnersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddOwnersResolver.java @@ -53,7 +53,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private void validateOwners(@Nonnull OperationContext opContext, List owners) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTagsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTagsResolver.java index a3e0d7a658725..7cd2483263479 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTagsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTagsResolver.java @@ -63,7 +63,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } /** diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTermsResolver.java index 1ed497dfdfb30..2d092758b776b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchAddTermsResolver.java @@ -63,7 +63,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } /** diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveOwnersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveOwnersResolver.java index 81ba279963b4d..5aaace4e21e9c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveOwnersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveOwnersResolver.java @@ -53,7 +53,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private void validateInputResources(List resources, QueryContext context) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTagsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTagsResolver.java index 2a3d8f4870cca..6d90d07521f92 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTagsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTagsResolver.java @@ -52,7 +52,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private void validateInputResources( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTermsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTermsResolver.java index 82ae9eebc986e..adc5e77681a3a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTermsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchRemoveTermsResolver.java @@ -52,7 +52,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private void validateInputResources( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchSetDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchSetDomainResolver.java index 6f922b677fe26..abbeed29545e4 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchSetDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchSetDomainResolver.java @@ -54,7 +54,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private void validateDomain( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateDeprecationResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateDeprecationResolver.java index 1769632e6a648..546694ede9269 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateDeprecationResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateDeprecationResolver.java @@ -55,7 +55,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private void validateInputResources(List resources, QueryContext context) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateSoftDeletedResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateSoftDeletedResolver.java index 8db5b45318c07..9f24af66a70fa 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateSoftDeletedResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/BatchUpdateSoftDeletedResolver.java @@ -51,7 +51,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Failed to perform batch soft delete against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private void validateInputUrns(List urnStrs, QueryContext context) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MoveDomainResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MoveDomainResolver.java index 795b1291dc529..70f7913f7b08c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MoveDomainResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MoveDomainResolver.java @@ -107,6 +107,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw input.getResourceUrn(), input.getParentDomain()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeBatchResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeBatchResolver.java index b755067691ff9..d647374b8e1ef 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeBatchResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeBatchResolver.java @@ -50,6 +50,8 @@ public CompletableFuture> get(DataFetchingEnvironment environment) throw } finally { timer.stop(); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeResolver.java index bd7298e2bdb92..23d16ed7d4d88 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/MutableTypeResolver.java @@ -47,6 +47,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws Exce throw new RuntimeException( String.format("Failed to perform update against input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveLinkResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveLinkResolver.java index 36c4888793179..e047a24a0adaa 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveLinkResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveLinkResolver.java @@ -57,6 +57,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Failed to remove link from resource with input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveOwnerResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveOwnerResolver.java index 39563c567e3e3..8d14884885572 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveOwnerResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveOwnerResolver.java @@ -58,6 +58,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Failed to remove owner from resource with input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTagResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTagResolver.java index 68435182299db..c1ff3514ff6c4 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTagResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTagResolver.java @@ -74,6 +74,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTermResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTermResolver.java index e103d14ede77a..e9f5489f23af0 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTermResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/RemoveTermResolver.java @@ -75,6 +75,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateDescriptionResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateDescriptionResolver.java index 16cf862ee126d..d571dae542d5a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateDescriptionResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateDescriptionResolver.java @@ -100,7 +100,9 @@ private CompletableFuture updateContainerDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateContainerDescription"); } private CompletableFuture updateDomainDescription( @@ -129,7 +131,9 @@ private CompletableFuture updateDomainDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateDomainDescription"); } // If updating schema field description fails, try again on a sibling until there are no more @@ -198,7 +202,9 @@ private CompletableFuture updateDatasetSchemaFieldDescription( return attemptUpdateDatasetSchemaFieldDescription( targetUrn, input, context, new HashSet<>(), siblingUrns); - }); + }, + this.getClass().getSimpleName(), + "updateDatasetSchemaFieldDescription"); } private CompletableFuture updateTagDescription( @@ -227,7 +233,9 @@ private CompletableFuture updateTagDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateTagDescription"); } private CompletableFuture updateGlossaryTermDescription( @@ -258,7 +266,9 @@ private CompletableFuture updateGlossaryTermDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateGlossaryTermDescription"); } private CompletableFuture updateGlossaryNodeDescription( @@ -289,7 +299,9 @@ private CompletableFuture updateGlossaryNodeDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateGlossaryNodeDescription"); } private CompletableFuture updateCorpGroupDescription( @@ -318,7 +330,9 @@ private CompletableFuture updateCorpGroupDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateCorpGroupDescription"); } private CompletableFuture updateNotebookDescription( @@ -347,7 +361,9 @@ private CompletableFuture updateNotebookDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateNotebookDescription"); } private CompletableFuture updateMlModelDescription( @@ -376,7 +392,9 @@ private CompletableFuture updateMlModelDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateMlModelDescription"); } private CompletableFuture updateMlModelGroupDescription( @@ -405,7 +423,9 @@ private CompletableFuture updateMlModelGroupDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateMlModelGroupDescription"); } private CompletableFuture updateMlFeatureDescription( @@ -434,7 +454,9 @@ private CompletableFuture updateMlFeatureDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateMlFeatureDescription"); } private CompletableFuture updateMlPrimaryKeyDescription( @@ -463,7 +485,9 @@ private CompletableFuture updateMlPrimaryKeyDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateMlPrimaryKeyDescription"); } private CompletableFuture updateMlFeatureTableDescription( @@ -492,7 +516,9 @@ private CompletableFuture updateMlFeatureTableDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateMlFeatureTableDescription"); } private CompletableFuture updateDataProductDescription( @@ -521,7 +547,9 @@ private CompletableFuture updateDataProductDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateDataProductDescription"); } private CompletableFuture updateBusinessAttributeDescription( @@ -553,6 +581,8 @@ private CompletableFuture updateBusinessAttributeDescription( throw new RuntimeException( String.format("Failed to perform update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "updateBusinessAttributeDescription"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateNameResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateNameResolver.java index 56e652aad8b48..1d90720fc6902 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateNameResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateNameResolver.java @@ -75,7 +75,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw String.format( "Failed to update name. Unsupported resource type %s provided.", targetUrn)); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private Boolean updateGlossaryTermName( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateParentNodeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateParentNodeResolver.java index 2019da8280616..7f714bfd33bd5 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateParentNodeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateParentNodeResolver.java @@ -79,7 +79,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private Boolean updateGlossaryTermParentNode( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateUserSettingResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateUserSettingResolver.java index faeba458a14a2..8a598f8d8bbdd 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateUserSettingResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/mutate/UpdateUserSettingResolver.java @@ -73,6 +73,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Failed to perform user settings update against input %s", input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/operation/ReportOperationResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/operation/ReportOperationResolver.java index 9e234bdb8dbfb..6ef3222bc068f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/operation/ReportOperationResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/operation/ReportOperationResolver.java @@ -74,7 +74,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw log.error("Failed to report operation. {}", e.getMessage()); throw new RuntimeException("Failed to report operation", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private Operation mapOperation(final ReportOperationInput input, final QueryContext context) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/CreateOwnershipTypeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/CreateOwnershipTypeResolver.java index b7e1524dbccd6..8d48e62c11cdf 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/CreateOwnershipTypeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/CreateOwnershipTypeResolver.java @@ -52,7 +52,9 @@ public CompletableFuture get(DataFetchingEnvironment enviro throw new RuntimeException( String.format("Failed to perform update against input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private OwnershipTypeEntity createOwnershipType( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/DeleteOwnershipTypeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/DeleteOwnershipTypeResolver.java index 083292a6d84f7..8f76cd148e4a7 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/DeleteOwnershipTypeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/DeleteOwnershipTypeResolver.java @@ -46,6 +46,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to delete ownership type with urn %s", ownershipTypeUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/ListOwnershipTypesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/ListOwnershipTypesResolver.java index ee0de0738f2a0..0f0bb299eda83 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/ListOwnershipTypesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/ListOwnershipTypesResolver.java @@ -81,7 +81,9 @@ public CompletableFuture get(DataFetchingEnvironment e } catch (Exception e) { throw new RuntimeException("Failed to list custom ownership types", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private List mapUnresolvedOwnershipTypes(List entityUrns) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/UpdateOwnershipTypeResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/UpdateOwnershipTypeResolver.java index 3ddefee20d13f..45a2066955831 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/UpdateOwnershipTypeResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ownership/UpdateOwnershipTypeResolver.java @@ -58,7 +58,9 @@ public CompletableFuture get(DataFetchingEnvironment enviro throw new RuntimeException( String.format("Failed to perform update against View with urn %s", urn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private OwnershipTypeEntity getOwnershipType( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/DeletePolicyResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/DeletePolicyResolver.java index 4268c856c8416..f7b717f865035 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/DeletePolicyResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/DeletePolicyResolver.java @@ -40,7 +40,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) String.format("Failed to perform delete against policy with urn %s", policyUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/GetGrantedPrivilegesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/GetGrantedPrivilegesResolver.java index 37c295001a29f..a9097fa68a07d 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/GetGrantedPrivilegesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/GetGrantedPrivilegesResolver.java @@ -46,7 +46,9 @@ public CompletableFuture get(final DataFetchingEnvironment environme ((AuthorizerChain) context.getAuthorizer()).getDefaultAuthorizer(); List privileges = dataHubAuthorizer.getGrantedPrivileges(actor, resourceSpec); return GraphQLConcurrencyUtils.supplyAsync( - () -> Privileges.builder().setPrivileges(privileges).build()); + () -> Privileges.builder().setPrivileges(privileges).build(), + this.getClass().getSimpleName(), + "get"); } throw new UnsupportedOperationException( String.format( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/UpsertPolicyResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/UpsertPolicyResolver.java index 73790fb9b50a4..5fd6f0917a25e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/UpsertPolicyResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/policy/UpsertPolicyResolver.java @@ -81,7 +81,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to perform update against input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/CreatePostResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/CreatePostResolver.java index 12334b1b543e9..8b4253501dedc 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/CreatePostResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/CreatePostResolver.java @@ -63,6 +63,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } catch (Exception e) { throw new RuntimeException("Failed to create a new post", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/DeletePostResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/DeletePostResolver.java index 83209b33dc799..572b78a3e2cf6 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/DeletePostResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/DeletePostResolver.java @@ -39,6 +39,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } catch (Exception e) { throw new RuntimeException("Failed to create a new post", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/ListPostsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/ListPostsResolver.java index e99e6c26e0f5c..12e4047c2dc4e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/ListPostsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/ListPostsResolver.java @@ -88,6 +88,8 @@ public CompletableFuture get(final DataFetchingEnvironment envi } catch (Exception e) { throw new RuntimeException("Failed to list posts", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/UpdatePostResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/UpdatePostResolver.java index cbfa45470d602..8f7eee7404684 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/UpdatePostResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/post/UpdatePostResolver.java @@ -67,6 +67,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } catch (Exception e) { throw new GraphQLException("Failed to update or edit post", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/CreateQueryResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/CreateQueryResolver.java index 6ad4b85b7d0de..dde3856649014 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/CreateQueryResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/CreateQueryResolver.java @@ -77,6 +77,8 @@ public CompletableFuture get(final DataFetchingEnvironment environm throw new RuntimeException( String.format("Failed to create a new Query from input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/DeleteQueryResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/DeleteQueryResolver.java index 639c30268a085..0879b41dd27ab 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/DeleteQueryResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/DeleteQueryResolver.java @@ -54,6 +54,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } catch (Exception e) { throw new RuntimeException("Failed to delete Query", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/ListQueriesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/ListQueriesResolver.java index d4998bcdb74d7..b0d84942b1257 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/ListQueriesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/ListQueriesResolver.java @@ -90,7 +90,9 @@ public CompletableFuture get(final DataFetchingEnvironment en } catch (Exception e) { throw new RuntimeException("Failed to list Queries", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } // This method maps urns returned from the list endpoint into Partial Query objects which will be diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/UpdateQueryResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/UpdateQueryResolver.java index 64ca4fb327271..29a02b2b0519b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/UpdateQueryResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/query/UpdateQueryResolver.java @@ -104,6 +104,8 @@ public CompletableFuture get(final DataFetchingEnvironment environm throw new RuntimeException( String.format("Failed to update Query from input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/recommendation/ListRecommendationsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/recommendation/ListRecommendationsResolver.java index 2cb6a405b6242..202c78a62c9ae 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/recommendation/ListRecommendationsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/recommendation/ListRecommendationsResolver.java @@ -77,7 +77,9 @@ public CompletableFuture get(DataFetchingEnvironment log.error("Failed to get recommendations for input {}", input, e); return EMPTY_RECOMMENDATIONS; } - }); + }, + this.getClass().getSimpleName(), + "get"); } private com.linkedin.metadata.recommendation.RecommendationRequestContext mapRequestContext( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/AcceptRoleResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/AcceptRoleResolver.java index 2a4eecdab78b1..51b3569c3cc6a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/AcceptRoleResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/AcceptRoleResolver.java @@ -54,6 +54,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to accept role using invite token %s", inviteTokenStr), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/BatchAssignRoleResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/BatchAssignRoleResolver.java index a8bae6c88539f..efadc2288df97 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/BatchAssignRoleResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/BatchAssignRoleResolver.java @@ -46,6 +46,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to perform update against input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/CreateInviteTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/CreateInviteTokenResolver.java index 7852046fb23cf..934a9d66fe209 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/CreateInviteTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/CreateInviteTokenResolver.java @@ -45,6 +45,8 @@ public CompletableFuture get(final DataFetchingEnvironment environm throw new RuntimeException( String.format("Failed to create invite token for role %s", roleUrnStr), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/GetInviteTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/GetInviteTokenResolver.java index 0e2791cd952da..20477e7569916 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/GetInviteTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/GetInviteTokenResolver.java @@ -45,6 +45,8 @@ public CompletableFuture get(final DataFetchingEnvironment environm throw new RuntimeException( String.format("Failed to get invite token for role %s", roleUrnStr), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/ListRolesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/ListRolesResolver.java index 765d2b062ca61..813753289a758 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/ListRolesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/role/ListRolesResolver.java @@ -81,7 +81,9 @@ public CompletableFuture get(final DataFetchingEnvironment envi } catch (Exception e) { throw new RuntimeException("Failed to list roles", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private static List mapEntitiesToRoles( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AggregateAcrossEntitiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AggregateAcrossEntitiesResolver.java index 1205b74aa3a0b..10a09b95bfd6e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AggregateAcrossEntitiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AggregateAcrossEntitiesResolver.java @@ -107,7 +107,9 @@ public CompletableFuture get(DataFetchingEnvironment environme input.getTypes(), input.getQuery(), input.getOrFilters()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } static AggregateResults mapAggregateResults( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutoCompleteResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutoCompleteResolver.java index dba763a4b193b..13861c94ba336 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutoCompleteResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutoCompleteResolver.java @@ -90,6 +90,8 @@ public CompletableFuture get(DataFetchingEnvironment enviro input.getLimit()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutocompleteUtils.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutocompleteUtils.java index 1014966af542b..c849e3ad3f68c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutocompleteUtils.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/AutocompleteUtils.java @@ -73,7 +73,9 @@ public static CompletableFuture batchGetAutocomplet return new AutoCompleteResultForEntity( entity.type(), Collections.emptyList(), Collections.emptyList()); } - })) + }, + AutocompleteUtils.class.getSimpleName(), + "batchGetAutocompleteResults")) .collect(Collectors.toList()); return CompletableFuture.allOf(autoCompletesFuture.toArray(new CompletableFuture[0])) .thenApplyAsync( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/GetQuickFiltersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/GetQuickFiltersResolver.java index eb098934c291a..a61d9111321ca 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/GetQuickFiltersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/GetQuickFiltersResolver.java @@ -74,7 +74,9 @@ public CompletableFuture get(final DataFetchingEnvironmen result.setQuickFilters(quickFilters); return result; - }); + }, + this.getClass().getSimpleName(), + "get"); } /** diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossEntitiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossEntitiesResolver.java index 94336055aff20..77eef1b9a25c6 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossEntitiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossEntitiesResolver.java @@ -124,6 +124,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) input.getTypes(), input.getQuery(), input.getOrFilters(), scrollId, count), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossLineageResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossLineageResolver.java index 3b1502a928c4d..addd217d68724 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossLineageResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/ScrollAcrossLineageResolver.java @@ -157,6 +157,8 @@ public CompletableFuture get(DataFetchingEnvironment count), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossEntitiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossEntitiesResolver.java index f46fddbc307cd..a9da1c4055434 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossEntitiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossEntitiesResolver.java @@ -113,6 +113,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) input.getTypes(), input.getQuery(), input.getOrFilters(), start, count), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossLineageResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossLineageResolver.java index f31859700a21a..238f2375ee207 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossLineageResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchAcrossLineageResolver.java @@ -191,6 +191,8 @@ public CompletableFuture get(DataFetchingEnvironment } finally { log.debug("Returning from search across lineage resolver"); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchResolver.java index db513485d1040..35586ea29571c 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/search/SearchResolver.java @@ -112,6 +112,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) searchFlags), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/user/UpdateCorpUserViewsSettingsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/user/UpdateCorpUserViewsSettingsResolver.java index 94b8458327fbd..3d9488a954af1 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/user/UpdateCorpUserViewsSettingsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/user/UpdateCorpUserViewsSettingsResolver.java @@ -66,7 +66,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw input.toString()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private static void updateCorpUserSettings( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/GlobalViewsSettingsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/GlobalViewsSettingsResolver.java index 05ad51be74fd2..079799a269b01 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/GlobalViewsSettingsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/GlobalViewsSettingsResolver.java @@ -42,7 +42,9 @@ public CompletableFuture get(final DataFetchingEnvironment } catch (Exception e) { throw new RuntimeException("Failed to retrieve Global Views Settings", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private static GlobalViewsSettings mapGlobalViewsSettings( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/UpdateGlobalViewsSettingsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/UpdateGlobalViewsSettingsResolver.java index 87065397ba5dc..9ef6f9474fa51 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/UpdateGlobalViewsSettingsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/settings/view/UpdateGlobalViewsSettingsResolver.java @@ -69,7 +69,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private static void updateViewsSettings( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchGetStepStatesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchGetStepStatesResolver.java index fe6c165813dd1..afcc28e1fb278 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchGetStepStatesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchGetStepStatesResolver.java @@ -85,7 +85,9 @@ public CompletableFuture get( final BatchGetStepStatesResult result = new BatchGetStepStatesResult(); result.setResults(results); return result; - }); + }, + this.getClass().getSimpleName(), + "get"); } @Nonnull diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchUpdateStepStatesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchUpdateStepStatesResolver.java index 644dc78568227..5b8481291f105 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchUpdateStepStatesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/step/BatchUpdateStepStatesResolver.java @@ -63,7 +63,9 @@ public CompletableFuture get( final BatchUpdateStepStatesResult result = new BatchUpdateStepStatesResult(); result.setResults(results); return result; - }); + }, + this.getClass().getSimpleName(), + "get"); } private UpdateStepStateResult buildUpdateStepStateResult( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/structuredproperties/UpsertStructuredPropertiesResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/structuredproperties/UpsertStructuredPropertiesResolver.java index 869a43734e8e4..5f69512e5946b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/structuredproperties/UpsertStructuredPropertiesResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/structuredproperties/UpsertStructuredPropertiesResolver.java @@ -105,7 +105,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throws "Failed to create Tag with id: %s, name: %s", input.getId(), input.getName()), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private TagProperties mapTagProperties(final CreateTagInput input) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/DeleteTagResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/DeleteTagResolver.java index 6466f83a589d9..2dabae55dd3e7 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/DeleteTagResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/DeleteTagResolver.java @@ -58,6 +58,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/SetTagColorResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/SetTagColorResolver.java index a8314421e9645..7a059ed9a1aed 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/SetTagColorResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/tag/SetTagColorResolver.java @@ -87,7 +87,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw throw new RuntimeException( String.format("Failed to set color for Tag with urn %s", tagUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } public static boolean isAuthorizedToSetTagColor(@Nonnull QueryContext context, Urn entityUrn) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/CreateTestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/CreateTestResolver.java index f49a6d19266da..25fab6281f948 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/CreateTestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/CreateTestResolver.java @@ -72,7 +72,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private static TestInfo mapCreateTestInput(final CreateTestInput input) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/DeleteTestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/DeleteTestResolver.java index 43d80d68a30d6..d9a7ed3f90ebe 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/DeleteTestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/DeleteTestResolver.java @@ -42,6 +42,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/ListTestsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/ListTestsResolver.java index 869336b467c9e..529e1a635c318 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/ListTestsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/ListTestsResolver.java @@ -79,7 +79,9 @@ public CompletableFuture get(final DataFetchingEnvironment envi } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } // This method maps urns returned from the list endpoint into Partial Test objects which will be diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/TestResultsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/TestResultsResolver.java index 6eb895b1aeadc..df3566cf0efab 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/TestResultsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/TestResultsResolver.java @@ -48,7 +48,9 @@ public CompletableFuture get(DataFetchingEnvironment environment) t testResults.setPassing(mapTestResults(gmsTestResults.getPassing())); testResults.setFailing(mapTestResults(gmsTestResults.getFailing())); return testResults; - }); + }, + this.getClass().getSimpleName(), + "get"); } @Nullable diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/UpdateTestResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/UpdateTestResolver.java index 42a230e40c77d..20973170f5686 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/UpdateTestResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/test/UpdateTestResolver.java @@ -56,7 +56,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private static TestInfo mapUpdateTestInput(final UpdateTestInput input) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaBlameResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaBlameResolver.java index e636daed74d02..fd1179f91f3bd 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaBlameResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaBlameResolver.java @@ -64,6 +64,8 @@ public CompletableFuture get(final DataFetchingEnvironment log.error("Failed to list schema blame data", e); return null; } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaVersionListResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaVersionListResolver.java index eefdfdbdfc5a0..28f3c544f9d16 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaVersionListResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/timeline/GetSchemaVersionListResolver.java @@ -62,6 +62,8 @@ public CompletableFuture get( log.error("Failed to list schema blame data", e); return null; } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/CreateNativeUserResetTokenResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/CreateNativeUserResetTokenResolver.java index e2ee9389c7043..5ffab37c3408e 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/CreateNativeUserResetTokenResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/CreateNativeUserResetTokenResolver.java @@ -53,6 +53,8 @@ public CompletableFuture get(final DataFetchingEnvironment environme String.format( "Failed to generate password reset token for user: %s", userUrnString)); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/ListUsersResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/ListUsersResolver.java index 936af172085d5..2445ff3130ba9 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/ListUsersResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/ListUsersResolver.java @@ -88,7 +88,9 @@ public CompletableFuture get(final DataFetchingEnvironment envi } catch (Exception e) { throw new RuntimeException("Failed to list users", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/RemoveUserResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/RemoveUserResolver.java index 9421fa058c298..7fa8bf7333f5f 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/RemoveUserResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/RemoveUserResolver.java @@ -52,7 +52,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to perform delete against user with urn %s", userUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/UpdateUserStatusResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/UpdateUserStatusResolver.java index b65e1834d1e0a..88130ade61a67 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/UpdateUserStatusResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/user/UpdateUserStatusResolver.java @@ -57,7 +57,9 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to update user status for urn", userUrn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/CreateViewResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/CreateViewResolver.java index d29ff9dbe8aa3..49c3467adb58b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/CreateViewResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/CreateViewResolver.java @@ -59,7 +59,9 @@ public CompletableFuture get(final DataFetchingEnvironment environm } throw new AuthorizationException( "Unauthorized to perform this action. Please contact your DataHub administrator."); - }); + }, + this.getClass().getSimpleName(), + "get"); } private DataHubView createView(@Nonnull final Urn urn, @Nonnull final CreateViewInput input) { diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/DeleteViewResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/DeleteViewResolver.java index 90b613d0b8feb..974b6f3720335 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/DeleteViewResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/DeleteViewResolver.java @@ -44,6 +44,8 @@ public CompletableFuture get(final DataFetchingEnvironment environment) throw new RuntimeException( String.format("Failed to perform delete against View with urn %s", urn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListGlobalViewsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListGlobalViewsResolver.java index 8a60778ab3453..28b8fe50b70d6 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListGlobalViewsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListGlobalViewsResolver.java @@ -89,7 +89,9 @@ public CompletableFuture get(final DataFetchingEnvironment envi } catch (Exception e) { throw new RuntimeException("Failed to list global Views", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } // This method maps urns returned from the list endpoint into Partial View objects which will be diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListMyViewsResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListMyViewsResolver.java index 783320299245a..218bedcd0beff 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListMyViewsResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/ListMyViewsResolver.java @@ -92,7 +92,9 @@ public CompletableFuture get(final DataFetchingEnvironment envi } catch (Exception e) { throw new RuntimeException("Failed to list Views", e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } // This method maps urns returned from the list endpoint into Partial View objects which will be diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/UpdateViewResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/UpdateViewResolver.java index 80166bdaf8500..9ab5efe83105a 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/UpdateViewResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/view/UpdateViewResolver.java @@ -61,7 +61,9 @@ public CompletableFuture get(final DataFetchingEnvironment environm throw new RuntimeException( String.format("Failed to perform update against View with urn %s", urn), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } private DataHubView getView( diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/CreateERModelRelationshipResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/CreateERModelRelationshipResolver.java index e762c70ceb2d7..61896ed1a0659 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/CreateERModelRelationshipResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/CreateERModelRelationshipResolver.java @@ -110,6 +110,8 @@ public CompletableFuture get(DataFetchingEnvironment enviro "Failed to create erModelRelationship to resource with input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/UpdateERModelRelationshipResolver.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/UpdateERModelRelationshipResolver.java index d9a19a74aada5..5413352a394b4 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/UpdateERModelRelationshipResolver.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/types/ermodelrelationship/UpdateERModelRelationshipResolver.java @@ -62,6 +62,8 @@ public CompletableFuture get(DataFetchingEnvironment environment) throw "Failed to update erModelRelationship to resource with input %s", input), e); } - }); + }, + this.getClass().getSimpleName(), + "get"); } } diff --git a/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java b/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java index 84cff483ee373..af69dce89041e 100644 --- a/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java +++ b/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphQLController.java @@ -165,7 +165,9 @@ CompletableFuture> postGraphQL(HttpEntity httpEnt executionResult.toSpecification()); return new ResponseEntity<>(HttpStatus.SERVICE_UNAVAILABLE); } - }); + }, + this.getClass().getSimpleName(), + "postGraphQL"); } @GetMapping("/graphql") diff --git a/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphiQLController.java b/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphiQLController.java index 0d1b71ab504ac..61f2720c6cfca 100644 --- a/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphiQLController.java +++ b/metadata-service/graphql-servlet-impl/src/main/java/com/datahub/graphql/GraphiQLController.java @@ -35,6 +35,7 @@ public GraphiQLController() { @GetMapping(value = "/graphiql", produces = MediaType.TEXT_HTML_VALUE) @ResponseBody CompletableFuture graphiQL() { - return GraphQLConcurrencyUtils.supplyAsync(() -> this.graphiqlHtml); + return GraphQLConcurrencyUtils.supplyAsync( + () -> this.graphiqlHtml, this.getClass().getSimpleName(), "graphiQL"); } } From 63d97be12f149b7c9c247cc7aed134c55d93a2ea Mon Sep 17 00:00:00 2001 From: RyanHolstien Date: Tue, 28 May 2024 16:13:59 -0500 Subject: [PATCH 5/6] add thread group --- .../graphql/concurrency/GraphQLWorkerPoolThreadFactory.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java index 943c78272adb9..819832543dd15 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java @@ -6,6 +6,8 @@ public class GraphQLWorkerPoolThreadFactory implements ThreadFactory { private static final AtomicLong THREAD_INIT_NUMBER = new AtomicLong(); + public static final String GRAPHQL_THREAD_POOL_GROUP_NAME = "graphQLThreadGroup"; + public static final ThreadGroup GRAPHQL_THREAD_POOL_GROUP = new ThreadGroup(GRAPHQL_THREAD_POOL_GROUP_NAME); private static long nextThreadNum() { return THREAD_INIT_NUMBER.getAndIncrement(); @@ -19,8 +21,8 @@ public GraphQLWorkerPoolThreadFactory(long stackSize) { @Override public final Thread newThread(Runnable runnable) { - Thread thread = new Thread(null, runnable, "GraphQLWorkerThread-" + nextThreadNum(), stackSize); - return thread; + return new Thread(GRAPHQL_THREAD_POOL_GROUP, runnable, "GraphQLWorkerThread-" + nextThreadNum(), + stackSize); } } From 59534a49097da37683feb45f0d0417340d87a493 Mon Sep 17 00:00:00 2001 From: RyanHolstien Date: Wed, 29 May 2024 11:30:54 -0500 Subject: [PATCH 6/6] spotless --- .../concurrency/GraphQLWorkerPoolThreadFactory.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java index 819832543dd15..bae492b85920b 100644 --- a/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java +++ b/datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/concurrency/GraphQLWorkerPoolThreadFactory.java @@ -7,7 +7,8 @@ public class GraphQLWorkerPoolThreadFactory implements ThreadFactory { private static final AtomicLong THREAD_INIT_NUMBER = new AtomicLong(); public static final String GRAPHQL_THREAD_POOL_GROUP_NAME = "graphQLThreadGroup"; - public static final ThreadGroup GRAPHQL_THREAD_POOL_GROUP = new ThreadGroup(GRAPHQL_THREAD_POOL_GROUP_NAME); + public static final ThreadGroup GRAPHQL_THREAD_POOL_GROUP = + new ThreadGroup(GRAPHQL_THREAD_POOL_GROUP_NAME); private static long nextThreadNum() { return THREAD_INIT_NUMBER.getAndIncrement(); @@ -22,7 +23,7 @@ public GraphQLWorkerPoolThreadFactory(long stackSize) { @Override public final Thread newThread(Runnable runnable) { - return new Thread(GRAPHQL_THREAD_POOL_GROUP, runnable, "GraphQLWorkerThread-" + nextThreadNum(), - stackSize); + return new Thread( + GRAPHQL_THREAD_POOL_GROUP, runnable, "GraphQLWorkerThread-" + nextThreadNum(), stackSize); } }