Open
Description
OpenIM Server Version
3.8.2
Operating System and CPU Architecture
Linux (AMD)
Deployment Method
Docker Deployment
Bug Description and Steps to Reproduce
我是将 openim 2.3.3 版本迁移到 3.8.2 版本,通过 API 导入了用户(/user/user_register),好友关系(/friend/import_friend),群组(/group/create_group)、聊天记录(/msg/send_msg)。
对于部分用户,当我调用 http://im-server-ip:10002/conversation/get_sorted_conversation_list 接口会报错:
POST http://im-server-ip:10002/conversation/get_sorted_conversation_list
{
"userID": "some_use_id",
"pagination": {
"pageNumber": 1,
"showNumber": 1000
}
}
{
"errCode": 1004,
"errMsg": "1004 mongo find one: mongo: no documents in result mongo find one: mongo: no documents in result",
"errDlt": "1004 mongo find one: mongo: no documents in result mongo find one: mongo: no documents in result"
}
有些用户会成功,但是不少用户会失败。服务端报错:
2025-01-21 03:39:11.439 ERROR [PID:1874] openim-rpc-conversation [main] [mw/rpc_client_interceptor.go:58] RPC Client Response Error - GetMsgByConversationIDs {"platform": "Admin", "operationID": "1646445464564", "opUserID": "imAdmin", "funcName": "/openim.msg.msg/GetMsgByConversationIDs", "error": "rpc error: code = Code(1004) desc = mongo find one: mongo: no documents in result"}
2025-01-21 03:39:11.439 WARN [PID:1874] openim-rpc-conversation [main] [mw/rpc_server_interceptor.go:94] rpc server resp WithDetails error {"platform": "Admin", "operationID": "1646445464564", "opUserID": "imAdmin", "funcName": "/openim.conversation.conversation/GetSortedConversationList", "error": "Error: 1004 mongo find one: mongo: no documents in result mongo find one: mongo: no documents in result | Error trace: 1 (/go/pkg/mod/google.golang.org/[email protected]/server.go:1029) -> handleStream (/go/pkg/mod/google.golang.org/[email protected]/server.go:1805) -> processUnaryRPC (/go/pkg/mod/google.golang.org/[email protected]/server.go:1394) -> _Conversation_GetSortedConversationList_Handler (/go/pkg/mod/github.com/openimsdk/[email protected]/conversation/conversation_grpc.pb.go:488) -> func1 (/go/pkg/mod/google.golang.org/[email protected]/server.go:1202) -> RpcServerInterceptor (/go/pkg/mod/github.com/openimsdk/[email protected]/mw/rpc_server_interceptor.go:50) -> func1 (/go/pkg/mod/google.golang.org/[email protected]/server.go:1211) -> func4 (/openim-server/pkg/common/startrpc/start.go:193) -> func1 (/go/pkg/mod/github.com/openimsdk/[email protected]/conversation/conversation_grpc.pb.go:486) -> GetSortedConversationList (/openim-server/internal/rpc/conversation/conversation.go:134) -> GetMsgByConversationIDs (/openim-server/pkg/rpcclient/msg.go:205) -> GetMsgByConversationIDs (/go/pkg/mod/github.com/openimsdk/[email protected]/msg/msg_grpc.pb.go:164) -> Invoke (/go/pkg/mod/google.golang.org/[email protected]/call.go:35) -> RpcClientInterceptor (/go/pkg/mod/github.com/openimsdk/[email protected]/mw/rpc_client_interceptor.go:72) -> Wrap (/go/pkg/mod/github.com/openimsdk/[email protected]/errs/coderr.go:74) -> Wrap (/go/pkg/mod/github.com/openimsdk/[email protected]/errs/coderr.go:126)"}
2025-01-21 03:39:11.439 WARN [PID:1874] openim-rpc-conversation [main] [mw/rpc_server_interceptor.go:113] RPC Server Response Error - GetSortedConversationList {"platform": "Admin", "operationID": "1646445464564", "opUserID": "imAdmin", "funcName": "/openim.conversation.conversation/GetSortedConversationList", "req": "userID:\"lookcap_u67a160cdb9be451\" pagination:{pageNumber:1 showNumber:1000}", "err": null, "error": "rpc error: code = Code(1004) desc = 1004 mongo find one: mongo: no documents in result mongo find one: mongo: no documents in result"}
2025-01-21 03:39:11.439 ERROR [PID:1889] openim-api [main] [mw/rpc_client_interceptor.go:58] RPC Client Response Error - GetSortedConversationList {"platform": "Admin", "operationID": "1646445464564", "opUserID": "imAdmin", "funcName": "/openim.conversation.conversation/GetSortedConversationList", "error": "rpc error: code = Code(1004) desc = 1004 mongo find one: mongo: no documents in result mongo find one: mongo: no documents in result"}
我选取了部分详细日志在附件里。
test.log
对于报错的用户,调用 /conversation/get_owner_conversation 和 /conversation/get_all_conversations 接口是没有问题的。我自己看了下数据,可能原因是用户的有些会话,在 msg 集合没有对应记录。
例如:/conversation/get_owner_conversation 返回的其中一个会话 id 为 sg_1909233676,从 `conversation` 集合里也确实能找得到。
但是在 `msg` 里找 {doc_id: 'sg_1909233676:0'} 相关文档,结果为空。
我不清楚为什么在 msg 没有对应的记录,大部分会话在加好友或者建群时会自动发一条消息,这时会自动创建了 msg 文档。在迁移过程中,我都是调用的相关接口,并没有直接操作数据库。怀疑 openim 在处理建群时存在 bug,数据不一致,但是不一致的概率有点高。
Screenshots Link
No response
Metadata
Metadata
Assignees
Labels
No labels