From d13111bc59b6abbd0d9fab7efd4cc747cd898025 Mon Sep 17 00:00:00 2001 From: "coderabbitai[bot]" <136622811+coderabbitai[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 16:06:26 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20Add=20docstrings=20to=20`romy-li?= =?UTF-8?q?fecycle-filter-fail-on-internal-files-or-dirs`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Docstrings generation was requested by @romayalon. * https://github.com/noobaa/noobaa-core/pull/9073#issuecomment-2959523048 The following files were modified: * `src/util/lifecycle_utils.js` --- src/util/lifecycle_utils.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/util/lifecycle_utils.js b/src/util/lifecycle_utils.js index 239ea8116e..952a14ce9c 100644 --- a/src/util/lifecycle_utils.js +++ b/src/util/lifecycle_utils.js @@ -133,21 +133,23 @@ function build_expiration_header(rule, create_time) { ////////////////// /** - * @typedef {{ - * filter: Object - * expiration: Number - * }} filter_params + * Creates a filter function to determine if an object matches specified lifecycle criteria. * - * builds lifecycle filter function + * The returned function excludes temporary files, folder marker objects, and versioned objects before applying additional filter conditions such as prefix, minimum age, tag set, and object size constraints. * - * @param {filter_params} params - * @returns + * @param {filter_params} params - Lifecycle filter and expiration criteria. + * @returns {(object_info: Object) => boolean} A function that returns true if the object matches all lifecycle filter conditions. */ function build_lifecycle_filter(params) { /** * @param {Object} object_info */ return function(object_info) { + // fail if object is a temp file/part or a folder object or a versioned object + if (object_info.key.startsWith(config.NSFS_TEMP_DIR_NAME)) return false; + if (object_info.key.includes(config.NSFS_FOLDER_OBJECT_NAME)) return false; + if (object_info.key.includes('.versions/')) return false; + if (params.filter?.prefix && !object_info.key.startsWith(params.filter.prefix)) return false; if (params.expiration && object_info.age < params.expiration) return false; if (params.filter?.tags && !file_contain_tags(object_info, params.filter.tags)) return false;