//Recovery
        public async Task <Task> StartRecovery()
        {
            startTime = System.DateTime.Now.Millisecond;
            //1. Stop the timer
            disposable.Dispose();

            foreach (var source in sources)
            {
                await source.StopSendingMessagesOnRecovery();
            }

            //2. Tell TopologyManager the rollback and reset batchID
            recoveryMsg.BatchID = committedID;
            topologyManager.Recovery(recoveryMsg);
            //3. Clean information in the tracker()
            await tracker.CleanUpOnRecovery();

            //6. Register new timer
            return(Task.CompletedTask);
        }