From 9610da9123fea0fb3954553be7ebd138a7beb8d7 Mon Sep 17 00:00:00 2001
From: Xinwei Xiong <3293172751NSS@gmail.com>
Date: Sun, 4 Feb 2024 20:05:53 +0800
Subject: [PATCH 1/9] fix(main): fix openim scripts start rpc log (#1877)
* Update start.go
* Update start.go
---
pkg/common/startrpc/start.go | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pkg/common/startrpc/start.go b/pkg/common/startrpc/start.go
index f7b547834..f6cda2ffb 100644
--- a/pkg/common/startrpc/start.go
+++ b/pkg/common/startrpc/start.go
@@ -17,7 +17,6 @@ package startrpc
import (
"errors"
"fmt"
- "log"
"net"
"net/http"
"os"
@@ -117,7 +116,8 @@ func Start(
// Create a HTTP server for prometheus.
httpServer := &http.Server{Handler: promhttp.HandlerFor(reg, promhttp.HandlerOpts{}), Addr: fmt.Sprintf("0.0.0.0:%d", prometheusPort)}
if err := httpServer.ListenAndServe(); err != nil {
- log.Fatal("Unable to start a http server. ", err.Error(), "PrometheusPort:", prometheusPort)
+ fmt.Fprintf(os.Stderr, "\n\nexit -1: \n%+v PrometheusPort: %d \n\n", err, prometheusPort)
+ os.Exit(-1)
}
}
return nil
From 311d42283b2a0a022f8827fb0927ca30601fbb73 Mon Sep 17 00:00:00 2001
From: Xinwei Xiong <3293172751NSS@gmail.com>
Date: Sun, 4 Feb 2024 20:06:34 +0800
Subject: [PATCH 2/9] feat: fix openim logs and ci (#1878)
---
scripts/lib/logging.sh | 14 +++++++++++---
scripts/lib/util.sh | 4 ----
scripts/start-all.sh | 2 +-
3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/scripts/lib/logging.sh b/scripts/lib/logging.sh
index 2fa77dd83..8f2bb33cf 100755
--- a/scripts/lib/logging.sh
+++ b/scripts/lib/logging.sh
@@ -131,16 +131,24 @@ openim::log::error_exit() {
exit "${code}"
}
-# Log an error but keep going. Don't dump the stack or exit.
+# Log an error but keep going. Don't dump the stack or exit.
openim::log::error() {
+ # Define red color
+ red='\033[0;31m'
+ # No color (reset)
+ nc='\033[0m' # No Color
+
timestamp=$(date +"[%Y-%m-%d %H:%M:%S %Z]")
- echo_log "!!! ${timestamp} ${1-}" >&2
+ # Apply red color for error message
+ echo_log "${red}!!! ${timestamp} ${1-}${nc}" >&2
shift
for message; do
- echo_log " ${message}" >&2
+ # Apply red color for subsequent lines of the error message
+ echo_log "${red} ${message}${nc}" >&2
done
}
+
# Print an usage message to stderr. The arguments are printed directly.
openim::log::usage() {
echo_log >&2
diff --git a/scripts/lib/util.sh b/scripts/lib/util.sh
index b93f45205..eaefaf22a 100755
--- a/scripts/lib/util.sh
+++ b/scripts/lib/util.sh
@@ -1541,12 +1541,8 @@ openim::util::check_ports() {
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
if command -v ss > /dev/null 2>&1; then
info=$(ss -ltnp | grep ":$port" || true)
- openim::color::echo $COLOR_RED "!!!!!!!! port=$port"
- openim::color::echo $COLOR_RED "!!!!!!!! info=$info"
else
info=$(netstat -ltnp | grep ":$port" || true)
- openim::color::echo $COLOR_RED "!!!!!!!! port=$port"
- openim::color::echo $COLOR_RED "!!!!!!!! info=$info"
fi
elif [[ "$OSTYPE" == "darwin"* ]]; then
# For macOS, use lsof
diff --git a/scripts/start-all.sh b/scripts/start-all.sh
index 5f34cbdbe..ca03f0c3c 100755
--- a/scripts/start-all.sh
+++ b/scripts/start-all.sh
@@ -82,4 +82,4 @@ execute_scripts
openim::log::info "\n## Post Starting OpenIM services"
${TOOLS_START_SCRIPTS_PATH} openim::tools::post-start
-openim::log::success "✨ All OpenIM services have been successfully started!"
\ No newline at end of file
+openim::color::echo $COLOR_BLUE "✨ All OpenIM services have been successfully started!"
\ No newline at end of file
From ee245157614af085525b88888daae0c51826276b Mon Sep 17 00:00:00 2001
From: Brabem <69128477+luhaoling@users.noreply.github.com>
Date: Sun, 4 Feb 2024 20:13:17 +0800
Subject: [PATCH 3/9] feat: add getUserToken api and add ex field in
getSortedConversationListResp (#1880)
* fix: del the manager config and manger init statement
* fix: fix the Manger judge condition
* fix: fix revokeMsg error
* fix: find erors
* fix: find error
* fix: fix the AdminAccount error
* fix: del the debug statement
* fix: fix the component check func
* fix: fix the get zkAddress error
* fix: fix the kafka client close error
* fix: add env in minio connected
* fix: del the minio env
* fix: fix the go.mod tools version
* fix: del get env in minio conneted
* feat: add GetUserToken api and add ex field in GetSortedConversationList resp
* fix: fix the go.mod version
* fix: add lack method
* fix: add a method
* fix: add lack implement
* fix: fix the tools pkg version
* fix: del the unuser pkg
* fix: add Limiting judgement of get admin token
---
go.mod | 4 +---
go.sum | 4 ++--
internal/api/auth.go | 4 ++++
internal/api/route.go | 1 +
internal/rpc/auth/auth.go | 22 ++++++++++++++++++++++
internal/rpc/conversation/conversaion.go | 5 +++++
internal/rpc/group/group.go | 5 +++++
internal/rpc/user/user.go | 5 +++++
pkg/authverify/token.go | 3 +--
9 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/go.mod b/go.mod
index 3da7c3ecd..ab138e68c 100644
--- a/go.mod
+++ b/go.mod
@@ -4,7 +4,7 @@ go 1.19
require (
firebase.google.com/go v3.13.0+incompatible
- github.com/OpenIMSDK/protocol v0.0.48
+ github.com/OpenIMSDK/protocol v0.0.55
github.com/OpenIMSDK/tools v0.0.33
github.com/bwmarrin/snowflake v0.3.0 // indirect
github.com/dtm-labs/rockscache v0.1.1
@@ -155,5 +155,3 @@ require (
golang.org/x/crypto v0.17.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
)
-
-replace github.com/OpenIMSDK/protocol v0.0.47 => github.com/AndrewZuo01/protocol v0.0.0-20240112093520-fd9c53e27b94
diff --git a/go.sum b/go.sum
index 84620fe7d..94a516366 100644
--- a/go.sum
+++ b/go.sum
@@ -18,8 +18,8 @@ firebase.google.com/go v3.13.0+incompatible/go.mod h1:xlah6XbEyW6tbfSklcfe5FHJIw
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/IBM/sarama v1.41.3 h1:MWBEJ12vHC8coMjdEXFq/6ftO6DUZnQlFYcxtOJFa7c=
github.com/IBM/sarama v1.41.3/go.mod h1:Xxho9HkHd4K/MDUo/T/sOqwtX/17D33++E9Wib6hUdQ=
-github.com/OpenIMSDK/protocol v0.0.48 h1:8MIMjyzJRsruYhVv2ZKArFiOveroaofDOb3dlAdgjsw=
-github.com/OpenIMSDK/protocol v0.0.48/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y=
+github.com/OpenIMSDK/protocol v0.0.55 h1:eBjg8DyuhxGmuCUjpoZjg6MJJJXU/xJ3xJwFhrn34yA=
+github.com/OpenIMSDK/protocol v0.0.55/go.mod h1:F25dFrwrIx3lkNoiuf6FkCfxuwf8L4Z8UIsdTHP/r0Y=
github.com/OpenIMSDK/tools v0.0.33 h1:rvFCxXaXxLv1MJFC4qcoWRGwKBnV+hR68UN2N0/zZhE=
github.com/OpenIMSDK/tools v0.0.33/go.mod h1:wBfR5CYmEyvxl03QJbTkhz1CluK6J4/lX0lviu8JAjE=
github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM=
diff --git a/internal/api/auth.go b/internal/api/auth.go
index 44a97a013..88539f63a 100644
--- a/internal/api/auth.go
+++ b/internal/api/auth.go
@@ -33,6 +33,10 @@ func (o *AuthApi) UserToken(c *gin.Context) {
a2r.Call(auth.AuthClient.UserToken, o.Client, c)
}
+func (o *AuthApi) GetUserToken(c *gin.Context) {
+ a2r.Call(auth.AuthClient.GetUserToken, o.Client, c)
+}
+
func (o *AuthApi) ParseToken(c *gin.Context) {
a2r.Call(auth.AuthClient.ParseToken, o.Client, c)
}
diff --git a/internal/api/route.go b/internal/api/route.go
index 10907d086..24ed5f6bb 100644
--- a/internal/api/route.go
+++ b/internal/api/route.go
@@ -150,6 +150,7 @@ func NewGinRouter(discov discoveryregistry.SvcDiscoveryRegistry, rdb redis.Unive
{
a := NewAuthApi(*authRpc)
authRouterGroup.POST("/user_token", a.UserToken)
+ authRouterGroup.POST("/get_user_token", ParseToken, a.GetUserToken)
authRouterGroup.POST("/parse_token", a.ParseToken)
authRouterGroup.POST("/force_logout", ParseToken, a.ForceLogout)
}
diff --git a/internal/rpc/auth/auth.go b/internal/rpc/auth/auth.go
index ee8ead194..eaf63f868 100644
--- a/internal/rpc/auth/auth.go
+++ b/internal/rpc/auth/auth.go
@@ -80,6 +80,28 @@ func (s *authServer) UserToken(ctx context.Context, req *pbauth.UserTokenReq) (*
return &resp, nil
}
+func (s *authServer) GetUserToken(ctx context.Context, req *pbauth.GetUserTokenReq) (*pbauth.GetUserTokenResp, error) {
+ if err := authverify.CheckAdmin(ctx); err != nil {
+ return nil, err
+ }
+ resp := pbauth.GetUserTokenResp{}
+
+ if authverify.IsManagerUserID(req.UserID) {
+ return nil, errs.ErrNoPermission.Wrap("don't get Admin token")
+ }
+
+ if _, err := s.userRpcClient.GetUserInfo(ctx, req.UserID); err != nil {
+ return nil, err
+ }
+ token, err := s.authDatabase.CreateToken(ctx, req.UserID, int(req.PlatformID))
+ if err != nil {
+ return nil, err
+ }
+ resp.Token = token
+ resp.ExpireTimeSeconds = config.Config.TokenPolicy.Expire * 24 * 60 * 60
+ return &resp, nil
+}
+
func (s *authServer) parseToken(ctx context.Context, tokensString string) (claims *tokenverify.Claims, err error) {
claims, err = tokenverify.GetClaimFromToken(tokensString, authverify.Secret())
if err != nil {
diff --git a/internal/rpc/conversation/conversaion.go b/internal/rpc/conversation/conversaion.go
index 40803089c..3317359e5 100644
--- a/internal/rpc/conversation/conversaion.go
+++ b/internal/rpc/conversation/conversaion.go
@@ -51,6 +51,11 @@ type conversationServer struct {
conversationNotificationSender *notification.ConversationNotificationSender
}
+func (c *conversationServer) GetConversationNotReceiveMessageUserIDs(ctx context.Context, req *pbconversation.GetConversationNotReceiveMessageUserIDsReq) (*pbconversation.GetConversationNotReceiveMessageUserIDsResp, error) {
+ //TODO implement me
+ panic("implement me")
+}
+
func Start(client discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) error {
rdb, err := cache.NewRedis()
if err != nil {
diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go
index abc271651..1d068b1b2 100644
--- a/internal/rpc/group/group.go
+++ b/internal/rpc/group/group.go
@@ -108,6 +108,11 @@ type groupServer struct {
msgRpcClient rpcclient.MessageRpcClient
}
+func (s *groupServer) GetJoinedGroupIDs(ctx context.Context, req *pbgroup.GetJoinedGroupIDsReq) (*pbgroup.GetJoinedGroupIDsResp, error) {
+ //TODO implement me
+ panic("implement me")
+}
+
func (s *groupServer) NotificationUserInfoUpdate(ctx context.Context, req *pbgroup.NotificationUserInfoUpdateReq) (*pbgroup.NotificationUserInfoUpdateResp, error) {
defer log.ZDebug(ctx, "NotificationUserInfoUpdate return")
members, err := s.db.FindGroupMemberUser(ctx, nil, req.UserID)
diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go
index e5567f436..6f9e2949f 100644
--- a/internal/rpc/user/user.go
+++ b/internal/rpc/user/user.go
@@ -61,6 +61,11 @@ type userServer struct {
RegisterCenter registry.SvcDiscoveryRegistry
}
+func (s *userServer) GetGroupOnlineUser(ctx context.Context, req *pbuser.GetGroupOnlineUserReq) (*pbuser.GetGroupOnlineUserResp, error) {
+ //TODO implement me
+ panic("implement me")
+}
+
func Start(client registry.SvcDiscoveryRegistry, server *grpc.Server) error {
rdb, err := cache.NewRedis()
if err != nil {
diff --git a/pkg/authverify/token.go b/pkg/authverify/token.go
index 97bb03391..b951bf219 100644
--- a/pkg/authverify/token.go
+++ b/pkg/authverify/token.go
@@ -48,8 +48,7 @@ func CheckAccessV3(ctx context.Context, ownerUserID string) (err error) {
}
func IsAppManagerUid(ctx context.Context) bool {
- return (len(config.Config.Manager.UserID) > 0 && utils.IsContain(mcontext.GetOpUserID(ctx), config.Config.Manager.UserID)) ||
- utils.IsContain(mcontext.GetOpUserID(ctx), config.Config.IMAdmin.UserID)
+ return (len(config.Config.Manager.UserID) > 0 && utils.IsContain(mcontext.GetOpUserID(ctx), config.Config.Manager.UserID)) || utils.IsContain(mcontext.GetOpUserID(ctx), config.Config.IMAdmin.UserID)
}
func CheckAdmin(ctx context.Context) error {
From 0865eb65b1eaed0b5a699c8571255b3fd6fb09a3 Mon Sep 17 00:00:00 2001
From: Xinwei Xiong <3293172751NSS@gmail.com>
Date: Mon, 5 Feb 2024 10:08:55 +0800
Subject: [PATCH 4/9] fix: kill 10 process optimization (#1883)
---
scripts/lib/util.sh | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/scripts/lib/util.sh b/scripts/lib/util.sh
index eaefaf22a..cace53645 100755
--- a/scripts/lib/util.sh
+++ b/scripts/lib/util.sh
@@ -486,7 +486,7 @@ openim::util::stop_services_on_ports() {
local pid=$(echo $line | awk '{print $2}')
# Try to stop the service by killing its process.
- if kill -TERM $pid; then
+ if kill -10 $pid; then
stopped+=($port)
else
not_stopped+=($port)
@@ -563,7 +563,7 @@ openim::util::stop_services_with_name() {
# If there's a Process ID, it means the service with the name is running.
if [[ -n $pid ]]; then
# Try to stop the service by killing its process.
- if kill -TERM $pid 2>/dev/null; then
+ if kill -10 $pid 2>/dev/null; then
stopped_this_time=true
fi
fi
@@ -1722,7 +1722,7 @@ openim::util::stop_services_on_ports() {
local pid=$(echo $line | awk '{print $2}')
# Try to stop the service by killing its process.
- if kill -TERM $pid; then
+ if kill -10 $pid; then
stopped+=($port)
else
not_stopped+=($port)
@@ -1799,7 +1799,7 @@ openim::util::stop_services_with_name() {
# If there's a Process ID, it means the service with the name is running.
if [[ -n $pid ]]; then
# Try to stop the service by killing its process.
- if kill -TERM $pid 2>/dev/null; then
+ if kill -10 $pid 2>/dev/null; then
stopped_this_time=true
fi
fi
From 31381935f188210bc905d8cbe5c0959b8584fb61 Mon Sep 17 00:00:00 2001
From: "fengyun.rui"
Date: Mon, 5 Feb 2024 10:37:53 +0800
Subject: [PATCH 5/9] fix: graceful exit for kafka consumer of msgtransfer
(#1483)
* fix: graceful exit for kafka consumer of msgtransfer
Signed-off-by: rfyiamcool
* Update init.go
* Update init.go
---------
Signed-off-by: rfyiamcool
Co-authored-by: OpenIM-Gordon <46924906+FGadvancer@users.noreply.github.com>
---
internal/msgtransfer/init.go | 74 +++++++++++++++----
.../msgtransfer/online_history_msg_handler.go | 58 +++++++++++----
pkg/common/kafka/consumer_group.go | 27 +++++--
3 files changed, 124 insertions(+), 35 deletions(-)
diff --git a/internal/msgtransfer/init.go b/internal/msgtransfer/init.go
index 83ec00749..65a6b1935 100644
--- a/internal/msgtransfer/init.go
+++ b/internal/msgtransfer/init.go
@@ -18,7 +18,10 @@ import (
"context"
"errors"
"fmt"
- "log"
+ "os"
+ "os/signal"
+ "syscall"
+ "time"
"net/http"
"sync"
@@ -30,7 +33,7 @@ import (
"github.com/prometheus/client_golang/prometheus/promhttp"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
-
+ "github.com/OpenIMSDK/tools/log"
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/cache"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/controller"
@@ -51,11 +54,13 @@ func StartTransfer(prometheusPort int) error {
if err != nil {
return err
}
+
mongo, err := unrelation.NewMongo()
if err != nil {
return err
}
- if err := mongo.CreateMsgIndex(); err != nil {
+
+ if err = mongo.CreateMsgIndex(); err != nil {
return err
}
client, err := kdisc.NewDiscoveryRegister(config.Config.Envs.Discovery)
@@ -66,6 +71,7 @@ func StartTransfer(prometheusPort int) error {
if err != nil {
return err
}
+
if err := client.CreateRpcRootNodes(config.Config.GetServiceNames()); err != nil {
return err
}
@@ -103,26 +109,62 @@ func NewMsgTransfer(msgDatabase controller.CommonMsgDatabase, conversationRpcCli
func (m *MsgTransfer) Start(prometheusPort int) error {
ctx := context.Background()
- var wg sync.WaitGroup
- wg.Add(1)
fmt.Println("start msg transfer", "prometheusPort:", prometheusPort)
if prometheusPort <= 0 {
return errs.Wrap(errors.New("prometheusPort not correct"))
}
- go m.historyCH.historyConsumerGroup.RegisterHandleAndConsumer(ctx, m.historyCH)
- go m.historyMongoCH.historyConsumerGroup.RegisterHandleAndConsumer(ctx, m.historyMongoCH)
+ var wg sync.WaitGroup
+
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+
+ m.historyCH.historyConsumerGroup.RegisterHandleAndConsumer(ctx, m.historyCH)
+ }()
+
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+
+ m.historyMongoCH.historyConsumerGroup.RegisterHandleAndConsumer(ctx, m.historyMongoCH)
+ }()
if config.Config.Prometheus.Enable {
- reg := prometheus.NewRegistry()
- reg.MustRegister(
- collectors.NewGoCollector(),
- )
- reg.MustRegister(prommetrics.GetGrpcCusMetrics("Transfer")...)
- http.Handle("/metrics", promhttp.HandlerFor(reg, promhttp.HandlerOpts{Registry: reg}))
- log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", prometheusPort), nil))
+ go func() {
+ proreg := prometheus.NewRegistry()
+ proreg.MustRegister(
+ collectors.NewGoCollector(),
+ )
+ proreg.MustRegister(prommetrics.GetGrpcCusMetrics("Transfer")...)
+ http.Handle("/metrics", promhttp.HandlerFor(proreg, promhttp.HandlerOpts{Registry: proreg}))
+ err := http.ListenAndServe(fmt.Sprintf(":%d", prometheusPort), nil)
+ if err != nil && err != http.ErrServerClosed {
+ panic(err)
+ }
+ }()
}
- ////////////////////////////////////////
- wg.Wait()
+
+ sigs := make(chan os.Signal, 1)
+ signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
+ <-sigs
+
+ // graceful close kafka client.
+ go m.historyCH.historyConsumerGroup.Close()
+ go m.historyMongoCH.historyConsumerGroup.Close()
+
+ done := make(chan struct{}, 1)
+ go func() {
+ wg.Wait()
+ close(done)
+ }()
+
+ select {
+ case <-done:
+ log.ZInfo(context.Background(), "msgtrasfer exit successfully")
+ case <-time.After(15 * time.Second):
+ log.ZError(context.Background(), "msgtransfer force to exit, timeout 15s", nil)
+ }
+
return nil
}
diff --git a/internal/msgtransfer/online_history_msg_handler.go b/internal/msgtransfer/online_history_msg_handler.go
index 35af330c9..6678715d4 100644
--- a/internal/msgtransfer/online_history_msg_handler.go
+++ b/internal/msgtransfer/online_history_msg_handler.go
@@ -19,6 +19,7 @@ import (
"strconv"
"strings"
"sync"
+ "sync/atomic"
"time"
"github.com/openimsdk/open-im-server/v3/pkg/msgprocessor"
@@ -431,16 +432,29 @@ func (och *OnlineHistoryRedisConsumerHandler) ConsumeClaim(
log.ZDebug(context.Background(), "online new session msg come", "highWaterMarkOffset",
claim.HighWaterMarkOffset(), "topic", claim.Topic(), "partition", claim.Partition())
- split := 1000
- rwLock := new(sync.RWMutex)
- messages := make([]*sarama.ConsumerMessage, 0, 1000)
- ticker := time.NewTicker(time.Millisecond * 100)
+ var (
+ split = 1000
+ rwLock = new(sync.RWMutex)
+ messages = make([]*sarama.ConsumerMessage, 0, 1000)
+ ticker = time.NewTicker(time.Millisecond * 100)
+ wg = sync.WaitGroup{}
+ running = new(atomic.Bool)
+ )
+
+ wg.Add(1)
go func() {
+ defer wg.Done()
+
for {
select {
case <-ticker.C:
+ // if the buffer is empty and running is false, return loop.
if len(messages) == 0 {
+ if !running.Load() {
+ return
+ }
+
continue
}
@@ -473,17 +487,35 @@ func (och *OnlineHistoryRedisConsumerHandler) ConsumeClaim(
}
}()
- for msg := range claim.Messages() {
- if len(msg.Value) == 0 {
- continue
- }
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
- rwLock.Lock()
- messages = append(messages, msg)
- rwLock.Unlock()
+ for running.Load() {
+ select {
+ case msg, ok := <-claim.Messages():
+ if !ok {
+ running.Store(false)
+ return
+ }
- sess.MarkMessage(msg, "")
- }
+ if len(msg.Value) == 0 {
+ continue
+ }
+
+ rwLock.Lock()
+ messages = append(messages, msg)
+ rwLock.Unlock()
+
+ sess.MarkMessage(msg, "")
+
+ case <-sess.Context().Done():
+ running.Store(false)
+ return
+ }
+ }
+ }()
+ wg.Wait()
return nil
}
diff --git a/pkg/common/kafka/consumer_group.go b/pkg/common/kafka/consumer_group.go
index 6e6f83fca..3f444cc1f 100644
--- a/pkg/common/kafka/consumer_group.go
+++ b/pkg/common/kafka/consumer_group.go
@@ -16,18 +16,18 @@ package kafka
import (
"context"
+ "errors"
+ "github.com/IBM/sarama"
"strings"
-
"github.com/OpenIMSDK/tools/errs"
-
"github.com/OpenIMSDK/tools/log"
-
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
-
- "github.com/IBM/sarama"
)
type MConsumerGroup struct {
+ ctx context.Context
+ cancel context.CancelFunc
+
sarama.ConsumerGroup
groupID string
topics []string
@@ -54,7 +54,10 @@ func NewMConsumerGroup(consumerConfig *MConsumerGroupConfig, topics, addrs []str
if err != nil {
return nil, errs.Wrap(err, strings.Join(topics, ","), strings.Join(addrs, ","), groupID, config.Config.Kafka.Username, config.Config.Kafka.Password)
}
+
+ ctx, cancel := context.WithCancel(context.Background())
return &MConsumerGroup{
+ ctx, cancel,
consumerGroup,
groupID,
topics,
@@ -68,7 +71,14 @@ func (mc *MConsumerGroup) GetContextFromMsg(cMsg *sarama.ConsumerMessage) contex
func (mc *MConsumerGroup) RegisterHandleAndConsumer(ctx context.Context, handler sarama.ConsumerGroupHandler) {
log.ZDebug(context.Background(), "register consumer group", "groupID", mc.groupID)
for {
- err := mc.ConsumerGroup.Consume(ctx, mc.topics, handler)
+ err := mc.ConsumerGroup.Consume(mc.ctx, mc.topics, handler)
+ if errors.Is(err, sarama.ErrClosedConsumerGroup) {
+ return
+ }
+ if mc.ctx.Err() != nil {
+ return
+ }
+
if err != nil {
log.ZWarn(ctx, "consume err", err, "topic", mc.topics, "groupID", mc.groupID)
}
@@ -77,3 +87,8 @@ func (mc *MConsumerGroup) RegisterHandleAndConsumer(ctx context.Context, handler
}
}
}
+
+func (mc *MConsumerGroup) Close() {
+ mc.cancel()
+ mc.ConsumerGroup.Close()
+}
From 6c7b94f03f271451e7e7348ab998928deb17861a Mon Sep 17 00:00:00 2001
From: OpenIM Bot <124379614+kubbot@users.noreply.github.com>
Date: Mon, 5 Feb 2024 17:45:45 +0800
Subject: [PATCH 6/9] =?UTF-8?q?[Auto=20PR=20=F0=9F=A4=96]=20Bump=20League?=
=?UTF-8?q?=20Patch=20auto=20PR=20(#1884)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* cicd: bump League Patch
* Update project-progress.yml
---------
Co-authored-by: Xinwei Xiong <3293172751NSS@gmail.com>
---
.github/workflows/project-progress.yml | 5 ++++-
internal/rpc/conversation/conversaion.go | 5 ++++-
pkg/authverify/token.go | 3 ++-
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/project-progress.yml b/.github/workflows/project-progress.yml
index 3ec8b7b1f..0b071b3a8 100644
--- a/.github/workflows/project-progress.yml
+++ b/.github/workflows/project-progress.yml
@@ -24,6 +24,9 @@ on:
pull_request:
types:
- assigned
+ branches-ignore:
+ - 'asf-auto-updates'
+ - 'ignore'
jobs:
move-assigned-card:
@@ -33,4 +36,4 @@ jobs:
with:
project: openim-powerful
column: In Progress
- repo-token: ${{ secrets.BOT_GITHUB_TOKEN }}
\ No newline at end of file
+ repo-token: ${{ secrets.BOT_GITHUB_TOKEN }}
diff --git a/internal/rpc/conversation/conversaion.go b/internal/rpc/conversation/conversaion.go
index 3317359e5..8558a23ea 100644
--- a/internal/rpc/conversation/conversaion.go
+++ b/internal/rpc/conversation/conversaion.go
@@ -51,7 +51,10 @@ type conversationServer struct {
conversationNotificationSender *notification.ConversationNotificationSender
}
-func (c *conversationServer) GetConversationNotReceiveMessageUserIDs(ctx context.Context, req *pbconversation.GetConversationNotReceiveMessageUserIDsReq) (*pbconversation.GetConversationNotReceiveMessageUserIDsResp, error) {
+func (c *conversationServer) GetConversationNotReceiveMessageUserIDs(
+ ctx context.Context,
+ req *pbconversation.GetConversationNotReceiveMessageUserIDsReq,
+) (*pbconversation.GetConversationNotReceiveMessageUserIDsResp, error) {
//TODO implement me
panic("implement me")
}
diff --git a/pkg/authverify/token.go b/pkg/authverify/token.go
index b951bf219..97bb03391 100644
--- a/pkg/authverify/token.go
+++ b/pkg/authverify/token.go
@@ -48,7 +48,8 @@ func CheckAccessV3(ctx context.Context, ownerUserID string) (err error) {
}
func IsAppManagerUid(ctx context.Context) bool {
- return (len(config.Config.Manager.UserID) > 0 && utils.IsContain(mcontext.GetOpUserID(ctx), config.Config.Manager.UserID)) || utils.IsContain(mcontext.GetOpUserID(ctx), config.Config.IMAdmin.UserID)
+ return (len(config.Config.Manager.UserID) > 0 && utils.IsContain(mcontext.GetOpUserID(ctx), config.Config.Manager.UserID)) ||
+ utils.IsContain(mcontext.GetOpUserID(ctx), config.Config.IMAdmin.UserID)
}
func CheckAdmin(ctx context.Context) error {
From 7862fa50038e4c4737f1ca50a0aa9b77da3b842f Mon Sep 17 00:00:00 2001
From: xuan <146319162+wxuanF@users.noreply.github.com>
Date: Tue, 6 Feb 2024 14:11:27 +0800
Subject: [PATCH 7/9] docs: add README.md JP (#1891)
* docs: README JP
Signed-off-by: wxuanF <2569456943@qq.com>
* Update openimci.yml
* Update golangci-lint.yml
* docs: README JP
Signed-off-by: wxuanF <2569456943@qq.com>
* docs: README JP
Signed-off-by: wxuanF <2569456943@qq.com>
* docs: README JP
Signed-off-by: wxuanF <2569456943@qq.com>
---------
Signed-off-by: wxuanF <2569456943@qq.com>
Co-authored-by: Xinwei Xiong <3293172751NSS@gmail.com>
---
.github/workflows/golangci-lint.yml | 4 +-
.github/workflows/openimci.yml | 3 -
docs/readme/README-JP.md | 190 ++++++++++++++++++++++++++++
3 files changed, 193 insertions(+), 4 deletions(-)
create mode 100644 docs/readme/README-JP.md
diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml
index 67dc5a6b8..250cb96cb 100644
--- a/.github/workflows/golangci-lint.yml
+++ b/.github/workflows/golangci-lint.yml
@@ -28,6 +28,8 @@ jobs:
with:
go-version: '1.21'
cache: false
+ - name: OpenIM Scripts Verification(make verify)
+ run: sudo make verify
- name: golangci-lint
uses: golangci/golangci-lint-action@v3.7.0
with:
@@ -47,4 +49,4 @@ jobs:
only-new-issues: true
# Optional:The mode to install golangci-lint. It can be 'binary' or 'goinstall'.
- # install-mode: "goinstall"
\ No newline at end of file
+ # install-mode: "goinstall"
diff --git a/.github/workflows/openimci.yml b/.github/workflows/openimci.yml
index 8aa38d941..2d42e3155 100644
--- a/.github/workflows/openimci.yml
+++ b/.github/workflows/openimci.yml
@@ -70,9 +70,6 @@ jobs:
version: '3.x' # If available, use the latest major version that's compatible
repo-token: ${{ secrets.GITHUB_TOKEN }}
- - name: OpenIM Scripts Verification(make verify)
- run: sudo make verify
-
- name: Module Operations
run: |
sudo make tidy
diff --git a/docs/readme/README-JP.md b/docs/readme/README-JP.md
new file mode 100644
index 000000000..c1b0eabf5
--- /dev/null
+++ b/docs/readme/README-JP.md
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+[](https://github.com/openimsdk/open-im-server/stargazers)
+[](https://github.com/openimsdk/open-im-server/network/members)
+[](https://app.codecov.io/gh/openimsdk/open-im-server)
+[](https://goreportcard.com/report/github.com/openimsdk/open-im-server)
+[](https://pkg.go.dev/github.com/openimsdk/open-im-server/v3)
+[](https://github.com/openimsdk/open-im-server/blob/main/LICENSE)
+[](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)
+[](https://www.bestpractices.dev/projects/8045)
+[](https://github.com/openimsdk/open-im-server/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22good+first+issue%22)
+[](https://golang.org/)
+
+
+
+ Englist ·
+ 中文 ·
+ Українська ·
+ Česky ·
+ Magyar ·
+ Español ·
+ فارسی ·
+ Français ·
+ Deutsch ·
+ Polski ·
+ Indonesian ·
+ Suomi ·
+ മലയാളം ·
+ 日本語 ·
+ Nederlands ·
+ Italiano ·
+ Русский ·
+ Português (Brasil) ·
+ Esperanto ·
+ 한국어 ·
+ العربي ·
+ Tiếng Việt ·
+ Dansk ·
+ Ελληνικά ·
+ Türkçe
+
+
+
+
+
+
+
+
+## Ⓜ️ OpenIMについて
+
+OpenIMは、アプリケーション内でチャット、音声通話、通知、AIチャットボットなどの通信機能を統合するために特別に設計されたサービスプラットフォームです。一連の強力なAPIとWebhooksを提供することで、開発者はアプリケーションに簡単にこれらの通信機能を統合できます。OpenIM自体は独立したチャットアプリではなく、アプリケーションにサポートを提供し、豊富な通信機能を実現するプラットフォームです。以下の図は、AppServer、AppClient、OpenIMServer、OpenIMSDK間の相互作用を示しています。
+
+
+
+
+
+## 🚀 OpenIMSDKについて
+
+ **OpenIMSDK**は、**OpenIMServer**用に設計されたIM SDKで、クライアントアプリケーションに組み込むためのものです。主な機能とモジュールは以下の通りです:
+
++ 🌟 主な機能:
+
+ - 📦 ローカルストレージ
+ - 🔔 リスナーコールバック
+ - 🛡️ APIのラッピング
+ - 🌐 接続管理
+
+ ## 📚 主なモジュール:
+
+ 1. 🚀 初初期化とログイン
+ 2. 👤 ユーザー管理
+ 3. 👫 友達管理
+ 4. 🤖 グループ機能
+ 5. 💬 会話処理
+
+Golangを使用して構築され、クロスプラットフォームの導入をサポートし、すべてのプラットフォームで一貫したアクセス体験を提供します。
+
+👉 **[GO SDKを探索する](https://github.com/openimsdk/openim-sdk-core)**
+
+## 🌐 OpenIMServerについて
+
++ **OpenIMServer** には以下の特徴があります:
+ - 🌐 マイクロサービスアーキテクチャ:クラスターモードをサポートし、ゲートウェイ(gateway)と複数のrpcサービスを含みます。
+ - 🚀 多様なデプロイメント方法:ソースコード、kubernetes、またはdockerでのデプロイメントをサポートします。
+ - 海量ユーザーサポート:十万人規模の超大型グループ、千万人のユーザー、および百億のメッセージ
+
+### 強化されたビジネス機能:
+
++ **REST API**:OpenIMServerは、ビジネスシステム用のREST APIを提供しており、ビジネスにさらに多くの機能を提供することを目指しています。たとえば、バックエンドインターフェースを通じてグループを作成したり、プッシュメッセージを送信したりするなどです。
++ **Webhooks**:OpenIMServerは、より多くのビジネス形態を拡張するためのコールバック機能を提供しています。コールバックとは、特定のイベントが発生する前後に、OpenIMServerがビジネスサーバーにリクエストを送信することを意味します。例えば、メッセージ送信の前後のコールバックなどです。
+
+👉 **[もっと詳しく知る](https://docs.openim.io/guides/introduction/product)**
+
+## :building_construction: 全体のアーキテクチャ
+
+Open-IM-Serverの機能の核心に迫るために、アーキテクチャダイアグラムをご覧ください。
+
+
+
+## :rocket: クイックスタート
+
+iOS/Android/H5/PC/Webでのオンライン体験:
+
+👉 **[OpenIM online demo](https://www.openim.io/zh/commercial)**
+
+🤲 ユーザー体験を容易にするために、私たちは様々なデプロイメントソリューションを提供しています。以下のリストから、ご自身のデプロイメント方法を選択できます:
+
++ **[ソースコードデプロイメントガイド](https://docs.openim.io/guides/gettingStarted/imSourceCodeDeployment)**
++ **[Docker デプロイメントガイド](https://docs.openim.io/guides/gettingStarted/dockerCompose)**
++ **[Kubernetes デプロイメントガイド](https://docs.openim.io/guides/gettingStarted/k8s-deployment)**
++ **[Mac 開発者向けデプロイメントガイド](https://docs.openim.io/guides/gettingstarted/mac-deployment-guide)**
+
+## :hammer_and_wrench: OpenIMの開発を始める
+
+[](https://vscode.dev/github/openimsdk/open-im-server)
+
+OpenIM 私たちの目標は、トップレベルのオープンソースコミュニティを構築することです。[コミュニティリポジトリ](https://github.com/OpenIMSDK/community)には一連の基準があります。
+
+このOpen-IM-Serverリポジトリに貢献したい場合は、[貢献者ドキュメントをお読みください](https://github.com/openimsdk/open-im-server/blob/main/CONTRIBUTING.md)。
+
+始める前に、変更に必要があることを確認してください。最良の方法は、[新しいディスカッション](https://github.com/openimsdk/open-im-server/discussions/new/choose)や[Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)での通信を作成すること、または問題を発見した場合は、まずそれを[報告](https://github.com/openimsdk/open-im-server/issues/new/choose)することです。
+
+- [OpenIM APIリファレンス](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/api.md)
+- [OpenIM Bash ロギング](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/bash-log.md)
+- [OpenIM CI/CD アクション](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/cicd-actions.md)
+- [OpenIM コード規約](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/code-conventions.md)
+- [OpenIM コミットガイドライン](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/commit.md)
+- [OpenIM 開発ガイド](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/development.md)
+- [OpenIM ディレクトリ構造](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/directory.md)
+- [OpenIM 環境設定](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/environment.md)
+- [OpenIM エラーコードリファレンス](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/error-code.md)
+- [OpenIM Git ワークフロー](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/git-workflow.md)
+- [OpenIM Git チェリーピックガイド](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/gitcherry-pick.md)
+- [OpenIM GitHub ワークフロー](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/github-workflow.md)
+- [OpenIM Go コード基準](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/go-code.md)
+- [OpenIM 画像ガイドライン](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/images.md)
+- [OpenIM 初期設定](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/init-config.md)
+- [OpenIM Docker インストールガイド](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/install-docker.md)
+- [OpenIM Linux システムインストール](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/install-openim-linux-system.md)
+- [OpenIM Linux 開発ガイド](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/linux-development.md)
+- [OpenIM ローカルアクションガイド](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/local-actions.md)
+- [OpenIM ロギング規約](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/logging.md)
+- [OpenIM オフラインデプロイメント](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/offline-deployment.md)
+- [OpenIM Protoc ツール](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/protoc-tools.md)
+- [OpenIM テスティングガイド](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/test.md)
+- [OpenIM ユーティリティGo](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/util-go.md)
+- [OpenIM Makefile ユーティリティ](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/util-makefile.md)
+- [OpenIM スクリプトユーティリティ](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/util-scripts.md)
+- [OpenIM バージョニング](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/version.md)
+- [バックエンド管理とモニターデプロイメント](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/prometheus-grafana.md)
+- [OpenIM用Mac開発者デプロイメントガイド](https://github.com/openimsdk/open-im-server/tree/main/docs/contrib/mac-developer-deployment-guide.md)
+
+
+## :busts_in_silhouette: コミュニティ
+
++ 📚 [OpenIM コミュニティ](https://github.com/OpenIMSDK/community)
++ 💕 [OpenIM 興味グループ](https://github.com/Openim-sigs)
++ 🚀 [私たちのSlackコミュニティに参加する](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)
++ :eyes: [私たちのWeChat(微信群)に参加する](https://openim-1253691595.cos.ap-nanjing.myqcloud.com/WechatIMG20.jpeg)
+
+## :calendar: コミュニティミーティング
+
+私たちは、誰もがコミュニティに参加し、コードに貢献してもらいたいと考えています。私たちは、ギフトや報酬を提供し、毎週木曜日の夜に参加していただくことを歓迎します。
+
+私たちの会議は[OpenIM Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)🎯で行われます。そこでOpen-IM-Serverパイプラインを検索して参加できます。
+
+
+私たちは[隔週の会議](https://github.com/orgs/OpenIMSDK/discussions/categories/meeting)のメモを[GitHubディスカッション](https://github.com/openimsdk/open-im-server/discussions/categories/meeting)に記録しています。歴史的な会議のメモや会議のリプレイは[Google Docs📑](https://docs.google.com/document/d/1nx8MDpuG74NASx081JcCpxPgDITNTpIIos0DS6Vr9GU/edit?usp=sharing)で利用可能です。
+
+## :eyes: OpenIMを使用している人たち
+
+プロジェクトユーザーのリストについては、[ユーザーケーススタディ](https://github.com/OpenIMSDK/community/blob/main/ADOPTERS.md)ページをご覧ください。[コメント📝](https://github.com/openimsdk/open-im-server/issues/379)を残して、あなたの使用例を共有することを躊躇しないでください。
+
+## :page_facing_up: ライセンス
+
+OpenIMはApache 2.0ライセンスの下でライセンスされています。完全なライセンステキストについては、[LICENSE](https://github.com/openimsdk/open-im-server/tree/main/LICENSE)を参照してください。
+
+このリポジトリに表示される[OpenIM](https://github.com/openimsdk/open-im-server)ロゴ、そのバリエーション、およびアニメーションバージョン([assets/logo](./assets/logo)および[assets/logo-gif](assets/logo-gif)ディレクトリ内)は、著作権法によって保護されています。
+
+## 🔮 貢献者の皆様に感謝します!
+
+
+
+
\ No newline at end of file
From 5cb69b874207713338e66af8c4a410fcee10cd47 Mon Sep 17 00:00:00 2001
From: OpenIM Bot <124379614+kubbot@users.noreply.github.com>
Date: Tue, 6 Feb 2024 15:51:25 +0800
Subject: [PATCH 8/9] cicd: bump League Patch (#1892)
---
internal/msgtransfer/init.go | 7 ++++---
pkg/common/kafka/consumer_group.go | 4 +++-
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/internal/msgtransfer/init.go b/internal/msgtransfer/init.go
index 65a6b1935..65518c324 100644
--- a/internal/msgtransfer/init.go
+++ b/internal/msgtransfer/init.go
@@ -18,22 +18,23 @@ import (
"context"
"errors"
"fmt"
+ "net/http"
"os"
"os/signal"
+ "sync"
"syscall"
"time"
- "net/http"
- "sync"
"github.com/OpenIMSDK/tools/errs"
+ "github.com/OpenIMSDK/tools/log"
"github.com/OpenIMSDK/tools/mw"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors"
"github.com/prometheus/client_golang/prometheus/promhttp"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
- "github.com/OpenIMSDK/tools/log"
+
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/cache"
"github.com/openimsdk/open-im-server/v3/pkg/common/db/controller"
diff --git a/pkg/common/kafka/consumer_group.go b/pkg/common/kafka/consumer_group.go
index 3f444cc1f..5bff50d88 100644
--- a/pkg/common/kafka/consumer_group.go
+++ b/pkg/common/kafka/consumer_group.go
@@ -17,10 +17,12 @@ package kafka
import (
"context"
"errors"
- "github.com/IBM/sarama"
"strings"
+
+ "github.com/IBM/sarama"
"github.com/OpenIMSDK/tools/errs"
"github.com/OpenIMSDK/tools/log"
+
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
)
From 49610b56040ca57e334a55774037b47b118c7eb0 Mon Sep 17 00:00:00 2001
From: Xinwei Xiong <3293172751NSS@gmail.com>
Date: Tue, 6 Feb 2024 15:53:03 +0800
Subject: [PATCH 9/9] Fix Script Error and Enhance Code Robustness and Details
(#1890)
* feat: add openim deployment tactics
Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>
* feat: add openim deployment tactics
Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>
* fix: set openim admin chat code
Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>
* fix: set openim admin chat code
Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>
* fix: fix openim msgtransfer code
* fix: fix openim msgtransfer code
---------
Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>
---
.devcontainer/README.md | 140 --------------------------
.devcontainer/devcontainer.json | 72 -------------
cmd/openim-api/main.go | 1 +
pkg/common/cmd/api.go | 3 -
pkg/common/cmd/msg_transfer.go | 3 +-
pkg/common/cmd/root.go | 5 +-
pkg/common/config/parse.go | 2 +-
scripts/install/openim-api.sh | 46 ++++-----
scripts/install/openim-crontask.sh | 2 +-
scripts/install/openim-msggateway.sh | 2 +-
scripts/install/openim-msgtransfer.sh | 16 +--
scripts/install/openim-push.sh | 2 +-
scripts/install/openim-rpc.sh | 2 +-
scripts/lib/util.sh | 6 +-
scripts/stop-all.sh | 9 +-
15 files changed, 43 insertions(+), 268 deletions(-)
delete mode 100644 .devcontainer/README.md
delete mode 100644 .devcontainer/devcontainer.json
diff --git a/.devcontainer/README.md b/.devcontainer/README.md
deleted file mode 100644
index 24778f8ee..000000000
--- a/.devcontainer/README.md
+++ /dev/null
@@ -1,140 +0,0 @@
-# OpenIM - OSS Development Container
-
-[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/openimsdk/open-im-server)
-
-This repository includes configuration for a development container for working with OpenIM - OSS in a local container or using [GitHub Codespaces](https://github.com/features/codespaces).
-
-> **Tip:** The default VNC password is `openIM123`. The VNC server runs on port `5901` and a web client is available on port `11001`, openim-admin on port `11002`.
-
-## Quick start - local
-
-If you already have VS Code and Docker installed, you can click the badge above or [here](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/openimsdk/open-im-server) to get started. Clicking these links will cause VS Code to automatically install the Dev Containers extension if needed, clone the source code into a container volume, and spin up a dev container for use.
-
-1. Install Docker Desktop or Docker for Linux on your local machine. (See [docs](https://aka.ms/vscode-remote/containers/getting-started) for additional details.)
-
-2. **Important**: Docker needs at least **4 Cores and 8 GB of RAM** to run a full build with **9 GB of RAM** being recommended. If you are on macOS, or are using the old Hyper-V engine for Windows, update these values for Docker Desktop by right-clicking on the Docker status bar item and going to **Preferences/Settings > Resources > Advanced**.
-
- > **Note:** The [Resource Monitor](https://marketplace.visualstudio.com/items?itemName=mutantdino.resourcemonitor) extension is included in the container so you can keep an eye on CPU/Memory in the status bar.
-
-3. Install [Visual Studio Code Stable](https://code.visualstudio.com/) or [Insiders](https://code.visualstudio.com/insiders/) and the [Dev Containers](https://aka.ms/vscode-remote/download/containers) extension.
-
- 
-
- > **Note:** The Dev Containers extension requires the Visual Studio Code distribution of OpenIM - OSS. See the [FAQ](https://aka.ms/vscode-remote/faq/license) for details.
-
-4. Press Ctrl/Cmd + Shift + P or F1 and select **Dev Containers: Clone Repository in Container Volume...**.
-
- > **Tip:** While you can use your local source tree instead, operations like `yarn install` can be slow on macOS or when using the Hyper-V engine on Windows. We recommend using the WSL filesystem on Windows or the "clone repository in container" approach on Windows and macOS instead since it uses "named volume" rather than the local filesystem.
-
-5. Type `https://github.com/openimsdk/open-im-server` (or a branch or PR URL) in the input box and press Enter.
-
-6. After the container is running:
- 1. If you have the `DISPLAY` or `WAYLAND_DISPLAY` environment variables set locally (or in WSL on Windows), desktop apps in the container will be shown in local windows.
- 2. If these are not set, open a web browser and go to [http://localhost:11001](http://localhost:11001), or use a [VNC Viewer][def] to connect to `localhost:11001` and enter `vscode` as the password. Anything you start in VS Code, or the integrated terminal, will appear here.
-
-Next: **[Try it out!](#try-it)**
-
-## Quick start - GitHub Codespaces
-
-1. From the [openimsdk/open-im-server GitHub repository](https://github.com/openimsdk/open-im-server), click on the **Code** dropdown, select **Open with Codespaces**, and then click on **New codespace**. If prompted, select the **Standard** machine size (which is also the default).
-
- > **Note:** You will not see these options within GitHub if you are not in the Codespaces beta.
-
-2. After the codespace is up and running in your browser, press Ctrl/Cmd + Shift + P or F1 and select **Ports: Focus on Ports View**.
-
-3. You should see **VNC web client (11001)** under in the list of ports. Select the line and click on the globe icon to open it in a browser tab.
-
- > **Tip:** If you do not see the port, Ctrl/Cmd + Shift + P or F1, select **Forward a Port** and enter port `11001`.
-
-4. In the new tab, you should see noVNC. Click **Connect** and enter `vscode` as the password.
-
-Anything you start in VS Code, or the integrated terminal, will appear here.
-
-Next: **[Try it out!](#try-it)**
-
-### Using VS Code with GitHub Codespaces
-
-You may see improved VNC responsiveness when accessing a codespace from VS Code client since you can use a [VNC Viewer][def]. Here's how to do it.
-
-1. Install [Visual Studio Code Stable](https://code.visualstudio.com/) or [Insiders](https://code.visualstudio.com/insiders/) and the the [GitHub Codespaces extension](https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces).
-
- > **Note:** The GitHub Codespaces extension requires the Visual Studio Code distribution of OpenIM - OSS.
-
-2. After the VS Code is up and running, press Ctrl/Cmd + Shift + P or F1, choose **Codespaces: Create New Codespace**, and use the following settings:
-
-- `openimsdk/open-im-server` for the repository.
-- Select any branch (e.g. **main**) - you can select a different one later.
-- Choose **Standard** (4-core, 8GB) as the size.
-
-3. After you have connected to the codespace, you can use a [VNC Viewer][def] to connect to `localhost:5901` and enter `vscode` as the password.
-
- > **Tip:** You may also need change your VNC client's **Picture Quality** setting to **High** to get a full color desktop.
-
-4. Anything you start in VS Code, or the integrated terminal, will appear here.
-
-Next: **[Try it out!](#try-it)**
-
-## Try it
-
-This container uses the [Fluxbox](http://fluxbox.org/) window manager to keep things lean. **Right-click on the desktop** to see menu options. It works with GNOME and GTK applications, so other tools can be installed if needed.
-
- > **Note:** You can also set the resolution from the command line by typing `set-resolution`.
-
-To start working with OpenIM - OSS, follow these steps:
-
-1. In your local VS Code client, open a terminal (Ctrl/Cmd + Shift + \`) and type the following commands:
-
- ```bash
- yarn install
- bash scripts/code.sh
- ```
-
-2. After the build is complete, open a web browser or a [VNC Viewer][def] to connect to the desktop environment as described in the quick start and enter `vscode` as the password.
-
-3. You should now see OpenIM - OSS!
-
-Next, let's try debugging.
-
-1. Shut down OpenIM - OSS by clicking the box in the upper right corner of the OpenIM - OSS window through your browser or VNC viewer.
-
-2. Go to your local VS Code client, and use the **Run / Debug** view to launch the **VS Code** configuration. (Typically the default, so you can likely just press F5).
-
- > **Note:** If launching times out, you can increase the value of `timeout` in the "VS Code", "Attach Main Process", "Attach Extension Host", and "Attach to Shared Process" configurations in [launch.json](../../.vscode/launch.json). However, running `./scripts/code.sh` first will set up Electron which will usually solve timeout issues.
-
-3. After a bit, OpenIM - OSS will appear with the debugger attached!
-
-Enjoy!
-
-
-### Dotfiles
-
-Dotfiles are files and folders on Unix-like systems starting with `.` that control the configuration of applications and shells on your system. You can store and manage your dotfiles in a repository on GitHub. For advice and tutorials about what to include in your dotfiles repository, see [GitHub does dotfiles](https://dotfiles.github.io/).
-
-Your dotfiles repository might include your shell aliases and preferences, any tools you want to install, or any other codespace personalization you want to make.
-
-You can configure GitHub Codespaces to use dotfiles from any repository you own by selecting that repository in your [personal GitHub Codespaces settings](https://github.com/settings/codespaces).
-
-When you create a new codespace, GitHub clones your selected dotfiles repository to the codespace environment, and looks for one of the following files to set up the environment.
-
-- *install.sh*
-- *install*
-- *bootstrap.sh*
-- *bootstrap*
-- *script/bootstrap*
-- *setup.sh*
-- *setup*
-- *script/setup*
-
-If none of these files are found, then any files or folders in your selected dotfiles repository starting with `.` are symlinked to the codespace's `~` or `$HOME` directory.
-
-Any changes to your selected dotfiles repository will apply only to each new codespace, and do not affect any existing codespace.
-
-**Note:** Currently, Codespaces does not support personalizing the User-scoped settings for VS Code with your `dotfiles` repository. You can set default Workspace and Remote [Codespaces] settings for a specific project in the project's repository. For more information, see "[Introduction to dev containers](https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#creating-a-custom-dev-container-configuration)."
-
-In addition, you can also configure Codespaces secrets on your personal profile page at [github.com/settings/codespaces](https://github.com/settings/codespaces). Development environment secrets are environment variables that are encrypted, and they are accessible to any codespace you create using repositories that have access to these secrets.
-
-### Notes
-
-The container comes with VS Code Insiders installed. To run it from an Integrated Terminal use `VSCODE_IPC_HOOK_CLI= /usr/bin/code-insiders .`.
-
-[def]: https://www.realvnc.com/en/connect/download/viewer/
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
deleted file mode 100644
index 69a35f66a..000000000
--- a/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- // Reference Doc: https://code.visualstudio.com/remote/advancedcontainers/overview
- "name": "OpenIM Dev Environment",
- // Update the container version when you publish dev-container
- "build": { "dockerfile": "Dockerfile" },
- // Replace with uncommented line below to build your own local copy of the image
- // "dockerFile": "../docker/Dockerfile-dev",
- "remoteEnv": {
- "GO111MODULE": "on",
- "GOPROXY": "https://goproxy.cn",
- "GOSUMDB": "sum.golang.org",
- "GONOPROXY": "github.com/openimsdk",
- "GONOSUMDB": "github.com/openimsdk",
- "GOPRIVATE": "github.com/openimsdk"
- },
- "customizations": {
- "vscode": {
- "extensions": [
- "davidanson.vscode-markdownlint",
- "golang.go",
- "ms-azuretools.vscode-dapr",
- "ms-azuretools.vscode-docker",
- "ms-kubernetes-tools.vscode-kubernetes-tools"
- ],
- "settings": {
- "go.toolsManagement.checkForUpdates": "local",
- "go.useLanguageServer": true,
- "go.gopath": "/go"
- }
- }
- },
- "mounts": [
- // Mount docker-in-docker library volume
- "type=volume,source=dind-var-lib-docker,target=/var/lib/docker",
-
- // Bind mount docker socket under an alias to support docker-from-docker
- "type=bind,source=/var/run/docker.sock,target=/var/run/docker-host.sock",
-
- // Bind mount docker socket under an alias to support docker-from-docker
- // "type=bind,source=${env:HOME}${env:USERPROFILE}/.minikube/cache,target=/home/openim/.minikube/cache",
-
- // Uncomment to clone local .kube/config into devcontainer
- "type=bind,source=${env:HOME}${env:USERPROFILE}/.kube,target=/home/openim/.kube-localhost"
-
- // Uncomment to additionally clone minikube certs into devcontainer for use with .kube/config
- // "type=bind,source=${env:HOME}${env:USERPROFILE}/.minikube,target=/home/openim/.minikube-localhost"
- ],
- // Always run image-defined default command
- "overrideCommand": false,
- // On Linux, this will prevent new files getting created as root, but you
- // may need to update the USER_UID and USER_GID in docker/Dockerfile-dev
- // to match your user if not 1000.
- // "remoteUser": "openimsdk",
- "runArgs": [
- // Enable ptrace-based debugging for go
- "--cap-add=SYS_PTRACE",
- "--security-opt",
- "seccomp=unconfined",
-
- // Uncomment to bind to host network for local devcontainer; this is necessary if using the
- // bind-mounted /var/run/docker-host.sock directly.
- "--net=host",
-
- // Enable docker-in-docker configuration. Comment out if not using for better security.
- "--privileged",
-
- // Run the entrypoint defined in container image.
- "--init"
- ],
- "workspaceFolder": "/workspaces/openim",
- "workspaceMount": "type=bind,source=${localWorkspaceFolder},target=/workspaces/openim"
-}
diff --git a/cmd/openim-api/main.go b/cmd/openim-api/main.go
index a45bcbdd8..bbb5eb968 100644
--- a/cmd/openim-api/main.go
+++ b/cmd/openim-api/main.go
@@ -43,6 +43,7 @@ import (
func main() {
apiCmd := cmd.NewApiCmd()
apiCmd.AddPortFlag()
+ apiCmd.AddPrometheusPortFlag()
apiCmd.AddApi(run)
if err := apiCmd.Execute(); err != nil {
fmt.Fprintf(os.Stderr, "\n\nexit -1: \n%+v\n\n", err)
diff --git a/pkg/common/cmd/api.go b/pkg/common/cmd/api.go
index 00c6cb241..db1f488ad 100644
--- a/pkg/common/cmd/api.go
+++ b/pkg/common/cmd/api.go
@@ -15,8 +15,6 @@
package cmd
import (
- "fmt"
-
"github.com/OpenIMSDK/protocol/constant"
"github.com/spf13/cobra"
@@ -41,7 +39,6 @@ func (a *ApiCmd) AddApi(f func(port int, promPort int) error) {
}
func (a *ApiCmd) GetPortFromConfig(portType string) int {
- fmt.Println("GetPortFromConfig:", portType)
if portType == constant.FlagPort {
return config2.Config.Api.OpenImApiPort[0]
} else if portType == constant.FlagPrometheusPort {
diff --git a/pkg/common/cmd/msg_transfer.go b/pkg/common/cmd/msg_transfer.go
index f99b625c7..e57bab89d 100644
--- a/pkg/common/cmd/msg_transfer.go
+++ b/pkg/common/cmd/msg_transfer.go
@@ -47,7 +47,6 @@ func (m *MsgTransferCmd) Exec() error {
}
func (m *MsgTransferCmd) GetPortFromConfig(portType string) int {
- fmt.Println("GetPortFromConfig:", portType)
if portType == constant.FlagPort {
return 0
} else if portType == constant.FlagPrometheusPort {
@@ -56,9 +55,11 @@ func (m *MsgTransferCmd) GetPortFromConfig(portType string) int {
}
return 0
}
+
func (m *MsgTransferCmd) AddTransferProgressFlag() {
m.Command.Flags().IntP(constant.FlagTransferProgressIndex, "n", 0, "transfer progress index")
}
+
func (m *MsgTransferCmd) getTransferProgressFlagValue() int {
nindex, err := m.Command.Flags().GetInt(constant.FlagTransferProgressIndex)
if err != nil {
diff --git a/pkg/common/cmd/root.go b/pkg/common/cmd/root.go
index 98ca8f892..eab4a32bc 100644
--- a/pkg/common/cmd/root.go
+++ b/pkg/common/cmd/root.go
@@ -163,7 +163,7 @@ func (r *RootCmd) GetPrometheusPortFlag() int {
func (r *RootCmd) getConfFromCmdAndInit(cmdLines *cobra.Command) error {
configFolderPath, _ := cmdLines.Flags().GetString(constant.FlagConf)
- fmt.Println("configFolderPath:", configFolderPath)
+ fmt.Println("The directory of the configuration file to start the process:", configFolderPath)
return config2.InitConfig(configFolderPath)
}
@@ -176,10 +176,9 @@ func (r *RootCmd) AddCommand(cmds ...*cobra.Command) {
}
func (r *RootCmd) GetPortFromConfig(portType string) int {
- fmt.Println("RootCmd.GetPortFromConfig:", portType)
return 0
}
+
func (r *RootCmd) PortFromConfig(portType string) int {
- fmt.Println("PortFromConfig:", portType)
return r.cmdItf.GetPortFromConfig(portType)
}
diff --git a/pkg/common/config/parse.go b/pkg/common/config/parse.go
index 64719d6a1..4037429e3 100644
--- a/pkg/common/config/parse.go
+++ b/pkg/common/config/parse.go
@@ -101,7 +101,7 @@ func initConfig(config any, configName, configFolderPath string) error {
if err = yaml.Unmarshal(data, config); err != nil {
return fmt.Errorf("unmarshal yaml error: %w", err)
}
- fmt.Println("use config", configFolderPath)
+ fmt.Println("The path of the configuration file to start the process:", configFolderPath)
return nil
}
diff --git a/scripts/install/openim-api.sh b/scripts/install/openim-api.sh
index c81dfcd0d..be2a2d33b 100755
--- a/scripts/install/openim-api.sh
+++ b/scripts/install/openim-api.sh
@@ -33,8 +33,12 @@ readonly OPENIM_API_SERVICE_TARGETS=(
)
readonly OPENIM_API_SERVICE_LISTARIES=("${OPENIM_API_SERVICE_TARGETS[@]##*/}")
-function openim::api::start() {
+readonly OPENIM_API_PROMETHEUS_PORT_TARGETS=(
+ ${API_PROM_PORT}
+)
+readonly OPENIM_API_PROMETHEUS_PORT_LISTARIES=("${OPENIM_API_PROMETHEUS_PORT_TARGETS[@]##*/}")
+function openim::api::start() {
rm -rf "$TMP_LOG_FILE"
echo "++ OPENIM_API_SERVICE_LISTARIES: ${OPENIM_API_SERVICE_LISTARIES[@]}"
@@ -47,34 +51,20 @@ function openim::api::start() {
printf "| Service Name | Port |\n"
printf "+------------------------+--------------+\n"
- length=${#OPENIM_API_SERVICE_LISTARIES[@]}
+ local length=${#OPENIM_API_SERVICE_LISTARIES[@]}
- for ((i=0; i<$length; i++)); do
+ for ((i=0; i> "${LOG_FILE}" 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE") &
+
+ # Append Prometheus port argument if specified
+ if [ -n "${prometheus_port}" ]; then
+ cmd+=" --prometheus_port ${prometheus_port}"
+ fi
+
+ echo "Starting service with command: $cmd"
+
+ nohup $cmd >> "${LOG_FILE}" 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
if [ $? -ne 0 ]; then
openim::log::error_exit "Failed to start ${binary_name} on port ${service_port}."
diff --git a/scripts/install/openim-crontask.sh b/scripts/install/openim-crontask.sh
index 6068e97d5..395b27cd1 100755
--- a/scripts/install/openim-crontask.sh
+++ b/scripts/install/openim-crontask.sh
@@ -54,7 +54,7 @@ function openim::crontask::start() {
openim::log::status "start cron_task process, path: ${OPENIM_CRONTASK_BINARY}"
- nohup ${OPENIM_CRONTASK_BINARY} -c ${OPENIM_PUSH_CONFIG} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE") &
+ nohup ${OPENIM_CRONTASK_BINARY} -c ${OPENIM_PUSH_CONFIG} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
openim::util::check_process_names ${SERVER_NAME}
}
diff --git a/scripts/install/openim-msggateway.sh b/scripts/install/openim-msggateway.sh
index 4e591deca..a2316c784 100755
--- a/scripts/install/openim-msggateway.sh
+++ b/scripts/install/openim-msggateway.sh
@@ -64,7 +64,7 @@ function openim::msggateway::start() {
PROMETHEUS_PORT_OPTION="--prometheus_port ${MSG_GATEWAY_PROM_PORTS_ARRAY[$i]}"
fi
- nohup ${OPENIM_MSGGATEWAY_BINARY} --port ${OPENIM_MSGGATEWAY_PORTS_ARRAY[$i]} --ws_port ${OPENIM_WS_PORTS_ARRAY[$i]} $PROMETHEUS_PORT_OPTION -c ${OPENIM_MSGGATEWAY_CONFIG} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE") &
+ nohup ${OPENIM_MSGGATEWAY_BINARY} --port ${OPENIM_MSGGATEWAY_PORTS_ARRAY[$i]} --ws_port ${OPENIM_WS_PORTS_ARRAY[$i]} $PROMETHEUS_PORT_OPTION -c ${OPENIM_MSGGATEWAY_CONFIG} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
done
openim::util::check_process_names ${SERVER_NAME}
diff --git a/scripts/install/openim-msgtransfer.sh b/scripts/install/openim-msgtransfer.sh
index def22c38b..783e06729 100755
--- a/scripts/install/openim-msgtransfer.sh
+++ b/scripts/install/openim-msgtransfer.sh
@@ -38,7 +38,7 @@ function openim::msgtransfer::start() {
# Message Transfer Prometheus port list
MSG_TRANSFER_PROM_PORTS=(openim::util::list-to-string ${MSG_TRANSFER_PROM_PORT} )
-
+
openim::log::status "OpenIM Prometheus ports: ${MSG_TRANSFER_PROM_PORTS[*]}"
openim::log::status "OpenIM Msggateway config path: ${OPENIM_MSGTRANSFER_CONFIG}"
@@ -54,12 +54,14 @@ function openim::msgtransfer::start() {
fi
for (( i=0; i<$OPENIM_MSGGATEWAY_NUM; i++ )) do
- openim::log::info "prometheus port: ${MSG_TRANSFER_PROM_PORTS[$i]}"
- PROMETHEUS_PORT_OPTION=""
- if [[ -n "${OPENIM_PROMETHEUS_PORTS[$i]}" ]]; then
- PROMETHEUS_PORT_OPTION="--prometheus_port ${OPENIM_PROMETHEUS_PORTS[$i]}"
- fi
- nohup ${OPENIM_MSGTRANSFER_BINARY} ${PROMETHEUS_PORT_OPTION} -c ${OPENIM_MSGTRANSFER_CONFIG} -n ${i} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE") &
+ openim::log::info "prometheus port: ${MSG_TRANSFER_PROM_PORTS[$i]}"
+ PROMETHEUS_PORT_OPTION=""
+ if [[ -n "${MSG_TRANSFER_PROM_PORTS[$i+1]}" ]]; then
+ PROMETHEUS_MSG_TRANSFER_PORT="${MSG_TRANSFER_PROM_PORTS[$i+1]%,}"
+ openim::util::stop_services_on_ports ${PROMETHEUS_MSG_TRANSFER_PORT}
+ PROMETHEUS_PORT_OPTION="--prometheus_port ${PROMETHEUS_MSG_TRANSFER_PORT}"
+ fi
+ nohup ${OPENIM_MSGTRANSFER_BINARY} ${PROMETHEUS_PORT_OPTION} -c ${OPENIM_MSGTRANSFER_CONFIG} -n ${i} >> ${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
done
openim::util::check_process_names "${OPENIM_OUTPUT_HOSTBIN}/${SERVER_NAME}"
diff --git a/scripts/install/openim-push.sh b/scripts/install/openim-push.sh
index 4d14ca675..ab12735c1 100755
--- a/scripts/install/openim-push.sh
+++ b/scripts/install/openim-push.sh
@@ -73,7 +73,7 @@ function openim::push::start() {
for (( i=0; i<${#OPENIM_PUSH_PORTS_ARRAY[@]}; i++ )); do
openim::log::info "start push process, port: ${OPENIM_PUSH_PORTS_ARRAY[$i]}, prometheus port: ${PUSH_PROM_PORTS_ARRAY[$i]}"
- nohup ${OPENIM_PUSH_BINARY} --port ${OPENIM_PUSH_PORTS_ARRAY[$i]} -c ${OPENIM_PUSH_CONFIG} --prometheus_port ${PUSH_PROM_PORTS_ARRAY[$i]} >${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE") &
+ nohup ${OPENIM_PUSH_BINARY} --port ${OPENIM_PUSH_PORTS_ARRAY[$i]} -c ${OPENIM_PUSH_CONFIG} --prometheus_port ${PUSH_PROM_PORTS_ARRAY[$i]} >${LOG_FILE} 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
done
openim::util::check_process_names ${SERVER_NAME}
diff --git a/scripts/install/openim-rpc.sh b/scripts/install/openim-rpc.sh
index 00031f211..f8feaaa57 100755
--- a/scripts/install/openim-rpc.sh
+++ b/scripts/install/openim-rpc.sh
@@ -160,7 +160,7 @@ function openim::rpc::start_service() {
printf "Specifying prometheus port: %s\n" "${prometheus_port}"
cmd="${cmd} --prometheus_port ${prometheus_port}"
fi
- nohup ${cmd} >> "${LOG_FILE}" 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE") &
+ nohup ${cmd} >> "${LOG_FILE}" 2> >(tee -a "${STDERR_LOG_FILE}" "$TMP_LOG_FILE" >&2) &
}
###################################### Linux Systemd ######################################
diff --git a/scripts/lib/util.sh b/scripts/lib/util.sh
index cace53645..7acb1fcdd 100755
--- a/scripts/lib/util.sh
+++ b/scripts/lib/util.sh
@@ -505,8 +505,6 @@ openim::util::stop_services_on_ports() {
# Print information about ports whose processes were successfully stopped.
if [[ ${#stopped[@]} -ne 0 ]]; then
- echo
- openim::log::info "Stopped services on ports:"
for port in "${stopped[@]}"; do
openim::log::info "Successfully stopped service on port $port."
done
@@ -1741,8 +1739,6 @@ openim::util::stop_services_on_ports() {
# Print information about ports whose processes were successfully stopped.
if [[ ${#stopped[@]} -ne 0 ]]; then
- echo
- openim::log::info "Stopped services on ports:"
for port in "${stopped[@]}"; do
openim::log::info "Successfully stopped service on port $port."
done
@@ -2828,4 +2824,4 @@ function openim::util::gen_os_arch() {
if [[ "$*" =~ openim::util:: ]];then
eval $*
-fi
+fi
\ No newline at end of file
diff --git a/scripts/stop-all.sh b/scripts/stop-all.sh
index 1d2eddd78..2acb9cdc5 100755
--- a/scripts/stop-all.sh
+++ b/scripts/stop-all.sh
@@ -36,11 +36,4 @@ echo -e "\n++ Stop all processes in the path ${OPENIM_OUTPUT_HOSTBIN}"
openim::util::stop_services_with_name "${OPENIM_OUTPUT_HOSTBIN}"
-echo -n "Stopping services 15 seconds."
-for i in {1..15}; do
- echo -n "."
- sleep 1
-done
-echo -e "\nServices stopped."
-
-openim::log::success "✨ Wait 15 seconds for all processes to be killed"
\ No newline at end of file
+openim::log::success "✨ All processes to be killed"
\ No newline at end of file