diff --git a/internal/push/push_handler.go b/internal/push/push_handler.go index 5f3428692..29dc9a4b6 100644 --- a/internal/push/push_handler.go +++ b/internal/push/push_handler.go @@ -51,7 +51,11 @@ func (c *ConsumerHandler) handleMs2PsChat(ctx context.Context, msg []byte) { err = c.pusher.Push2User(ctx, []string{pbData.MsgData.SendID, pbData.MsgData.RecvID}, pbData.MsgData) } if err != nil { - log.ZError(ctx, "push failed", err, "msg", pbData.String()) + if err == errNoOfflinePusher { + log.ZWarn(ctx, "offline push failed", err, "msg", pbData.String()) + } else { + log.ZError(ctx, "push failed", err, "msg", pbData.String()) + } } } func (ConsumerHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil } diff --git a/internal/push/push_rpc_server.go b/internal/push/push_rpc_server.go index 35f8055c0..6890cc086 100644 --- a/internal/push/push_rpc_server.go +++ b/internal/push/push_rpc_server.go @@ -8,6 +8,7 @@ import ( "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/controller" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/localcache" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/log" "github.com/OpenIMSDK/Open-IM-Server/pkg/discoveryregistry" pbPush "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/push" "google.golang.org/grpc" @@ -52,7 +53,11 @@ func (r *pushServer) PushMsg(ctx context.Context, pbData *pbPush.PushMsgReq) (re err = r.pusher.Push2User(ctx, []string{pbData.MsgData.RecvID, pbData.MsgData.SendID}, pbData.MsgData) } if err != nil { - return nil, err + if err != errNoOfflinePusher { + return nil, err + } else { + log.ZWarn(ctx, "offline push failed", err, "msg", pbData.String()) + } } return &pbPush.PushMsgResp{}, nil } diff --git a/internal/push/push_to_client.go b/internal/push/push_to_client.go index 1a36d84a7..9c38c4069 100644 --- a/internal/push/push_to_client.go +++ b/internal/push/push_to_client.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "errors" + "github.com/OpenIMSDK/Open-IM-Server/internal/push/offlinepush" "github.com/OpenIMSDK/Open-IM-Server/internal/push/offlinepush/fcm" "github.com/OpenIMSDK/Open-IM-Server/internal/push/offlinepush/getui" @@ -35,6 +36,8 @@ type Pusher struct { successCount int } +var errNoOfflinePusher = errors.New("no offlinePusher is configured") + func NewPusher(client discoveryregistry.SvcDiscoveryRegistry, offlinePusher offlinepush.OfflinePusher, database controller.PushDatabase, groupLocalCache *localcache.GroupLocalCache, conversationLocalCache *localcache.ConversationLocalCache) *Pusher { rpcclient.NewGroupClient(client) @@ -286,7 +289,7 @@ func (p *Pusher) GetOfflinePushOpts(msg *sdkws.MsgData) (opts *offlinepush.Opts, func (p *Pusher) getOfflinePushInfos(conversationID string, msg *sdkws.MsgData) (title, content string, opts *offlinepush.Opts, err error) { if p.offlinePusher == nil { - err = errors.New("no offlinePusher is configured") + err = errNoOfflinePusher return } type AtContent struct {