From e0d780ac0e93dc2d4a9bb464888a4ae25199477d Mon Sep 17 00:00:00 2001 From: sohyun-ku Date: Wed, 12 Jul 2023 12:12:24 +0900 Subject: [PATCH] Add chunk to selectAllUuidsByWithoutAgent --- .../scavenger/repository/sql/JvmSql.kt | 21 ++++++++++--------- .../service/GarbageCollectService.kt | 9 ++++++-- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/scavenger-collector/src/main/kotlin/com/navercorp/scavenger/repository/sql/JvmSql.kt b/scavenger-collector/src/main/kotlin/com/navercorp/scavenger/repository/sql/JvmSql.kt index 6917fb76..860f16b3 100644 --- a/scavenger-collector/src/main/kotlin/com/navercorp/scavenger/repository/sql/JvmSql.kt +++ b/scavenger-collector/src/main/kotlin/com/navercorp/scavenger/repository/sql/JvmSql.kt @@ -58,15 +58,16 @@ class JvmSql : SqlGeneratorSupport() { fun selectAllUuidsByWithoutAgent(): String = """ - SELECT uuid FROM - jvms - WHERE - customerId = :customerId - AND uuid NOT IN ( - SELECT - jvmUuid - FROM - agent_state - ) + SELECT uuid FROM + jvms + WHERE + customerId = :customerId + AND uuid NOT IN ( + SELECT + jvmUuid + FROM + agent_state + ) + LIMIT 10000 """.trimIndent() } diff --git a/scavenger-collector/src/main/kotlin/com/navercorp/scavenger/service/GarbageCollectService.kt b/scavenger-collector/src/main/kotlin/com/navercorp/scavenger/service/GarbageCollectService.kt index 44d89955..e2c7bee1 100644 --- a/scavenger-collector/src/main/kotlin/com/navercorp/scavenger/service/GarbageCollectService.kt +++ b/scavenger-collector/src/main/kotlin/com/navercorp/scavenger/service/GarbageCollectService.kt @@ -101,13 +101,18 @@ class GarbageCollectService( customerId, baseDateTime.minusMillis(intervalService.batchSweepMarginMilliSecond) ) - val uuidsWithoutAgent = jvmDao.findAllUuidsByWithoutAgent(customerId) - jvmDao.deleteAllByCustomerIdAndUuids(customerId, agentStates.map { it.jvmUuid } + uuidsWithoutAgent) + jvmDao.deleteAllByCustomerIdAndUuids(customerId, agentStates.map { it.jvmUuid }) .also { logger.info { "[$customerId] $it jvm is swiped. " } } agentStateDao.deleteAllByCustomerIdAndIds(customerId, agentStates.map { it.id }) .also { logger.info { "[$customerId] $it agent state is swiped. " } } } while (agentStates.isNotEmpty()) + + do { + val uuidsWithoutAgent = jvmDao.findAllUuidsByWithoutAgent(customerId) + jvmDao.deleteAllByCustomerIdAndUuids(customerId, uuidsWithoutAgent) + .also { logger.info { "[$customerId] $it jvm without agent is swiped." } } + } while (uuidsWithoutAgent.isNotEmpty()) } catch (e: Exception) { logger.warn(e) { "[$customerId] error occurred while sweepAgentStates, but ignored. " } }