UNPKG

@tableau/taco-toolkit

Version:
92 lines 8.46 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TempDataManager = void 0; var node_fs_1 = __importDefault(require("node:fs")); var node_path_1 = __importDefault(require("node:path")); var eps_logger_1 = require("../logging/eps-logger"); var file_path_1 = require("../utils/file-path"); var TempDataManager = /** @class */ (function () { function TempDataManager(epsInstanceId, tempDirRootPath) { this.epsInstanceId = epsInstanceId; this.tempDirRootPath = node_path_1.default.resolve(tempDirRootPath, 'tempData'); if (this.tempDirRootPath.length >= 136) { // Duckdb read APIs can only support filepaths less than 255 characters in length. // Fixed path after tempData for Windows is 119 characters, so tempDirRootPath length // has to be less than 136. throw new Error("tempDirRootPath has to be less than 136 characters in length. tempDirRootPath: ".concat(this.tempDirRootPath)); } } // path example: <tempDirRootPath>/tempData/eps-489f4343-1e73-4a22-b047-f0063969c28a/ext-b8ced5be-a728-4a71-98b4-6674cb064498/f-098f6bcd4621d373cade4e832627b4f6 TempDataManager.prototype.getTempDataFilePath = function (extractorId, filename) { var tempDataDir = getExtractorDirPath(this.tempDirRootPath, this.epsInstanceId, extractorId); var filepath = node_path_1.default.join(tempDataDir, "f-".concat((0, file_path_1.getMD5Hash)(filename))); // Duckdb read APIs can only support filepaths less than 255 characters in length. if (filepath.length >= 255) { throw new Error("Temporary data filepath has to be less than 255 characters in length. tempDataFilePath: ".concat(filepath)); } return filepath; }; /** * Retrieves the directory path containing partitioned data stored as multiple files * associated with a specific table. e.g. parquet data * * @returns The directory path for the partitioned data of the specified table and extractor. * example: <tempDirRootPath>/tempData/eps-489f4343-1e73-4a22-b047-f0063969c28a/ext-b8ced5be-a728-4a71-98b4-6674cb064498/f-098f6bcd4621d373cade4e832627b4f6/ */ TempDataManager.prototype.getTempDataDirPath = function (extractorId, dirName) { var tempDataDir = getExtractorDirPath(this.tempDirRootPath, this.epsInstanceId, extractorId); var dirPath = node_path_1.default.join(tempDataDir, "f-".concat((0, file_path_1.getMD5Hash)(dirName))); return dirPath; }; TempDataManager.prototype.createTempDataDirIfNotExists = function (extractorId) { // Adding eps- and extractor- prefixes to make sure that // directory creation is successful on Windows OS. var tempDataDir = getExtractorDirPath(this.tempDirRootPath, this.epsInstanceId, extractorId); // create temp log dir if it does not exist if (!node_fs_1.default.existsSync(tempDataDir)) { node_fs_1.default.mkdirSync(tempDataDir, { recursive: true }); eps_logger_1.Logger.info("Temporary data directory created: ".concat(tempDataDir)); } return tempDataDir; }; TempDataManager.prototype.deleteExtractorTempDataDir = function (extractorId) { var tempDataDir = getExtractorDirPath(this.tempDirRootPath, this.epsInstanceId, extractorId); eps_logger_1.Logger.info("Clean up Extractor temporary data directory if exists: ".concat(tempDataDir)); removeDirIfExists(tempDataDir); }; TempDataManager.prototype.deleteEpsTempDataDir = function () { var dirPath = getEPSInstanceDirPath(this.tempDirRootPath, this.epsInstanceId); eps_logger_1.Logger.info("Clean up EPS temporary data directory if exists: ".concat(dirPath)); removeDirIfExists(dirPath); }; return TempDataManager; }()); exports.TempDataManager = TempDataManager; /** * Delete the given directory if it exists. * * It was observed that ENOTEMPTY error is intermittently thrown on Windows, * so the function will do 3 retries for deletion. */ function removeDirIfExists(dirPath) { if (node_fs_1.default.existsSync(dirPath)) { node_fs_1.default.rmSync(dirPath, { recursive: true, force: true, maxRetries: 3, retryDelay: 500, }); eps_logger_1.Logger.info("Removed: ".concat(dirPath)); } } function getExtractorDirPath(tempDirRootPath, epsInstanceId, extractorId) { var epsInstanceDirPath = getEPSInstanceDirPath(tempDirRootPath, epsInstanceId); return node_path_1.default.join(epsInstanceDirPath, "ext-".concat(extractorId)); } function getEPSInstanceDirPath(tempDirRootPath, epsInstanceId) { return node_path_1.default.join(tempDirRootPath, "eps-".concat(epsInstanceId)); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1kYXRhLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXBzL21vZHVsZXMvdGVtcC1kYXRhLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQXdCO0FBQ3hCLHdEQUE0QjtBQUM1QixvREFBOEM7QUFDOUMsZ0RBQStDO0FBRS9DO0lBSUUseUJBQVksYUFBcUIsRUFBRSxlQUF1QjtRQUN4RCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtRQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLG1CQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUNoRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRTtZQUN0QyxrRkFBa0Y7WUFDbEYscUZBQXFGO1lBQ3JGLDJCQUEyQjtZQUMzQixNQUFNLElBQUksS0FBSyxDQUNiLHlGQUFrRixJQUFJLENBQUMsZUFBZSxDQUFFLENBQ3pHLENBQUE7U0FDRjtJQUNILENBQUM7SUFFRCxnS0FBZ0s7SUFDaEssNkNBQW1CLEdBQW5CLFVBQW9CLFdBQW1CLEVBQUUsUUFBZ0I7UUFDdkQsSUFBTSxXQUFXLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBQzlGLElBQU0sUUFBUSxHQUFHLG1CQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxZQUFLLElBQUEsc0JBQVUsRUFBQyxRQUFRLENBQUMsQ0FBRSxDQUFDLENBQUE7UUFDcEUsa0ZBQWtGO1FBQ2xGLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FDYixrR0FBMkYsUUFBUSxDQUFFLENBQ3RHLENBQUE7U0FDRjtRQUNELE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFRDs7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