From de38a7054d0524f41fa288f7f1714e91573f0a66 Mon Sep 17 00:00:00 2001 From: Thanh Le Date: Wed, 20 Mar 2024 14:14:17 +0700 Subject: [PATCH] Add more logs --- app/src/main/scala/App.scala | 4 ++-- app/src/main/scala/Executor.scala | 18 +++++++++++------- app/src/main/scala/http/FishnetRoutes.scala | 15 ++++++++------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/app/src/main/scala/App.scala b/app/src/main/scala/App.scala index 71b99d7..6482b93 100644 --- a/app/src/main/scala/App.scala +++ b/app/src/main/scala/App.scala @@ -24,8 +24,8 @@ class FishnetApp(res: AppResources, config: AppConfig)(using Logger[IO]): def run(): Resource[IO, Unit] = for executor <- createExcutor - httpApi = HttpApi(executor, HealthCheck(), config.server) - server <- MkHttpServer.apply.newEmber(config.server, httpApi.httpApp) + httpApp = HttpApi(executor, HealthCheck(), config.server).httpApp + server <- MkHttpServer.apply.newEmber(config.server, httpApp) _ <- RedisSubscriberJob(executor, res.redisPubsub).run() _ <- WorkCleaningJob(executor).run() _ <- Logger[IO].info(s"Starting server on ${config.server.host}:${config.server.port}").toResource diff --git a/app/src/main/scala/Executor.scala b/app/src/main/scala/Executor.scala index d643cdb..8f1a77e 100644 --- a/app/src/main/scala/Executor.scala +++ b/app/src/main/scala/Executor.scala @@ -50,8 +50,11 @@ object Executor: ref.flatModify: state => val (newState, effect) = if state.isFull(config.maxSize) then + def ids = state.tasks.map(t => t.id -> t.request.id).mkString(", ") AppState.empty -> - Logger[IO].warn(s"stateSize=${state.size} maxSize=${config.maxSize}. Dropping all!") + Logger[IO].warn( + s"stateSize=${state.size} maxSize=${config.maxSize}. Dropping all! tasks: $ids" + ) else state -> IO.unit newState.add(task) -> effect *> monitor.updateSize(newState) @@ -80,12 +83,13 @@ object Executor: newState -> logs private def invalidate(workId: WorkId, key: ClientKey): IO[Unit] = - ref.flatModify: state => - state.remove(workId) -> - state - .get(workId) - .fold(Logger[IO].warn(s"unknown and invalid work from $key")): task => - Logger[IO].warn(s"invalid lila work $task from $key") + Logger[IO].info(s"invalid work: $workId by $key") *> + ref.flatModify: state => + state.remove(workId) -> + state + .get(workId) + .fold(Logger[IO].warn(s"unknown and invalid work from $key")): task => + Logger[IO].warn(s"invalid lila work $task from $key") def clean(since: Instant): IO[Unit] = ref.flatModify: state => diff --git a/app/src/main/scala/http/FishnetRoutes.scala b/app/src/main/scala/http/FishnetRoutes.scala index db3a326..3853b99 100644 --- a/app/src/main/scala/http/FishnetRoutes.scala +++ b/app/src/main/scala/http/FishnetRoutes.scala @@ -9,12 +9,13 @@ import org.http4s.circe.CirceEntityDecoder.* import org.http4s.circe.CirceEntityEncoder.* import org.http4s.dsl.Http4sDsl import org.http4s.server.Router +import org.typelevel.log4cats.Logger -final class FishnetRoutes(executor: Executor) extends Http4sDsl[IO]: +final class FishnetRoutes(executor: Executor)(using Logger[IO]) extends Http4sDsl[IO]: - private[http] val prefixPath = "/fishnet" + private val prefixPath = "/fishnet" - private val httpRoutes: HttpRoutes[IO] = HttpRoutes.of[IO]: + private val httpRoutes = HttpRoutes.of[IO]: case req @ POST -> Root / "acquire" => req @@ -27,13 +28,13 @@ final class FishnetRoutes(executor: Executor) extends Http4sDsl[IO]: executor.move(id, move.fishnet.apikey, move.move.bestmove) >> acquire(move.fishnet.apikey) - def acquire(key: ClientKey): IO[Response[IO]] = + private def acquire(key: ClientKey): IO[Response[IO]] = executor .acquire(key) - .map(_.map(_.toResponse)) - .flatMap(_.fold(NoContent())(Ok(_))) + .flatMap(_.fold(NoContent())(task => Ok(task.toResponse))) .recoverWith: - case x => InternalServerError(x.getMessage().nn) + case x => + Logger[IO].error(x.getMessage) *> InternalServerError(x.getMessage.nn) val routes: HttpRoutes[IO] = Router(prefixPath -> httpRoutes)