From 91ed851c95ce7bba10e998df9241580db0cbaf07 Mon Sep 17 00:00:00 2001 From: jacob Date: Wed, 19 Feb 2025 16:49:09 +0800 Subject: [PATCH] fix: graphql query timeout --- .../GraphQL/IGraphQLAppService.cs | 2 +- .../GraphQL/GraphQLAppService.cs | 21 +++++++++++++++---- .../Controllers/GraphqlController.cs | 2 +- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/AeFinder.Application.Contracts/GraphQL/IGraphQLAppService.cs b/src/AeFinder.Application.Contracts/GraphQL/IGraphQLAppService.cs index 5d59ead7c..4dc16f3f8 100644 --- a/src/AeFinder.Application.Contracts/GraphQL/IGraphQLAppService.cs +++ b/src/AeFinder.Application.Contracts/GraphQL/IGraphQLAppService.cs @@ -7,7 +7,7 @@ namespace AeFinder.GraphQL; public interface IGraphQLAppService { Task RequestForwardAsync(string appId, string version, string kubernetesOriginName, - GraphQLQueryInput input); + string appNameSpace, GraphQLQueryInput input); Task GetAppCurrentVersionCacheNameAsync(string appId); Task CacheAppCurrentVersionAsync(string appId, string currentVersion); Task GetAppCurrentVersionCacheAsync(string appId); diff --git a/src/AeFinder.Application/GraphQL/GraphQLAppService.cs b/src/AeFinder.Application/GraphQL/GraphQLAppService.cs index ce3b89aaf..f10915052 100644 --- a/src/AeFinder.Application/GraphQL/GraphQLAppService.cs +++ b/src/AeFinder.Application/GraphQL/GraphQLAppService.cs @@ -36,12 +36,11 @@ public GraphQLAppService(IHttpClientFactory httpClientFactory, } public async Task RequestForwardAsync(string appId, string version, - string kubernetesOriginName, GraphQLQueryInput input) + string kubernetesOriginName,string appNameSpace, GraphQLQueryInput input) { var serverUrl = ""; - string originName = kubernetesOriginName.TrimEnd('/'); - - string currentVersion = await EnsureCurrentVersion(appId, version); + + var currentVersion = await EnsureCurrentVersion(appId, version); if (currentVersion == null) { var exceptionResponse = new HttpResponseMessage(HttpStatusCode.NotFound) @@ -52,6 +51,9 @@ public async Task RequestForwardAsync(string appId, string return exceptionResponse; } + var originName = !string.IsNullOrWhiteSpace(kubernetesOriginName) + ? kubernetesOriginName.TrimEnd('/') + : GetAppServiceHost(appId, currentVersion, appNameSpace); serverUrl = $"{originName}/{appId}/{currentVersion}/graphql"; _logger.LogDebug("RequestForward:" + serverUrl); @@ -63,6 +65,17 @@ public async Task RequestForwardAsync(string appId, string return response; } + + private string GetAppServiceName(string appId, string version) + { + appId = appId.Replace("_", "-"); + return $"service-{appId}-{version}".ToLower(); + } + + private string GetAppServiceHost(string appId, string version, string appNameSpace) + { + return $"http://{GetAppServiceName(appId, version)}.{appNameSpace}.svc"; + } private async Task EnsureCurrentVersion(string appId, string version) { diff --git a/src/AeFinder.HttpApi/Controllers/GraphqlController.cs b/src/AeFinder.HttpApi/Controllers/GraphqlController.cs index 6adefe800..555f3aa16 100644 --- a/src/AeFinder.HttpApi/Controllers/GraphqlController.cs +++ b/src/AeFinder.HttpApi/Controllers/GraphqlController.cs @@ -40,7 +40,7 @@ public virtual async Task GraphqlForward([FromBody] GraphQLQueryI string version = null) { var response = - await _graphQLAppService.RequestForwardAsync(appId, version, _kubernetesOption.OriginName, input); + await _graphQLAppService.RequestForwardAsync(appId, version, _kubernetesOption.OriginName, _kubernetesOption.AppNameSpace, input); if (response.IsSuccessStatusCode) {