package com.airlock.iam.common.infrastructure.state.redis;

import com.airlock.iam.elog.api.EDefaultLogType;
import com.airlock.iam.elog.api.ELogger;
import com.airlock.iam.elog.api.ELoggerFactory;
import java.time.Duration;
import java.time.Instant;

public record RedisPollingTask(LockKeepAliveService lockKeepAliveService) implements Runnable {
   private static final ELogger LOG = ELoggerFactory.getLogger(RedisPollingTask.class);

   @Override
   public void run() {
      Instant start = Instant.now();
      this.lockKeepAliveService.keepAliveLocks();
      Instant end = Instant.now();
      Duration duration = Duration.between(start, end);
      if (duration.toMillis() > 3000L) {
         LOG.warn(EDefaultLogType.GENERIC_LOG_TYPE, "Redis roundtrip to extend lock lifetimes was slow and took %s ms.".formatted(duration.toMillis()));
      }
   }
}
