@ -96,7 +96,7 @@ func (c *MsgTool) ClearSuperGroupMsg(ctx context.Context, superGroupIDs []string
log . ZError ( ctx , "ClearSuperGroupMsg failed" , err , "groupID" , groupID )
log . ZError ( ctx , "ClearSuperGroupMsg failed" , err , "groupID" , groupID )
continue
continue
}
}
if err := c . msgDatabase . DeleteConversationMsgsAndSetMinSeq ( ctx , groupID , userIDs , int64 ( config . Config . Mongo . DBRetainChatRecords * 24 * 60 * 60 ) ) ; err != nil {
if err := c . msgDatabase . DeleteConversationMsgsAndSetMinSeq ( ctx , groupID , int64 ( config . Config . Mongo . DBRetainChatRecords * 24 * 60 * 60 ) ) ; err != nil {
log . ZError ( ctx , "DeleteUserSuperGroupMsgsAndSetMinSeq failed" , err , "groupID" , groupID , "userID" , userIDs , "DBRetainChatRecords" , config . Config . Mongo . DBRetainChatRecords )
log . ZError ( ctx , "DeleteUserSuperGroupMsgsAndSetMinSeq failed" , err , "groupID" , groupID , "userID" , userIDs , "DBRetainChatRecords" , config . Config . Mongo . DBRetainChatRecords )
}
}
if err := c . fixGroupSeq ( ctx , groupID , userIDs ) ; err != nil {
if err := c . fixGroupSeq ( ctx , groupID , userIDs ) ; err != nil {
@ -114,7 +114,7 @@ func (c *MsgTool) FixGroupSeq(ctx context.Context, groupID string) error {
}
}
func ( c * MsgTool ) fixGroupSeq ( ctx context . Context , groupID string , userIDs [ ] string ) error {
func ( c * MsgTool ) fixGroupSeq ( ctx context . Context , groupID string , userIDs [ ] string ) error {
_ , maxSeqMongo , maxSeqCache, err := c . msgDatabase . Get SuperGroup MinMaxSeqInMongoAndCache( ctx , groupID )
_ , maxSeqMongo , _, maxSeqCache, err := c . msgDatabase . Get Conversation MinMaxSeqInMongoAndCache( ctx , groupID )
if err != nil {
if err != nil {
if err == unrelation . ErrMsgNotFound {
if err == unrelation . ErrMsgNotFound {
return nil
return nil
@ -126,14 +126,14 @@ func (c *MsgTool) fixGroupSeq(ctx context.Context, groupID string, userIDs []str
continue
continue
}
}
}
}
if err := c . CheckMaxSeqWithMongo ( ctx , groupID , maxSeqCache , maxSeqMongo , constant . WriteDiffusion ); err != nil {
if err := c . CheckMaxSeqWithMongo ( ctx , groupID , maxSeqCache , maxSeqMongo ); err != nil {
log . ZWarn ( ctx , "cache max seq and mongo max seq is diff > 10" , err , "groupID" , groupID , "maxSeqCache" , maxSeqCache , "maxSeqMongo" , maxSeqMongo , "constant.WriteDiffusion" , constant . WriteDiffusion )
log . ZWarn ( ctx , "cache max seq and mongo max seq is diff > 10" , err , "groupID" , groupID , "maxSeqCache" , maxSeqCache , "maxSeqMongo" , maxSeqMongo , "constant.WriteDiffusion" , constant . WriteDiffusion )
}
}
return nil
return nil
}
}
func ( c * MsgTool ) GetAndFixUserSeqs ( ctx context . Context , userID string ) ( maxSeqCache , maxSeqMongo int64 , err error ) {
func ( c * MsgTool ) GetAndFixUserSeqs ( ctx context . Context , userID string ) ( maxSeqCache , maxSeqMongo int64 , err error ) {
minSeqMongo , maxSeqMongo , minSeqCache , maxSeqCache , err := c . msgDatabase . Get User MinMaxSeqInMongoAndCache( ctx , userID )
minSeqMongo , maxSeqMongo , minSeqCache , maxSeqCache , err := c . msgDatabase . Get Conversation MinMaxSeqInMongoAndCache( ctx , userID )
if err != nil {
if err != nil {
if err != unrelation . ErrMsgNotFound {
if err != unrelation . ErrMsgNotFound {
log . ZError ( ctx , "GetUserMinMaxSeqInMongoAndCache failed" , err , "userID" , userID )
log . ZError ( ctx , "GetUserMinMaxSeqInMongoAndCache failed" , err , "userID" , userID )
@ -142,7 +142,7 @@ func (c *MsgTool) GetAndFixUserSeqs(ctx context.Context, userID string) (maxSeqC
}
}
log . ZDebug ( ctx , "userID" , userID , "minSeqMongo" , minSeqMongo , "maxSeqMongo" , maxSeqMongo , "minSeqCache" , minSeqCache , "maxSeqCache" , maxSeqCache )
log . ZDebug ( ctx , "userID" , userID , "minSeqMongo" , minSeqMongo , "maxSeqMongo" , maxSeqMongo , "minSeqCache" , minSeqCache , "maxSeqCache" , maxSeqCache )
if minSeqCache > maxSeqCache {
if minSeqCache > maxSeqCache {
if err := c . msgDatabase . Set User MinSeq( ctx , userID , maxSeqCache ) ; err != nil {
if err := c . msgDatabase . Set MinSeq( ctx , userID , maxSeqCache ) ; err != nil {
log . ZError ( ctx , "SetUserMinSeq failed" , err , "userID" , userID , "minSeqCache" , minSeqCache , "maxSeqCache" , maxSeqCache )
log . ZError ( ctx , "SetUserMinSeq failed" , err , "userID" , userID , "minSeqCache" , minSeqCache , "maxSeqCache" , maxSeqCache )
} else {
} else {
log . ZInfo ( ctx , "SetUserMinSeq success" , "userID" , userID , "minSeqCache" , minSeqCache , "maxSeqCache" , maxSeqCache )
log . ZInfo ( ctx , "SetUserMinSeq success" , "userID" , userID , "minSeqCache" , minSeqCache , "maxSeqCache" , maxSeqCache )
@ -152,13 +152,13 @@ func (c *MsgTool) GetAndFixUserSeqs(ctx context.Context, userID string) (maxSeqC
}
}
func ( c * MsgTool ) GetAndFixGroupUserSeq ( ctx context . Context , userID string , groupID string , maxSeqCache int64 ) ( minSeqCache int64 , err error ) {
func ( c * MsgTool ) GetAndFixGroupUserSeq ( ctx context . Context , userID string , groupID string , maxSeqCache int64 ) ( minSeqCache int64 , err error ) {
minSeqCache , err = c . msgDatabase . Get GroupUser MinSeq( ctx , group ID, user ID)
minSeqCache , err = c . msgDatabase . Get MinSeq( ctx , group ID)
if err != nil {
if err != nil {
log . ZError ( ctx , "GetGroupUserMinSeq failed" , err , "groupID" , groupID , "userID" , userID )
log . ZError ( ctx , "GetGroupUserMinSeq failed" , err , "groupID" , groupID , "userID" , userID )
return 0 , err
return 0 , err
}
}
if minSeqCache > maxSeqCache {
if minSeqCache > maxSeqCache {
if err := c . msgDatabase . Set Group UserMinSeq( ctx , groupID , userID , maxSeqCache ) ; err != nil {
if err := c . msgDatabase . Set Conversation UserMinSeq( ctx , groupID , userID , maxSeqCache ) ; err != nil {
log . ZError ( ctx , "SetGroupUserMinSeq failed" , err , "groupID" , groupID , "userID" , userID , "minSeqCache" , minSeqCache , "maxSeqCache" , maxSeqCache )
log . ZError ( ctx , "SetGroupUserMinSeq failed" , err , "groupID" , groupID , "userID" , userID , "minSeqCache" , minSeqCache , "maxSeqCache" , maxSeqCache )
} else {
} else {
log . ZInfo ( ctx , "SetGroupUserMinSeq success" , "groupID" , groupID , "userID" , userID , "minSeqCache" , minSeqCache , "maxSeqCache" , maxSeqCache )
log . ZInfo ( ctx , "SetGroupUserMinSeq success" , "groupID" , groupID , "userID" , userID , "minSeqCache" , minSeqCache , "maxSeqCache" , maxSeqCache )
@ -192,16 +192,16 @@ func (c *MsgTool) FixAllSeq(ctx context.Context) error {
return err
return err
}
}
for _ , userID := range userIDs {
for _ , userID := range userIDs {
userCurrentMinSeq , err := c . msgDatabase . Get User MinSeq( ctx , userID )
userCurrentMinSeq , err := c . msgDatabase . Get MinSeq( ctx , userID )
if err != nil && err != redis . Nil {
if err != nil && err != redis . Nil {
continue
continue
}
}
userCurrentMaxSeq , err := c . msgDatabase . Get User MaxSeq( ctx , userID )
userCurrentMaxSeq , err := c . msgDatabase . Get MaxSeq( ctx , userID )
if err != nil && err != redis . Nil {
if err != nil && err != redis . Nil {
continue
continue
}
}
if userCurrentMinSeq > userCurrentMaxSeq {
if userCurrentMinSeq > userCurrentMaxSeq {
if err = c . msgDatabase . Set User MinSeq( ctx , userID , userCurrentMaxSeq ) ; err != nil {
if err = c . msgDatabase . Set MinSeq( ctx , userID , userCurrentMaxSeq ) ; err != nil {
fmt . Println ( "SetUserMinSeq failed" , userID , userCurrentMaxSeq )
fmt . Println ( "SetUserMinSeq failed" , userID , userCurrentMaxSeq )
}
}
fmt . Println ( "fix" , userID , userCurrentMaxSeq )
fmt . Println ( "fix" , userID , userCurrentMaxSeq )
@ -213,7 +213,7 @@ func (c *MsgTool) FixAllSeq(ctx context.Context) error {
return err
return err
}
}
for _ , groupID := range groupIDs {
for _ , groupID := range groupIDs {
maxSeq , err := c . msgDatabase . Get Group MaxSeq( ctx , groupID )
maxSeq , err := c . msgDatabase . Get MaxSeq( ctx , groupID )
if err != nil {
if err != nil {
fmt . Println ( "GetGroupMaxSeq failed" , groupID )
fmt . Println ( "GetGroupMaxSeq failed" , groupID )
continue
continue
@ -224,13 +224,13 @@ func (c *MsgTool) FixAllSeq(ctx context.Context) error {
continue
continue
}
}
for _ , userID := range userIDs {
for _ , userID := range userIDs {
userMinSeq , err := c . msgDatabase . Get GroupUser MinSeq( ctx , group ID, user ID)
userMinSeq , err := c . msgDatabase . Get MinSeq( ctx , group ID)
if err != nil && err != redis . Nil {
if err != nil && err != redis . Nil {
fmt . Println ( "GetGroupUserMinSeq failed" , groupID , userID )
fmt . Println ( "GetGroupUserMinSeq failed" , groupID , userID )
continue
continue
}
}
if userMinSeq > maxSeq {
if userMinSeq > maxSeq {
if err = c . msgDatabase . Set GroupUser MinSeq( ctx , group ID, user ID, maxSeq ) ; err != nil {
if err = c . msgDatabase . Set MinSeq( ctx , group ID, maxSeq ) ; err != nil {
fmt . Println ( "SetGroupUserMinSeq failed" , err . Error ( ) , groupID , userID , maxSeq )
fmt . Println ( "SetGroupUserMinSeq failed" , err . Error ( ) , groupID , userID , maxSeq )
}
}
fmt . Println ( "fix" , groupID , userID , maxSeq , userMinSeq )
fmt . Println ( "fix" , groupID , userID , maxSeq , userMinSeq )