mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-10-26 13:12:12 +08:00
feat: config
This commit is contained in:
parent
5d449400da
commit
fa79fac6d5
@ -156,13 +156,20 @@ func Start(ctx context.Context, index int, config *Config) error {
|
|||||||
signal.Notify(sigs, syscall.SIGTERM)
|
signal.Notify(sigs, syscall.SIGTERM)
|
||||||
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
|
||||||
|
shutdown := func() error {
|
||||||
|
err := server.Shutdown(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return errs.WrapMsg(err, "shutdown err")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
disetcd.RegisterShutDown(shutdown)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
select {
|
select {
|
||||||
case <-sigs:
|
case <-sigs:
|
||||||
program.SIGTERMExit()
|
program.SIGTERMExit()
|
||||||
err := server.Shutdown(ctx)
|
if err := shutdown(); err != nil {
|
||||||
if err != nil {
|
return err
|
||||||
return errs.WrapMsg(err, "shutdown err")
|
|
||||||
}
|
}
|
||||||
case <-netDone:
|
case <-netDone:
|
||||||
close(netDone)
|
close(netDone)
|
||||||
|
|||||||
@ -2,12 +2,14 @@ package msggateway
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/discovery/etcd"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/webhook"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/webhook"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/rpccache"
|
"github.com/openimsdk/open-im-server/v3/pkg/rpccache"
|
||||||
pbAuth "github.com/openimsdk/protocol/auth"
|
pbAuth "github.com/openimsdk/protocol/auth"
|
||||||
@ -161,20 +163,27 @@ func (ws *WsServer) Run(done chan error) error {
|
|||||||
http.HandleFunc("/", ws.wsHandler)
|
http.HandleFunc("/", ws.wsHandler)
|
||||||
err := server.ListenAndServe()
|
err := server.ListenAndServe()
|
||||||
defer close(netDone)
|
defer close(netDone)
|
||||||
if err != nil && err != http.ErrServerClosed {
|
if err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||||||
netErr = errs.WrapMsg(err, "ws start err", server.Addr)
|
netErr = errs.WrapMsg(err, "ws start err", server.Addr)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
|
||||||
defer cancel()
|
shutDown := func() error {
|
||||||
var err error
|
|
||||||
select {
|
|
||||||
case err = <-done:
|
|
||||||
sErr := server.Shutdown(ctx)
|
sErr := server.Shutdown(ctx)
|
||||||
if sErr != nil {
|
if sErr != nil {
|
||||||
return errs.WrapMsg(sErr, "shutdown err")
|
return errs.WrapMsg(sErr, "shutdown err")
|
||||||
}
|
}
|
||||||
close(shutdownDone)
|
close(shutdownDone)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
etcd.RegisterShutDown(shutDown)
|
||||||
|
defer cancel()
|
||||||
|
var err error
|
||||||
|
select {
|
||||||
|
case err = <-done:
|
||||||
|
if err := shutDown(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,14 @@ const (
|
|||||||
ConfigKeyPrefix = "/open-im/config/"
|
ConfigKeyPrefix = "/open-im/config/"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ShutDowns []func() error
|
||||||
|
)
|
||||||
|
|
||||||
|
func RegisterShutDown(shutDown ...func() error) {
|
||||||
|
ShutDowns = append(ShutDowns, shutDown...)
|
||||||
|
}
|
||||||
|
|
||||||
type ConfigManager struct {
|
type ConfigManager struct {
|
||||||
client *clientv3.Client
|
client *clientv3.Client
|
||||||
watchConfigNames []string
|
watchConfigNames []string
|
||||||
@ -83,6 +91,12 @@ func restartServer(ctx context.Context) error {
|
|||||||
if runtime.GOOS != "windows" {
|
if runtime.GOOS != "windows" {
|
||||||
cmd.SysProcAttr = &syscall.SysProcAttr{}
|
cmd.SysProcAttr = &syscall.SysProcAttr{}
|
||||||
}
|
}
|
||||||
|
log.ZInfo(ctx, "shutdown server")
|
||||||
|
for _, f := range ShutDowns {
|
||||||
|
if err = f(); err != nil {
|
||||||
|
log.ZError(ctx, "shutdown fail", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
log.ZInfo(ctx, "restart server")
|
log.ZInfo(ctx, "restart server")
|
||||||
err = cmd.Start()
|
err = cmd.Start()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user