fix: reserve seq for p2p system messages

This commit is contained in:
richjohnrambo
2026-09-24 10:03:27 +08:00
parent a3df9d269c
commit 9893452817
2 changed files with 22 additions and 12 deletions
+15 -11
View File
@@ -3397,18 +3397,20 @@ func (messagesMapper) PreparePersist(tenantID types.TenantID, msg *types.Message
msg.InitTimes()
fromUid := types.ParseUid(msg.From)
isGroupMessage := types.GetTopicCat(msg.Topic) == types.TopicCatGrp
if isGroupMessage && groupMsgRuntime != nil {
if groupMsgRuntime != nil {
if clientMsgID != "" {
claim, claimed, err := groupMsgRuntime.Claim(tenantID, msg.Topic, fromUid, clientMsgID)
if err != nil {
return nil, err
}
if !claimed {
if claim != nil && claim.Status == "done" && claim.Seq > 0 {
msg.SeqId = claim.Seq
return &types.MessageSaveResult{SeqId: claim.Seq, Duplicate: true}, nil
if isGroupMessage {
claim, claimed, err := groupMsgRuntime.Claim(tenantID, msg.Topic, fromUid, clientMsgID)
if err != nil {
return nil, err
}
if !claimed {
if claim != nil && claim.Status == "done" && claim.Seq > 0 {
msg.SeqId = claim.Seq
return &types.MessageSaveResult{SeqId: claim.Seq, Duplicate: true}, nil
}
return nil, types.ErrDuplicate
}
return nil, types.ErrDuplicate
}
}
seq, shardMonth, err := nextMessageSeqWithFloor(tenantID, msg.Topic, msg.SeqId-1, msg.CreatedAt.UTC().Format("200601"))
@@ -3419,7 +3421,9 @@ func (messagesMapper) PreparePersist(tenantID types.TenantID, msg *types.Message
return nil, err
}
msg.SeqId = seq
msg.ShardMonth = shardMonth
if isGroupMessage {
msg.ShardMonth = shardMonth
}
}
if isGroupMessage && msg.ShardMonth == "" {
msg.ShardMonth = msg.CreatedAt.UTC().Format("200601")