From 636fc18b1059dba18cf94b7e1855bec8d177d732 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 2 Sep 2015 20:42:20 +0200 Subject: [PATCH] option to index a given number of games --- modules/gameSearch/src/main/Env.scala | 3 ++- modules/gameSearch/src/main/GameSearchApi.scala | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/gameSearch/src/main/Env.scala b/modules/gameSearch/src/main/Env.scala index 63375c4bea37..d85156374bd8 100644 --- a/modules/gameSearch/src/main/Env.scala +++ b/modules/gameSearch/src/main/Env.scala @@ -39,7 +39,8 @@ final class Env( import akka.pattern.ask private implicit def timeout = makeTimeout minutes 60 def process = { - case "game" :: "search" :: "reset" :: Nil => api.reset inject "done" + case "game" :: "search" :: "reset" :: Nil => api.reset(none) inject "done" + case "game" :: "search" :: "reset" :: nb :: Nil => api.reset(parseIntOption(nb)) inject "done" } } } diff --git a/modules/gameSearch/src/main/GameSearchApi.scala b/modules/gameSearch/src/main/GameSearchApi.scala index 485c22f82589..7b50a329259a 100644 --- a/modules/gameSearch/src/main/GameSearchApi.scala +++ b/modules/gameSearch/src/main/GameSearchApi.scala @@ -49,7 +49,7 @@ final class GameSearchApi(client: ESClient) extends SearchReadApi[Game, Query] { Fields.blackUser -> game.blackPlayer.userId ).noNull - def reset = client.putMapping >> { + def reset(max: Option[Int]) = client.putMapping >> { import lila.db.api._ import lila.game.tube.gameTube var nb = 0 @@ -58,7 +58,7 @@ final class GameSearchApi(client: ESClient) extends SearchReadApi[Game, Query] { for { size <- $count($select.all) batchSize = 2000 - limit = Int.MaxValue + limit = max | Int.MaxValue _ <- $enumerate.bulk[Option[Game]]($query.all, batchSize, limit) { gameOptions => val games = gameOptions.flatten filter storable val nbGames = games.size @@ -72,7 +72,7 @@ final class GameSearchApi(client: ESClient) extends SearchReadApi[Game, Query] { nbSkipped = nbSkipped + gameOptions.size - nbGames val perS = (batchSize * 1000) / math.max(1, (nowMillis - started)) started = nowMillis - loginfo("[game search] Indexed %d of %d, skipped %d, at %d/s".format(nb, size, nbSkipped, perS)) + loginfo("[game search] Indexed %d of %d, skipped %d, at %d/s".format(nb + nbSkipped, size, nbSkipped, perS)) } } } yield ()