From a2553f202843efec58a6278b99a5ac4620314062 Mon Sep 17 00:00:00 2001 From: dsx137 <70027572+dsx137@users.noreply.github.com> Date: Fri, 17 Jul 2026 15:29:52 +0800 Subject: [PATCH 1/4] refactor(core): select discovery backend from configured type --- .../discoveryregister/discoveryregister.go | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/pkg/common/discoveryregister/discoveryregister.go b/pkg/common/discoveryregister/discoveryregister.go index ec444defb..8c0850c54 100644 --- a/pkg/common/discoveryregister/discoveryregister.go +++ b/pkg/common/discoveryregister/discoveryregister.go @@ -17,30 +17,39 @@ package discoveryregister import ( "time" + "google.golang.org/grpc" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/tools/discovery" "github.com/openimsdk/tools/discovery/etcd" "github.com/openimsdk/tools/discovery/kubernetes" "github.com/openimsdk/tools/errs" "github.com/openimsdk/tools/utils/runtimeenv" - "google.golang.org/grpc" ) // NewDiscoveryRegister creates a new service discovery and registry client based on the provided environment type. -func NewDiscoveryRegister(discovery *config.Discovery, share *config.Share, watchNames []string) (discovery.SvcDiscoveryRegistry, error) { - if runtimeenv.RuntimeEnvironment() == config.KUBERNETES { +func NewDiscoveryRegister(discovery *config.Discovery, watchNames []string) (discovery.SvcDiscoveryRegistry, error) { + runtimeEnvironment := runtimeenv.RuntimeEnvironment() + discoveryType := discovery.Enable + if discoveryType == "" && runtimeEnvironment == config.KUBERNETES { + discoveryType = config.KUBERNETES + } + if discoveryType == config.KUBERNETES && runtimeEnvironment != config.KUBERNETES { + return nil, errs.New("unsupported discovery type", "type", discoveryType).Wrap() + } + switch discoveryType { + case config.KUBERNETES: namespace := discovery.Kubernetes.Namespace if namespace == "" { namespace = "default" } - return kubernetes.NewConnManager(namespace, watchNames, + return kubernetes.NewConnManager( + namespace, + watchNames, grpc.WithDefaultCallOptions( - grpc.MaxCallSendMsgSize(1024*1024*20), + grpc.MaxCallSendMsgSize(20*1024*1024), ), ) - } - - switch discovery.Enable { case config.ETCD: return etcd.NewSvcDiscoveryRegistry( discovery.Etcd.RootDirectory, @@ -50,6 +59,6 @@ func NewDiscoveryRegister(discovery *config.Discovery, share *config.Share, watc etcd.WithMaxCallSendMsgSize(20*1024*1024), etcd.WithUsernameAndPassword(discovery.Etcd.Username, discovery.Etcd.Password)) default: - return nil, errs.New("unsupported discovery type", "type", discovery.Enable).Wrap() + return nil, errs.New("unsupported discovery type", "type", discoveryType).Wrap() } } From d11ea115520d35124c8c2cbe7c7238ec47c8d4c5 Mon Sep 17 00:00:00 2001 From: dsx137 <70027572+dsx137@users.noreply.github.com> Date: Tue, 21 Jul 2026 15:06:28 +0800 Subject: [PATCH 2/4] refactor(core): select discovery backend from configured type --- .gitignore | 5 ++++- pkg/common/discoveryregister/discoveryregister.go | 13 ++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 77cf855b7..1b5cf874d 100644 --- a/.gitignore +++ b/.gitignore @@ -387,4 +387,7 @@ Sessionx.vim # End of https://www.toptal.com/developers/gitignore/api/go,git,vim,tags,test,emacs,backup,jetbrains .idea -dist/ \ No newline at end of file +dist/ + +.omo +.sisyphus \ No newline at end of file diff --git a/pkg/common/discoveryregister/discoveryregister.go b/pkg/common/discoveryregister/discoveryregister.go index 8c0850c54..5cacb53a3 100644 --- a/pkg/common/discoveryregister/discoveryregister.go +++ b/pkg/common/discoveryregister/discoveryregister.go @@ -15,6 +15,7 @@ package discoveryregister import ( + "strings" "time" "google.golang.org/grpc" @@ -39,16 +40,14 @@ func NewDiscoveryRegister(discovery *config.Discovery, watchNames []string) (dis } switch discoveryType { case config.KUBERNETES: - namespace := discovery.Kubernetes.Namespace - if namespace == "" { - namespace = "default" + for i := range watchNames { + watchNames[i] = strings.Split(watchNames[i], ":")[0] } - return kubernetes.NewConnManager( - namespace, - watchNames, + return kubernetes.NewConnManager(discovery.Kubernetes.Namespace, watchNames, grpc.WithDefaultCallOptions( - grpc.MaxCallSendMsgSize(20*1024*1024), + grpc.MaxCallSendMsgSize(1024*1024*20), ), + grpc.WithDefaultServiceConfig(`{"loadBalancingPolicy":"round_robin"}`), ) case config.ETCD: return etcd.NewSvcDiscoveryRegistry( From d21accfc5166f88aca0aa6ff02c2b71a2a70fda4 Mon Sep 17 00:00:00 2001 From: dsx137 <70027572+dsx137@users.noreply.github.com> Date: Tue, 21 Jul 2026 19:11:46 +0800 Subject: [PATCH 3/4] fix(core): restore discovery register API compatibility --- pkg/common/discoveryregister/discoveryregister.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/common/discoveryregister/discoveryregister.go b/pkg/common/discoveryregister/discoveryregister.go index 5cacb53a3..59969d4bb 100644 --- a/pkg/common/discoveryregister/discoveryregister.go +++ b/pkg/common/discoveryregister/discoveryregister.go @@ -29,7 +29,7 @@ import ( ) // NewDiscoveryRegister creates a new service discovery and registry client based on the provided environment type. -func NewDiscoveryRegister(discovery *config.Discovery, watchNames []string) (discovery.SvcDiscoveryRegistry, error) { +func NewDiscoveryRegister(discovery *config.Discovery, share *config.Share, watchNames []string) (discovery.SvcDiscoveryRegistry, error) { runtimeEnvironment := runtimeenv.RuntimeEnvironment() discoveryType := discovery.Enable if discoveryType == "" && runtimeEnvironment == config.KUBERNETES { From c4813ace375eb1027f815ed58d153029d4c97c79 Mon Sep 17 00:00:00 2001 From: dsx137 <70027572+dsx137@users.noreply.github.com> Date: Tue, 21 Jul 2026 19:12:27 +0800 Subject: [PATCH 4/4] chore: remove local tooling entries from gitignore --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 1b5cf874d..cc9d0b04e 100644 --- a/.gitignore +++ b/.gitignore @@ -388,6 +388,3 @@ Sessionx.vim # End of https://www.toptal.com/developers/gitignore/api/go,git,vim,tags,test,emacs,backup,jetbrains .idea dist/ - -.omo -.sisyphus \ No newline at end of file