diff --git a/ts/background.ts b/ts/background.ts index 5b4248571d..f16b461d4d 100644 --- a/ts/background.ts +++ b/ts/background.ts @@ -2094,7 +2094,7 @@ export async function startApp(): Promise { ); } - window.sqlInitializer.goBackToMainProcess(); + await window.sqlInitializer.goBackToMainProcess(); window.Signal.Util.setBatchingStrategy(false); const attachmentDownloadQueue = window.attachmentDownloadQueue || []; diff --git a/ts/sql/Client.ts b/ts/sql/Client.ts index 6662df2d04..f853cd943d 100644 --- a/ts/sql/Client.ts +++ b/ts/sql/Client.ts @@ -242,7 +242,15 @@ const dataInterface: ClientInterface = { export default dataInterface; -function goBackToMainProcess() { +async function goBackToMainProcess(): Promise { + window.log.info('data.goBackToMainProcess: waiting for pending queries'); + + // Let pending queries finish before we'll give write access to main process. + // We don't want to be writing from two processes at the same time! + await waitForPendingQueries(); + + window.log.info('data.goBackToMainProcess: switching to main process'); + shouldUseRendererProcess = false; }