From f2a1eacaec5d500185d8ffd7007972ee0ea4ee4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20Mili=C4=87?= Date: Fri, 5 Sep 2025 08:29:51 +0200 Subject: [PATCH] bugfix/Fix consumer rate limiting state function --- .../scala/code/api/util/RateLimitingUtil.scala | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/obp-api/src/main/scala/code/api/util/RateLimitingUtil.scala b/obp-api/src/main/scala/code/api/util/RateLimitingUtil.scala index 079a30e80..a6ecb1df4 100644 --- a/obp-api/src/main/scala/code/api/util/RateLimitingUtil.scala +++ b/obp-api/src/main/scala/code/api/util/RateLimitingUtil.scala @@ -153,13 +153,14 @@ object RateLimitingUtil extends MdcLoggable { def getInfo(consumerKey: String, period: LimitCallPeriod): ((Option[Long], Option[Long]), LimitCallPeriod) = { val key = createUniqueKey(consumerKey, period) - val ttl = Redis.use(JedisMethod.TTL, key).get.toLong - ttl match { - case -2 => - ((None, None), period) - case _ => - ((Redis.use(JedisMethod.TTL, key).map(_.toLong), Some(ttl)), period) - } + + // get TTL + val ttlOpt: Option[Long] = Redis.use(JedisMethod.TTL, key).map(_.toLong) + + // get value (assuming string storage) + val valueOpt: Option[Long] = Redis.use(JedisMethod.GET, key).map(_.toLong) + + ((valueOpt, ttlOpt), period) } getInfo(consumerKey, RateLimitingPeriod.PER_SECOND) :: @@ -167,7 +168,7 @@ object RateLimitingUtil extends MdcLoggable { getInfo(consumerKey, RateLimitingPeriod.PER_HOUR) :: getInfo(consumerKey, RateLimitingPeriod.PER_DAY) :: getInfo(consumerKey, RateLimitingPeriod.PER_WEEK) :: - getInfo(consumerKey, RateLimitingPeriod.PER_MONTH) :: + getInfo(consumerKey, RateLimitingPeriod.PER_MONTH) :: Nil }