-- 1. 정상적으로 `unlock` 되는 경우
2025-05-13 13:04:00.052.DefaultDispatcher-worker-1 @coroutine#1> INFO T[] U[] M[] - Redisson 'ktc:202505131304:expire-traffic-token-schedule-lock' locked.
2025-05-13 13:04:00.122.DefaultDispatcher-worker-1 @coroutine#1> INFO T[] U[] M[] - Expired Traffic Token count : 0
2025-05-13 13:04:00.131.DefaultDispatcher-worker-1 @coroutine#1> INFO T[] U[] M[] - Redisson 'ktc:202505131304:expire-traffic-token-schedule-lock' unlocked.
-- 2. 비정상적으로 `unlock` 되는 경우
2025-05-13 13:05:00.008.DefaultDispatcher-worker-1 @coroutine#2> INFO T[] U[] M[] - Redisson 'ktc:202505131305:expire-traffic-token-schedule-lock' locked.
2025-05-13 13:05:00.022.DefaultDispatcher-worker-4 @coroutine#2> INFO T[] U[] M[] - Expired Traffic Token count : 0
-- 3. 비정상적으로 `unlock` 되는 경우
2025-05-13 13:06:00.012.DefaultDispatcher-worker-4 @coroutine#3> INFO T[] U[] M[] - Redisson 'ktc:202505131306:expire-traffic-token-schedule-lock' locked.
2025-05-13 13:06:00.025.DefaultDispatcher-worker-1 @coroutine#3> INFO T[] U[] M[] - Expired Traffic Token count : 0
-- 4. 정상적으로 `unlock` 되는 경우
2025-05-13 13:07:00.005.DefaultDispatcher-worker-4 @coroutine#4> INFO T[] U[] M[] - Redisson 'ktc:202505131307:expire-traffic-token-schedule-lock' locked.
2025-05-13 13:07:00.018.DefaultDispatcher-worker-4 @coroutine#4> INFO T[] U[] M[] - Expired Traffic Token count : 0
2025-05-13 13:07:00.020.DefaultDispatcher-worker-4 @coroutine#4> INFO T[] U[] M[] - Redisson 'ktc:202505131307:expire-traffic-token-schedule-lock' unlocked.
override suspend fun <R> lock(
key: String,
waitTime: Long,
leaseTime: Long,
timeUnit: TimeUnit,
block: suspend () -> R
): R {
val lock = redissonClient.getLock(key)
return try {
if (lock.tryLock(waitTime, leaseTime, timeUnit)) {
block()
} else {
throw InternalServiceException(ErrorCode.REDISSON_LOCK_ATTEMPT_ERROR)
}
} finally {
if (lock.isHeldByCurrentThread) {
lock.unlock()
}
}
}
-- 2. 비정상적으로 `unlock` 되는 경우
2025-05-13 13:05:00.008.DefaultDispatcher-worker-1 @coroutine#2> INFO T[] U[] M[] - Redisson 'ktc:202505131305:expire-traffic-token-schedule-lock' locked.
2025-05-13 13:05:00.022.DefaultDispatcher-worker-4 @coroutine#2> INFO T[] U[] M[] - Expired Traffic Token count : 0
-- 3. 비정상적으로 `unlock` 되는 경우
2025-05-13 13:06:00.012.DefaultDispatcher-worker-4 @coroutine#3> INFO T[] U[] M[] - Redisson 'ktc:202505131306:expire-traffic-token-schedule-lock' locked.
2025-05-13 13:06:00.025.DefaultDispatcher-worker-1 @coroutine#3> INFO T[] U[] M[] - Expired Traffic Token count : 0
override suspend fun <R> lock(
key: String,
waitTime: Long,
leaseTime: Long,
timeUnit: TimeUnit,
block: suspend () -> R
): R = withContext(Dispatchers.IO) {
val lock = redissonClient.getLock(key)
try {
if (lock.tryLock(waitTime, leaseTime, timeUnit)) {
block()
} else {
throw InternalServiceException(ErrorCode.REDISSON_LOCK_ATTEMPT_ERROR)
}
} finally {
if (lock.isHeldByCurrentThread) {
lock.unlock()
}
}
}
2025-05-13 13:19:00.052.DefaultDispatcher-worker-2 @coroutine#1> INFO T[] U[] M[] - Redisson 'ktc:202505131319:expire-traffic-token-schedule-lock' locked.
2025-05-13 13:19:00.113.DefaultDispatcher-worker-2 @coroutine#1> INFO T[] U[] M[] - Expired Traffic Token count : 0
2025-05-13 13:19:00.121.DefaultDispatcher-worker-2 @coroutine#1> INFO T[] U[] M[] - Redisson 'ktc:202505131319:expire-traffic-token-schedule-lock' unlocked.
2025-05-13 13:20:00.022.DefaultDispatcher-worker-3 @coroutine#2> INFO T[] U[] M[] - Redisson 'ktc:202505131320:expire-traffic-token-schedule-lock' locked.
2025-05-13 13:20:00.036.DefaultDispatcher-worker-3 @coroutine#2> INFO T[] U[] M[] - Expired Traffic Token count : 0
2025-05-13 13:20:00.039.DefaultDispatcher-worker-3 @coroutine#2> INFO T[] U[] M[] - Redisson 'ktc:202505131320:expire-traffic-token-schedule-lock' unlocked.
2025-05-13 13:21:00.018.DefaultDispatcher-worker-1 @coroutine#3> INFO T[] U[] M[] - Redisson 'ktc:202505131321:expire-traffic-token-schedule-lock' locked.
2025-05-13 13:21:00.030.DefaultDispatcher-worker-1 @coroutine#3> INFO T[] U[] M[] - Expired Traffic Token count : 0
2025-05-13 13:21:00.032.DefaultDispatcher-worker-1 @coroutine#3> INFO T[] U[] M[] - Redisson 'ktc:202505131321:expire-traffic-token-schedule-lock' unlocked.