fix: Increase timeout for initial sync from 10 seconds to 2 minutes

This fixes the response
timeout for the initial
sync and sets it to 2
minutes instead of 10
seconds. This should increase
the speed for the initial
sync especially for large
accounts. This change
also adds some
documentation in the
code about what
timeout does what.
This commit is contained in:
Krille 2023-12-14 09:13:48 +01:00
parent f423c2f387
commit c443e79d29
No known key found for this signature in database
1 changed files with 14 additions and 2 deletions

View File

@ -1695,7 +1695,12 @@ class Client extends MatrixApi {
}
Object? syncError;
await _checkSyncFilter();
// The timeout we send to the server for the sync loop. It says to the
// server that we want to receive an empty sync response after this
// amount of time if nothing happens.
timeout ??= const Duration(seconds: 30);
final syncRequest = sync(
filter: syncFilterId,
since: prevBatch,
@ -1711,8 +1716,15 @@ class Client extends MatrixApi {
});
_currentSyncId = syncRequest.hashCode;
onSyncStatus.add(SyncStatusUpdate(SyncStatus.waitingForResponse));
final syncResp =
await syncRequest.timeout(timeout + const Duration(seconds: 10));
// The timeout for the response from the server. If we do not set a sync
// timeout (for initial sync) we give the server a longer time to
// responde.
final responseTimeout = timeout == Duration.zero
? const Duration(minutes: 2)
: timeout + const Duration(seconds: 10);
final syncResp = await syncRequest.timeout(responseTimeout);
onSyncStatus.add(SyncStatusUpdate(SyncStatus.processing));
if (syncResp == null) throw syncError ?? 'Unknown sync error';
if (_currentSyncId != syncRequest.hashCode) {