@@ -412,13 +412,34 @@ func (m *MsgSyncer) doConnected(ctx context.Context) {
412412 common .DispatchSyncFlag (ctx , constant .MsgSyncBegin , m .conversationEventQueue )
413413 }
414414 var resp sdkws.GetMaxSeqResp
415- if err := m .longConnMgr .SendReqWaitResp (ctx , & sdkws.GetMaxSeqReq {UserID : m .loginUserID }, constant .GetNewestSeq , & resp ); err != nil {
415+ maxRetries := 3 // max number of retries
416+ retryInterval := 2 * time .Second // wait time between retries
417+
418+ var err error
419+ for retry := range maxRetries {
420+ if retry > 0 {
421+ log .ZWarn (ctx , "retrying to get max seq" , nil , "attempt" , retry + 1 , "max" , maxRetries )
422+
423+ // Exponential Backoff Strategy
424+ time .Sleep (retryInterval )
425+ retryInterval *= 2
426+ }
427+
428+ err = m .longConnMgr .SendReqWaitResp (ctx , & sdkws.GetMaxSeqReq {UserID : m .loginUserID }, constant .GetNewestSeq , & resp )
429+ if err == nil {
430+ log .ZDebug (ctx , "get max seq success" , "resp" , resp .MaxSeqs )
431+ break
432+ }
433+
434+ log .ZWarn (ctx , "get max seq attempt failed" , err , "attempt" , retry + 1 , "max" , maxRetries )
435+ }
436+
437+ if err != nil {
416438 log .ZError (ctx , "get max seq error" , err )
417439 common .DispatchSyncFlag (ctx , constant .MsgSyncFailed , m .conversationEventQueue )
418440 return
419- } else {
420- log .ZDebug (ctx , "get max seq success" , "resp" , resp .MaxSeqs )
421441 }
442+
422443 m .compareSeqsAndBatchSync (ctx , resp .MaxSeqs , connectPullNums )
423444 if reinstalled {
424445 common .DispatchSyncFlag (ctx , constant .AppDataSyncFinish , m .conversationEventQueue )
@@ -665,7 +686,7 @@ func (m *MsgSyncer) syncMsgBySeqs(ctx context.Context, conversationID string, se
665686 var pullMsgResp sdkws.PullMessageBySeqsResp
666687 err := m .longConnMgr .SendReqWaitResp (ctx , & pullMsgReq , constant .PullMsgByRange , & pullMsgResp )
667688 if err != nil {
668- log .ZError (ctx , "syncMsgFromServerSplit err" , err , "pullMsgReq" , pullMsgReq )
689+ log .ZError (ctx , "syncMsgFromServerSplit err" , err , "pullMsgReq" , & pullMsgReq )
669690 continue
670691 }
671692 i ++
0 commit comments