diff --git a/lib/core-callback/dumper/req.js b/lib/core-callback/dumper/req.js index f24a06e..f200885 100644 --- a/lib/core-callback/dumper/req.js +++ b/lib/core-callback/dumper/req.js @@ -7,7 +7,8 @@ const config = require('komodo-sdk/config'); const logger = require('tektrans-logger'); const moment = require('moment'); -const mkdirIfNotExists = require('../../utils/mkdir-if-not-exists'); +// const mkdirIfNotExists = require('../../utils/mkdir-if-not-exists'); +const mkdirp = require('mkdirp'); const baseDumpDir = path.join('dump', 'core-callback'); const lastDumpFileName = path.join(baseDumpDir, 'last-req'); @@ -51,7 +52,8 @@ ${JSON.stringify(req.body, null, 2)} ); try { - await mkdirIfNotExists(xid, path.dirname(dumpFileName)); + // await mkdirIfNotExists(xid, path.dirname(dumpFileName)); + await mkdirp(path.dirname(dumpFileName)); await fsPromise.writeFile(lastDumpFileName, data); await fsPromise.writeFile(dumpFileName, data); } catch (e) { diff --git a/lib/core-callback/dumper/sender.js b/lib/core-callback/dumper/sender.js index 1307878..278b462 100644 --- a/lib/core-callback/dumper/sender.js +++ b/lib/core-callback/dumper/sender.js @@ -5,8 +5,9 @@ const path = require('path'); const config = require('komodo-sdk/config'); const logger = require('tektrans-logger'); const moment = require('moment'); +const mkdirp = require('mkdirp'); -const mkdirIfNotExists = require('../../utils/mkdir-if-not-exists'); +// const mkdirIfNotExists = require('../../utils/mkdir-if-not-exists'); const baseDumpDir = path.join('dump', 'core-callback'); const lastDumpFileName = path.join(baseDumpDir, 'last-sent'); @@ -56,7 +57,8 @@ ${ ); try { - await mkdirIfNotExists(xid, path.dirname(dumpFileName)); + // await mkdirIfNotExists(xid, path.dirname(dumpFileName)); + await mkdirp(path.dirname(dumpFileName)); await fsPromise.writeFile(lastDumpFileName, data); await fsPromise.writeFile(dumpFileName, data); } catch (e) { diff --git a/lib/partner-listener/dumper/index.js b/lib/partner-listener/dumper/index.js index faa5ea9..c9dd2da 100644 --- a/lib/partner-listener/dumper/index.js +++ b/lib/partner-listener/dumper/index.js @@ -5,8 +5,9 @@ const path = require('path'); const moment = require('moment'); const config = require('komodo-sdk/config'); const logger = require('tektrans-logger'); +const mkdirp = require('mkdirp'); -const mkdirIfNotExists = require('../../utils/mkdir-if-not-exists'); +// const mkdirIfNotExists = require('../../utils/mkdir-if-not-exists'); const baseDumpDir = path.join('dump', 'partner-listener'); const lastDumpFileName = path.join(baseDumpDir, 'last'); @@ -48,7 +49,8 @@ ${typeof responseBody === 'string' ? responseBody : JSON.stringify(responseBody, ); try { - await mkdirIfNotExists(xid, path.dirname(dumpFileName), MODULE_NAME); + // await mkdirIfNotExists(xid, path.dirname(dumpFileName), MODULE_NAME); + await mkdirp(path.dirname(dumpFileName)); await fsPromise.writeFile(lastDumpFileName, data); await fsPromise.writeFile(dumpFileName, data); } catch (e) { diff --git a/lib/utils/mkdir-if-not-exists.js b/lib/utils/mkdir-if-not-exists.js index 0002c00..9323684 100644 --- a/lib/utils/mkdir-if-not-exists.js +++ b/lib/utils/mkdir-if-not-exists.js @@ -1,30 +1,57 @@ const MODULE_NAME = 'MKDIR-IF-NOT-EXISTS'; const fsPromise = require('fs').promises; +const mkdirp = require('mkdirp'); const logger = require('tektrans-logger'); -const mkdir = async (xid, dirname, callerName) => { - try { - logger.verbose(`${MODULE_NAME} 6B08D52D: Creating directory`, { - xid, dirname, callerName, - }); +logger.verbose(`${MODULE_NAME} 5C419B7B: CEKIDOT`); - await fsPromise.mkdir(dirname, { recursive: true }); +const existed = []; +/** + * @deprecated because mkdirp is safe if dir already exists + * @param {} filename + */ +const isFileExists = async (filename) => { + if (existed.indexOf(filename) >= 0) return true; + + try { + await fsPromise.stat(filename); + existed.push(filename); + return true; } catch (e) { - logger.warn(`${MODULE_NAME} 857718E9: Exception on creating directory`, { - xid, - dirname, - callerName, - eCode: e.code, - eMessage: e.message, - }); + return false; } }; +/** + * @deprecated please use mkdirp directly + * @param {} xid + * @param {} dirname + * @param {} callerName + */ module.exports = async (xid, dirname, callerName) => { - try { - await fsPromise.stat(dirname); - } catch (e) { - await mkdir(xid, dirname, callerName); + logger.verbose(`${MODULE_NAME} 4BD9F146: Create directory if not exists`, { + xid, dirname, callerName, + }); + + const alreadyExists = await isFileExists(dirname); + if (!alreadyExists) { + logger.verbose(`${MODULE_NAME} 6B08D52D: Creating directory`, { + xid, dirname, callerName, + }); + + try { + await mkdirp(dirname); + } catch (e) { + logger.warn(`${MODULE_NAME} 857718E9: Exception on creating directory`, { + xid, + dirname, + callerName, + eCode: e.code, + eMessage: e.message, + }); + } + } else { + logger.verbose(`${MODULE_NAME} 14A094F5: Directory already exists`, { xid, dirname, callerName }); } };