Ensure only one sftp rebuild is in progress

This commit is contained in:
Johannes Zellner
2020-08-19 19:13:34 +02:00
parent 4f9cb9a8a1
commit fe07013383

View File

@@ -22,17 +22,30 @@ function startSftp(existingInfra, callback) {
rebuild(callback);
}
var rebuildInProgress = false;
function rebuild(callback) {
assert.strictEqual(typeof options, 'object');
assert.strictEqual(typeof callback, 'function');
if (rebuildInProgress) {
debug('waiting for other rebuild to finish');
return setTimeout(function () { rebuild(callback); }, 5000);
}
rebuildInProgress = true;
function done(error) {
rebuildInProgress = false;
callback(error);
}
debug('rebuilding container');
const tag = infra.images.sftp.tag;
const memoryLimit = 256;
apps.getAll(function (error, result) {
if (error) return callback(error);
if (error) return done(error);
let dataDirs = [];
result.forEach(function (app) {
@@ -73,6 +86,6 @@ function rebuild(callback) {
shell.exec.bind(null, 'stopSftp', 'docker stop sftp || true'),
shell.exec.bind(null, 'removeSftp', 'docker rm -f sftp || true'),
shell.exec.bind(null, 'startSftp', cmd)
], callback);
], done);
});
}