From 6bc7c03e5b5203534f27ae133419d6531567aba5 Mon Sep 17 00:00:00 2001 From: To-om Date: Mon, 7 Feb 2022 10:28:33 +0100 Subject: [PATCH] #2334 Add "AfterAdditionAndDuringGlobalChecks" dedup strategy --- .../services/IntegrityCheckActor.scala | 20 ++++++++++--------- thehive/conf/reference.conf | 1 - 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/thehive/app/org/thp/thehive/services/IntegrityCheckActor.scala b/thehive/app/org/thp/thehive/services/IntegrityCheckActor.scala index 988aab42f4..4c0ee022c5 100644 --- a/thehive/app/org/thp/thehive/services/IntegrityCheckActor.scala +++ b/thehive/app/org/thp/thehive/services/IntegrityCheckActor.scala @@ -65,14 +65,16 @@ object IntegrityCheckGlobalConfig { sealed trait DedupStrategy object DedupStrategy { - final case object AfterAddition extends DedupStrategy - final case object DuringGlobalChecks extends DedupStrategy - final case object Disable extends DedupStrategy + final case object AfterAddition extends DedupStrategy + final case object DuringGlobalChecks extends DedupStrategy + final case object AfterAdditionAndDuringGlobalChecks extends DedupStrategy + final case object Disable extends DedupStrategy implicit val reads: Reads[DedupStrategy] = Reads.StringReads.flatMap { - case "AfterAddition" => Reads.pure(AfterAddition) - case "DuringGlobalChecks" => Reads.pure(DuringGlobalChecks) - case "Disable" => Reads.pure(Disable) - case other => Reads.failed(s"Dedup strategy `$other` is not recognised (accepted: AfterAddition, DuringGlobalChecks and Disable)") + case "AfterAddition" => Reads.pure(AfterAddition) + case "DuringGlobalChecks" => Reads.pure(DuringGlobalChecks) + case "AfterAdditionAndDuringGlobalChecks" => Reads.pure(AfterAdditionAndDuringGlobalChecks) + case "Disable" => Reads.pure(Disable) + case other => Reads.failed(s"Dedup strategy `$other` is not recognised (accepted: AfterAddition, DuringGlobalChecks and Disable)") } implicit val writes: Writes[DedupStrategy] = Writes[DedupStrategy](s => JsString(s.toString)) } @@ -154,7 +156,7 @@ object IntegrityCheck { case EntityAdded(name) => logger.debug(s"An entity $name has been created") configItem.get.integrityCheckConfig.get(name).foreach { - case cfg if cfg.dedupStrategy == DedupStrategy.AfterAddition => + case cfg if cfg.dedupStrategy == DedupStrategy.AfterAddition || cfg.dedupStrategy == DedupStrategy.AfterAdditionAndDuringGlobalChecks => timers.startSingleTimer(NeedCheck(name), cfg.initialDelay) } Behaviors.same @@ -380,7 +382,7 @@ object IntegrityCheck { ): Unit = { val cfg = getConfig(config, name) runGlobal(integrityCheckActor, integrityChecks, name, maxDuration.merge(cfg.maxTime)(min).merge(cfg.minTime)(max)) - if (cfg.dedupStrategy == DedupStrategy.DuringGlobalChecks) + if (cfg.dedupStrategy == DedupStrategy.DuringGlobalChecks || cfg.dedupStrategy == DedupStrategy.AfterAdditionAndDuringGlobalChecks) runDedup(integrityCheckActor, integrityChecks, name) } diff --git a/thehive/conf/reference.conf b/thehive/conf/reference.conf index b63d617a8c..4e1dffaa8d 100644 --- a/thehive/conf/reference.conf +++ b/thehive/conf/reference.conf @@ -142,7 +142,6 @@ integrityCheck { enabled: true // minTime: 1 minute // maxTime: 1 hour - enabled: true initialDelay: 1 minute minInterval: 10 minutes dedupStrategy: AfterAddition