Skip to content

Commit 6e3316e

Browse files
authored
fix: fixed revoke burnMessage panic. (#672)
* feat: implement panic recovery. * update recover logic. * update log print. * feat: implment SDK log interface. * update * remove unused file. * update Panic log print. * fix: optimize delete msg local logic. * update implement. * optimize contents. * fix: fix revoke burnMessage panic. * update revoke logic.
1 parent 9ebf5ef commit 6e3316e

File tree

3 files changed

+26
-10
lines changed

3 files changed

+26
-10
lines changed

internal/conversation_msg/revoke.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ func (c *Conversation) revokeMessage(ctx context.Context, tips *sdkws.RevokeMsgT
4949
log.ZError(ctx, "GetMessageBySeq failed", err, "tips", &tips)
5050
return errs.Wrap(err)
5151
}
52+
5253
var revokerRole int32
5354
var revokerNickname string
5455
if tips.IsAdminRevoke || tips.SesstionType == constant.SingleChatType {
@@ -59,13 +60,15 @@ func (c *Conversation) revokeMessage(ctx context.Context, tips *sdkws.RevokeMsgT
5960
} else {
6061
log.ZDebug(ctx, "revoker user name", "userName", userName)
6162
}
63+
6264
revokerNickname = userName
6365
} else if tips.SesstionType == constant.SuperGroupChatType {
6466
conversation, err := c.db.GetConversation(ctx, tips.ConversationID)
6567
if err != nil {
6668
log.ZError(ctx, "GetConversation failed", err, "conversationID", tips.ConversationID)
6769
return errs.Wrap(err)
6870
}
71+
6972
groupMember, err := c.db.GetGroupMemberInfoByGroupIDUserID(ctx, conversation.GroupID, tips.RevokerUserID)
7073
if err != nil {
7174
log.ZError(ctx, "GetGroupMemberInfoByGroupIDUserID failed", err, "tips", &tips)
@@ -134,26 +137,37 @@ func (c *Conversation) revokeMessage(ctx context.Context, tips *sdkws.RevokeMsgT
134137
log.ZError(ctx, "SearchAllMessageByContentType failed", err, "tips", &tips)
135138
return errs.Wrap(err)
136139
}
140+
137141
for _, v := range msgList {
138142
err = c.quoteMsgRevokeHandle(ctx, tips.ConversationID, v, m)
139-
return errs.Wrap(err)
143+
if err != nil {
144+
log.ZError(ctx, "quote Msg Revoke Handle failed.", err, "chat Log content", v)
145+
}
140146
}
141-
return nil
147+
return errs.Wrap(err)
142148
}
143149

144150
func (c *Conversation) quoteMsgRevokeHandle(ctx context.Context, conversationID string, v *model_struct.LocalChatLog, revokedMsg sdk_struct.MessageRevoked) error {
145-
s := sdk_struct.MsgStruct{}
146-
_ = utils.JsonStringToStruct(v.Content, &s.QuoteElem)
151+
s := sdk_struct.QuoteElem{}
152+
if v.Content == "" {
153+
err := errs.New("Chat Log Content not found")
154+
return errs.Wrap(err)
155+
}
147156

148-
if s.QuoteElem.QuoteMessage == nil {
157+
if err := utils.JsonStringToStruct(v.Content, &s); err != nil {
158+
return errs.New("ChatLog content transfer failed.")
159+
}
160+
161+
if s.QuoteMessage == nil {
149162
return errs.New("QuoteMessage is nil").Wrap()
150163
}
151-
if s.QuoteElem.QuoteMessage.ClientMsgID != revokedMsg.ClientMsgID {
164+
if s.QuoteMessage.ClientMsgID != revokedMsg.ClientMsgID {
152165
return errs.New("quoteMessage ClientMsgID is not revokedMsg ClientMsgID").Wrap()
153166
}
154-
s.QuoteElem.QuoteMessage.Content = utils.StructToJsonString(revokedMsg)
155-
s.QuoteElem.QuoteMessage.ContentType = constant.RevokeNotification
156-
v.Content = utils.StructToJsonString(s.QuoteElem)
167+
168+
s.QuoteMessage.Content = utils.StructToJsonString(revokedMsg)
169+
s.QuoteMessage.ContentType = constant.RevokeNotification
170+
v.Content = utils.StructToJsonString(s)
157171
if err := c.db.UpdateMessageBySeq(ctx, conversationID, v); err != nil {
158172
log.ZError(ctx, "UpdateMessage failed", err, "v", v)
159173
return errs.Wrap(err)

internal/interaction/long_conn_mgr.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ func (c *LongConnMgr) writePump(ctx context.Context) {
249249
log.ZWarn(ctx, "writePump panic", nil, "panic info", err)
250250
}
251251
}()
252+
252253
log.ZDebug(ctx, "writePump start", "goroutine ID:", getGoroutineID())
253254

254255
defer func() {

wasm/event_listener/caller.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ func (r *ReflectCall) asyncCallWithOutCallback() {
150150
if r.callback == nil {
151151
r.callback = NewBaseCallback(utils.FirstLower(utils.GetSelfFuncName()), nil)
152152
}
153-
log.ZError(ctx, "test", nil, "asyncCallWithOutCallback", len(r.arguments))
153+
log.ZWarn(ctx, "asyncCall", nil, "asyncCallWithOutCallback", len(r.arguments))
154+
154155
r.callback.SetOperationID(r.arguments[0].String())
155156
//strings.SplitAfter()
156157
for i := 0; i < len(r.arguments); i++ {

0 commit comments

Comments
 (0)