Don't run storage service concurrently with backup

This commit is contained in:
Fedor Indutny 2024-11-04 14:56:53 -08:00 committed by GitHub
parent 4dde3df4d3
commit 936d21d749
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -403,6 +403,8 @@ export async function startApp(): Promise<void> {
accountManager = new window.textsecure.AccountManager(server);
accountManager.addEventListener('startRegistration', () => {
pauseProcessing();
backupReady.reject(new Error('startRegistration'));
backupReady = explodePromise();
});
@ -741,9 +743,7 @@ export async function startApp(): Promise<void> {
'WebAPI should be initialized together with MessageReceiver'
);
log.info('background/shutdown: shutting down messageReceiver');
server.unregisterRequestHandler(messageReceiver);
StorageService.disableStorageService();
messageReceiver.stopProcessing();
pauseProcessing();
await window.waitForAllBatchers();
}
@ -1147,6 +1147,18 @@ export async function startApp(): Promise<void> {
log.info('Storage fetch');
drop(window.storage.fetch());
function pauseProcessing() {
strictAssert(server != null, 'WebAPI not initialized');
strictAssert(
messageReceiver != null,
'messageReceiver must be initialized'
);
StorageService.disableStorageService();
server.unregisterRequestHandler(messageReceiver);
messageReceiver.stopProcessing();
}
function setupAppState() {
initializeRedux(getParametersForRedux());
@ -1627,6 +1639,9 @@ export async function startApp(): Promise<void> {
server.registerRequestHandler(messageReceiver);
drop(runStorageService({ reason: 'afterStart' }));
// Opposite of `messageReceiver.stopProcessing`
messageReceiver.reset();
}
window.getSyncRequest = (timeoutMillis?: number) => {
@ -3051,9 +3066,8 @@ export async function startApp(): Promise<void> {
if (messageReceiver) {
log.info('unlinkAndDisconnect: logging out');
strictAssert(server !== undefined, 'WebAPI not initialized');
server.unregisterRequestHandler(messageReceiver);
StorageService.disableStorageService();
messageReceiver.stopProcessing();
pauseProcessing();
backupReady.reject(new Error('Aborted'));
backupReady = explodePromise();