diff --git a/src/backend/job/biz-job/src/main/kotlin/com/tencent/bkrepo/job/batch/file/BasedRepositoryFileExpireResolver.kt b/src/backend/job/biz-job/src/main/kotlin/com/tencent/bkrepo/job/batch/file/BasedRepositoryFileExpireResolver.kt index b92d81164e..c55818449d 100644 --- a/src/backend/job/biz-job/src/main/kotlin/com/tencent/bkrepo/job/batch/file/BasedRepositoryFileExpireResolver.kt +++ b/src/backend/job/biz-job/src/main/kotlin/com/tencent/bkrepo/job/batch/file/BasedRepositoryFileExpireResolver.kt @@ -93,8 +93,16 @@ class BasedRepositoryFileExpireResolver( // 获取每个的sha256 val sha256 = ret[SHA256].toString() val fullPath = ret[FULL_PATH].toString() - temp.add(sha256) - logger.info("Retain node $projectId/$repoName$fullPath, $sha256.") + var fileExtensionCheck = true + it.fileExtension?.let { + if (!it.contains("/") && !it.any { fullPath.endsWith(it) }) { + fileExtensionCheck = false + } + } + if (fileExtensionCheck) { + temp.add(sha256) + logger.info("Retain node $projectId/$repoName$fullPath, $sha256.") + } } } return temp @@ -106,7 +114,6 @@ class BasedRepositoryFileExpireResolver( projectId = repoConfig.projectId, repoName = repoConfig.repoName, pathPrefix = repoConfig.pathPrefix, - fileExtension = listOf("/"), days = repoConfig.days, size = expireConfig.size.toMegabytes() ) @@ -122,12 +129,7 @@ class BasedRepositoryFileExpireResolver( size = tFileCache.size, dateTime = dateTime, collection = collectionName, - pathPrefixs = tFileCache.pathPrefix, - fileExtension = if(tFileCache.fileExtension.orEmpty().size == 0) { - listOf("/") - } else { - tFileCache.fileExtension.orEmpty() - }, + pathPrefixs = tFileCache.pathPrefix ) } @@ -138,26 +140,17 @@ class BasedRepositoryFileExpireResolver( dateTime: LocalDateTime, collection: String, batchSize: Int = 20000, - pathPrefixs: List, - fileExtension: List, + pathPrefixs: List ): Set> { val temp = mutableSetOf>() val prefixCri = pathPrefixs.map { val escapedValue = MongoEscapeUtils.escapeRegex(it) Criteria.where(FULL_PATH).regex("^$escapedValue") } - val fileExtension = fileExtension.map { - val escapedValue = MongoEscapeUtils.escapeRegex(it) - Criteria.where(FULL_PATH).regex("$escapedValue$") - } - val pathMatches: ArrayList = arrayListOf() - pathMatches.addAll(prefixCri) - pathMatches.addAll(fileExtension) val query = Query.query( Criteria.where(PROJECT).isEqualTo(projectId).and(REPO).isEqualTo(repoName) .and(FOLDER).isEqualTo(false).and(SIZE).gte(DataSize.ofMegabytes(size).toBytes()) - .and(LAST_ACCESS_DATE).gt(dateTime) - .andOperator(Criteria().orOperator(pathMatches)) + .and(LAST_ACCESS_DATE).gt(dateTime).andOperator(Criteria().orOperator(prefixCri)) .and(DELETED_DATE).isEqualTo(null) ) diff --git a/src/backend/job/biz-job/src/main/kotlin/com/tencent/bkrepo/job/service/impl/FileCacheServiceImp.kt b/src/backend/job/biz-job/src/main/kotlin/com/tencent/bkrepo/job/service/impl/FileCacheServiceImp.kt index e5299db51f..763d5a06f1 100644 --- a/src/backend/job/biz-job/src/main/kotlin/com/tencent/bkrepo/job/service/impl/FileCacheServiceImp.kt +++ b/src/backend/job/biz-job/src/main/kotlin/com/tencent/bkrepo/job/service/impl/FileCacheServiceImp.kt @@ -48,6 +48,7 @@ class FileCacheServiceImp constructor( projectId = fileCacheRequest.projectId, repoName = fileCacheRequest.repoName, pathPrefix = fileCacheRequest.pathPrefix, + fileExtension = fileCacheRequest.fileExtension, size = fileCacheRequest.size, days = fileCacheRequest.days )