mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
Add etcd as a service discovery mechanism
This commit is contained in:
parent
678d361ccd
commit
16d2bf2220
@ -193,12 +193,14 @@ func Check(ctx context.Context, etcdServers []string, etcdRoot string, createIfN
|
|||||||
}
|
}
|
||||||
defer client.Close()
|
defer client.Close()
|
||||||
|
|
||||||
// Create a child context with a default timeout or use the provided context
|
if cfg.DialTimeout != 0 {
|
||||||
opCtx, cancel := context.WithCancel(ctx)
|
ctx, _ = context.WithTimeout(ctx, cfg.DialTimeout)
|
||||||
defer cancel()
|
} else {
|
||||||
|
ctx, _ = context.WithTimeout(ctx, 10*time.Second)
|
||||||
|
}
|
||||||
|
|
||||||
// Check if the root node exists
|
// Check if the root node exists
|
||||||
resp, err := client.Get(opCtx, etcdRoot)
|
resp, err := client.Get(ctx, etcdRoot)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "failed to get the root node from etcd")
|
return errors.Wrap(err, "failed to get the root node from etcd")
|
||||||
}
|
}
|
||||||
@ -206,7 +208,7 @@ func Check(ctx context.Context, etcdServers []string, etcdRoot string, createIfN
|
|||||||
// If root node does not exist and createIfNotExist is true, create the root node
|
// If root node does not exist and createIfNotExist is true, create the root node
|
||||||
if len(resp.Kvs) == 0 {
|
if len(resp.Kvs) == 0 {
|
||||||
if createIfNotExist {
|
if createIfNotExist {
|
||||||
_, err := client.Put(opCtx, etcdRoot, "")
|
_, err := client.Put(ctx, etcdRoot, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "failed to create the root node in etcd")
|
return errors.Wrap(err, "failed to create the root node in etcd")
|
||||||
}
|
}
|
||||||
|
@ -45,22 +45,11 @@ func CheckZookeeper(ctx context.Context, config *config.ZooKeeper) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func CheckEtcd(ctx context.Context, config *config.Etcd) error {
|
func CheckEtcd(ctx context.Context, config *config.Etcd) error {
|
||||||
etcd.Check(ctx, config.Address, "/check_openim_component",
|
return etcd.Check(ctx, config.Address, "/check_openim_component",
|
||||||
true,
|
true,
|
||||||
etcd.WithDialTimeout(10*time.Second),
|
etcd.WithDialTimeout(10*time.Second),
|
||||||
etcd.WithMaxCallSendMsgSize(20*1024*1024),
|
etcd.WithMaxCallSendMsgSize(20*1024*1024),
|
||||||
etcd.WithUsernameAndPassword(config.Username, config.Password))
|
etcd.WithUsernameAndPassword(config.Username, config.Password))
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func CheckDiscovery(ctx context.Context, config *config.Discovery) error {
|
|
||||||
switch config.Enable {
|
|
||||||
case "etcd":
|
|
||||||
return CheckEtcd(ctx, &config.Etcd)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func CheckMongo(ctx context.Context, config *config.Mongo) error {
|
func CheckMongo(ctx context.Context, config *config.Mongo) error {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user