diff --git a/server/managers/BackupManager.js b/server/managers/BackupManager.js index e27c2f111..aef76bddc 100644 --- a/server/managers/BackupManager.js +++ b/server/managers/BackupManager.js @@ -657,6 +657,8 @@ class BackupManager { const options = { maxBuffer: 10 * 1024 * 1024, + // Kill after 30 mins (e.g. lock waits) - a killed restore rolls back via --single-transaction + timeout: 30 * 60 * 1000, env: connection.env } childProcess.execFile(command, [...args, ...connection.args], options, (error, stdout, stderr) => { diff --git a/test/server/managers/BackupManager.test.js b/test/server/managers/BackupManager.test.js index b5bbcc311..5c5797814 100644 --- a/test/server/managers/BackupManager.test.js +++ b/test/server/managers/BackupManager.test.js @@ -76,6 +76,7 @@ describe('BackupManager', () => { ]) expect(execFileStub.firstCall.args[1].join(' ')).to.not.include('secretpass') expect(execFileStub.firstCall.args[2].env.PGPASSWORD).to.equal('secretpass') + expect(execFileStub.firstCall.args[2].timeout).to.be.a('number') }) it('should restore Postgres dumps in one transaction and clean existing objects', async () => {