From 626364bab81fbac745ee9ec67d4f00631120744a Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Thu, 20 May 2021 13:54:08 -0700 Subject: [PATCH] One more fix for mongodump.exe invocation. --- db.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/db.js b/db.js index 68f941fc..d33b39ae 100644 --- a/db.js +++ b/db.js @@ -1644,6 +1644,12 @@ module.exports.CreateDB = function (parent, func) { return cmd; } + // MongoDB mongodump requires that the URL have a / at the end of the path. If not present, this will add it. + function terminateUrlPathWithSlash(str) { + const u = require('url').parse(str); + return u.protocol + '//' + u.host + (u.pathname ? u.pathname : '') + '/' + (u.search ? u.search : ''); + } + // Check that the server is capable of performing a backup obj.checkBackupCapability = function (func) { if ((parent.config.settings.autobackup == null) || (parent.config.settings.autobackup == false)) { func(); } @@ -1656,7 +1662,7 @@ module.exports.CreateDB = function (parent, func) { var mongoDumpPath = 'mongodump'; if (parent.config.settings.autobackup && parent.config.settings.autobackup.mongodumppath) { mongoDumpPath = parent.config.settings.autobackup.mongodumppath; } var cmd = '"' + mongoDumpPath + '"'; - if (dburl) { cmd = '\"' + mongoDumpPath + '\" --uri=\"' + dburl + '\"'; } + if (dburl) { cmd = '\"' + mongoDumpPath + '\" --uri=\"' + terminateUrlPathWithSlash(dburl) + '\"'; } cmd += (parent.platform == 'win32') ? ' --archive=\"nul\"' : ' --archive=\"/dev/null\"'; const child_process = require('child_process'); child_process.exec(cmd, { cwd: backupPath }, function (error, stdout, stderr) { @@ -1834,7 +1840,7 @@ module.exports.CreateDB = function (parent, func) { if (parent.config.settings.autobackup && parent.config.settings.autobackup.mongodumppath) { mongoDumpPath = parent.config.settings.autobackup.mongodumppath; } const child_process = require('child_process'); var cmd = '\"' + mongoDumpPath + '\" --db=\"' + dbname + '\" --archive=\"' + newBackupPath + '.archive\"'; - if (dburl) { cmd = '\"' + mongoDumpPath + '\" --uri=\"' + dburl + '\" --archive=\"' + newBackupPath + '.archive\"'; } + if (dburl) { cmd = '\"' + mongoDumpPath + '\" --uri=\"' + terminateUrlPathWithSlash(dburl) + '\" --archive=\"' + newBackupPath + '.archive\"'; } var backupProcess = child_process.exec(cmd, { cwd: backupPath }, function (error, stdout, stderr) { try { var mongoDumpSuccess = true;