From c62fb36f63d286b1d4da8ca8a8a89d8486c09b4b Mon Sep 17 00:00:00 2001 From: dsx137 <70027572+dsx137@users.noreply.github.com> Date: Tue, 21 Jul 2026 17:03:00 +0800 Subject: [PATCH 1/2] fix(core): select discovery backend from configured type --- pkg/common/kdisc/discoveryregister.go | 24 ++++++++++++++--- pkg/common/kdisc/discoveryregister_test.go | 31 ++++++++++++++++++++++ 2 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 pkg/common/kdisc/discoveryregister_test.go diff --git a/pkg/common/kdisc/discoveryregister.go b/pkg/common/kdisc/discoveryregister.go index 1c793cf1c..209392e49 100644 --- a/pkg/common/kdisc/discoveryregister.go +++ b/pkg/common/kdisc/discoveryregister.go @@ -15,6 +15,7 @@ package kdisc import ( + "strings" "time" "github.com/openimsdk/chat/pkg/common/config" @@ -22,6 +23,7 @@ import ( "github.com/openimsdk/tools/discovery/etcd" "github.com/openimsdk/tools/discovery/kubernetes" "github.com/openimsdk/tools/errs" + "google.golang.org/grpc" ) const ( @@ -32,11 +34,25 @@ const ( // NewDiscoveryRegister creates a new service discovery and registry client based on the provided environment type. func NewDiscoveryRegister(discovery *config.Discovery, runtimeEnv string, watchNames []string) (discovery.SvcDiscoveryRegistry, error) { - if runtimeEnv == KUBERNETESCONST { - return kubernetes.NewConnManager(discovery.Kubernetes.Namespace, watchNames) + discoveryType := discovery.Enable + if discoveryType == "" && runtimeEnv == KUBERNETESCONST { + discoveryType = KUBERNETESCONST + } + if discoveryType == KUBERNETESCONST && runtimeEnv != KUBERNETESCONST { + return nil, errs.New("unsupported discovery type", "type", discoveryType).Wrap() } - switch discovery.Enable { + switch discoveryType { + case KUBERNETESCONST: + for i := range watchNames { + watchNames[i] = strings.Split(watchNames[i], ":")[0] + } + return kubernetes.NewConnManager(discovery.Kubernetes.Namespace, watchNames, + grpc.WithDefaultCallOptions( + grpc.MaxCallSendMsgSize(1024*1024*20), + ), + grpc.WithDefaultServiceConfig(`{"loadBalancingPolicy":"round_robin"}`), + ) case ETCDCONST: return etcd.NewSvcDiscoveryRegistry( discovery.Etcd.RootDirectory, @@ -46,6 +62,6 @@ func NewDiscoveryRegister(discovery *config.Discovery, runtimeEnv string, watchN 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() } } diff --git a/pkg/common/kdisc/discoveryregister_test.go b/pkg/common/kdisc/discoveryregister_test.go new file mode 100644 index 000000000..105581246 --- /dev/null +++ b/pkg/common/kdisc/discoveryregister_test.go @@ -0,0 +1,31 @@ +package kdisc + +import ( + "testing" + + "github.com/openimsdk/chat/pkg/common/config" + toolsetcd "github.com/openimsdk/tools/discovery/etcd" +) + +func TestNewDiscoveryRegister_selectsEtcd_whenConfiguredInKubernetes(t *testing.T) { + // Given + discoveryConfig := &config.Discovery{ + Enable: ETCDCONST, + Etcd: config.Etcd{ + RootDirectory: "openim", + Address: []string{"127.0.0.1:2379"}, + }, + } + + // When + registry, err := NewDiscoveryRegister(discoveryConfig, KUBERNETESCONST, nil) + + // Then + if err != nil { + t.Fatalf("NewDiscoveryRegister() error = %v", err) + } + defer registry.Close() + if _, ok := registry.(*toolsetcd.SvcDiscoveryRegistryImpl); !ok { + t.Fatalf("NewDiscoveryRegister() type = %T, want *etcd.SvcDiscoveryRegistryImpl", registry) + } +} From 60d203037bec13a8461e4647f707d12724c15507 Mon Sep 17 00:00:00 2001 From: dsx137 <70027572+dsx137@users.noreply.github.com> Date: Tue, 21 Jul 2026 17:36:44 +0800 Subject: [PATCH 2/2] test(core): remove discovery registry regression test --- pkg/common/kdisc/discoveryregister_test.go | 31 ---------------------- 1 file changed, 31 deletions(-) delete mode 100644 pkg/common/kdisc/discoveryregister_test.go diff --git a/pkg/common/kdisc/discoveryregister_test.go b/pkg/common/kdisc/discoveryregister_test.go deleted file mode 100644 index 105581246..000000000 --- a/pkg/common/kdisc/discoveryregister_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package kdisc - -import ( - "testing" - - "github.com/openimsdk/chat/pkg/common/config" - toolsetcd "github.com/openimsdk/tools/discovery/etcd" -) - -func TestNewDiscoveryRegister_selectsEtcd_whenConfiguredInKubernetes(t *testing.T) { - // Given - discoveryConfig := &config.Discovery{ - Enable: ETCDCONST, - Etcd: config.Etcd{ - RootDirectory: "openim", - Address: []string{"127.0.0.1:2379"}, - }, - } - - // When - registry, err := NewDiscoveryRegister(discoveryConfig, KUBERNETESCONST, nil) - - // Then - if err != nil { - t.Fatalf("NewDiscoveryRegister() error = %v", err) - } - defer registry.Close() - if _, ok := registry.(*toolsetcd.SvcDiscoveryRegistryImpl); !ok { - t.Fatalf("NewDiscoveryRegister() type = %T, want *etcd.SvcDiscoveryRegistryImpl", registry) - } -}