From 716252721ccad43388cbbb7e3c13f419a05d1fda Mon Sep 17 00:00:00 2001 From: Eike Kettner Date: Thu, 7 Jan 2021 23:29:47 +0100 Subject: [PATCH] Fix cache clearing It must be cancelled when obtaining a pipeline. --- .../src/main/scala/docspell/analysis/nlp/PipelineCache.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/analysis/src/main/scala/docspell/analysis/nlp/PipelineCache.scala b/modules/analysis/src/main/scala/docspell/analysis/nlp/PipelineCache.scala index 663fbcbf..9cc3f2d7 100644 --- a/modules/analysis/src/main/scala/docspell/analysis/nlp/PipelineCache.scala +++ b/modules/analysis/src/main/scala/docspell/analysis/nlp/PipelineCache.scala @@ -136,12 +136,12 @@ object PipelineCache { private[this] val log = Logger.log4s[F](logger) def withCache: Resource[F, Unit] = - Resource.make(counter.update(_ + 1))(_ => + Resource.make(counter.update(_ + 1) *> cancelClear)(_ => counter.updateAndGet(_ - 1).flatMap(n => scheduleClearPipeline(n)) ) def scheduleClearPipeline(cnt: Long): F[Unit] = - if (cnt > 0) cancelClear + if (cnt > 0) ().pure[F] else cancelClear *> clearAllLater.flatMap(fiber => cleaningFiber.set(fiber.some)) private def cancelClear: F[Unit] =