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