From b3c5348f0dea5fcfbdfbe7abb460b5cd47f89e48 Mon Sep 17 00:00:00 2001 From: xufeixiang <95065451+lovestaryouth@users.noreply.github.com> Date: Wed, 15 Jan 2025 22:41:30 +0800 Subject: [PATCH] feat: add env params to control database execute/close timeout. --- pkg/common/consts/env_param.go | 5 +++++ pkg/common/utils/viper_lock.go | 8 ++++++++ pkg/engine/datasource/prisma.go | 2 ++ wundergraphGitSubmodule | 2 +- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pkg/common/consts/env_param.go b/pkg/common/consts/env_param.go index 142469c..b61c0b1 100644 --- a/pkg/common/consts/env_param.go +++ b/pkg/common/consts/env_param.go @@ -65,3 +65,8 @@ const ( HookReportTime = "hookReportTime" HookReportStatus = "hookReportStatus" ) + +const ( + DatabaseExecuteTimeout = "FB_DATABASE_EXECUTE_TIMEOUT" + DatabaseCloseTimeout = "FB_DATABASE_CLOSE_TIMEOUT" +) diff --git a/pkg/common/utils/viper_lock.go b/pkg/common/utils/viper_lock.go index 1eccbc4..84bbb5b 100644 --- a/pkg/common/utils/viper_lock.go +++ b/pkg/common/utils/viper_lock.go @@ -42,3 +42,11 @@ func GetTimeWithLockViper(key string) time.Time { return viper.GetTime(key) } + +// GetInt32WithLockViper 带锁获取viper中的int32值 +func GetInt32WithLockViper(key string) int32 { + viperMutex.Lock() + defer viperMutex.Unlock() + + return viper.GetInt32(key) +} diff --git a/pkg/engine/datasource/prisma.go b/pkg/engine/datasource/prisma.go index cd35fab..9a2ab02 100644 --- a/pkg/engine/datasource/prisma.go +++ b/pkg/engine/datasource/prisma.go @@ -74,6 +74,8 @@ func buildRuntimeDataSourceConfigurationForPrisma(prismaSchema string, config *w staticData := &wgpb.DataSourceCustom_Static{Data: &wgpb.ConfigurationVariable{}} customDatabase := *config.CustomDatabase customDatabase.PrismaSchema, _ = filepath.Abs(prismaSchema) + customDatabase.ExecuteTimeoutSeconds = utils.GetInt32WithLockViper(consts.DatabaseExecuteTimeout) + customDatabase.CloseTimeoutSeconds = utils.GetInt32WithLockViper(consts.DatabaseCloseTimeout) configs, fields = copyDatasourceWithRootNodes(config, func(_ *wgpb.TypeField, configItem *wgpb.DataSourceConfiguration) bool { configItem.CustomDatabase = &customDatabase configItem.CustomStatic = staticData diff --git a/wundergraphGitSubmodule b/wundergraphGitSubmodule index e44f1f8..5ed9f3d 160000 --- a/wundergraphGitSubmodule +++ b/wundergraphGitSubmodule @@ -1 +1 @@ -Subproject commit e44f1f837b3c81ae7ab8fdbba2743c6d7c39b0af +Subproject commit 5ed9f3d71da193ca18dc18cffa0be7f29320364c