From 468056dcf29e77d210d51eada3939855cf5558fa Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 16 Dec 2019 09:51:50 -0600 Subject: [PATCH] stop the fishnet redis client --- modules/fishnet/src/main/Env.scala | 6 ++++-- modules/fishnet/src/main/FishnetRedis.scala | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/modules/fishnet/src/main/Env.scala b/modules/fishnet/src/main/Env.scala index 4ca7c2f25d..6517da5628 100644 --- a/modules/fishnet/src/main/Env.scala +++ b/modules/fishnet/src/main/Env.scala @@ -32,7 +32,8 @@ final class Env( analysisRepo: lila.analyse.AnalysisRepo, db: lila.db.Db, asyncCache: lila.memo.AsyncCache.Builder, - sink: lila.analyse.Analyser + sink: lila.analyse.Analyser, + lifecycle: play.api.inject.ApplicationLifecycle )(implicit ec: scala.concurrent.ExecutionContext, system: ActorSystem) { private val config = appConfig.get[FishnetConfig]("fishnet")(AutoConfig.loader) @@ -42,7 +43,8 @@ final class Env( private lazy val redis = new FishnetRedis( RedisClient create RedisURI.create(config.redisUri), "fishnet-in", - "fishnet-out" + "fishnet-out", + lifecycle ) private lazy val clientVersion = new Client.ClientVersion(config.clientMinVersion) diff --git a/modules/fishnet/src/main/FishnetRedis.scala b/modules/fishnet/src/main/FishnetRedis.scala index 734169dfcc..c0fab94db7 100644 --- a/modules/fishnet/src/main/FishnetRedis.scala +++ b/modules/fishnet/src/main/FishnetRedis.scala @@ -3,6 +3,7 @@ package lila.fishnet import chess.format.Uci import io.lettuce.core._ import io.lettuce.core.pubsub._ +import scala.concurrent.Future import lila.hub.actorApi.map.Tell import lila.hub.actorApi.round.{ FishnetPlay, FishnetStart } @@ -11,8 +12,9 @@ import lila.common.Bus final class FishnetRedis( client: RedisClient, chanIn: String, - chanOut: String -) { + chanOut: String, + lifecycle: play.api.inject.ApplicationLifecycle +)(implicit ec: scala.concurrent.ExecutionContext) { val connIn = client.connectPubSub() val connOut = client.connectPubSub() @@ -35,6 +37,14 @@ final class FishnetRedis( } }) + lifecycle.addStopHook { () => + logger.info("Stopping the Redis pool...") + Future { + client.shutdown() + logger.info("Stopped the Redis pool.") + } + } + private def writeWork(work: Work.Move): String = List( work.game.id,