From ee2a033e9d900af13735c48e0e707bb354b9d59d Mon Sep 17 00:00:00 2001 From: Benjamin Benoist Date: Sat, 6 May 2023 15:01:47 +0200 Subject: [PATCH 1/2] Bump snowplow-common-enrich to 3.8.0 (close #138) --- project/Dependencies.scala | 2 +- .../Main.scala | 21 +++++++++----- .../utils.scala | 28 +++++++++++++++++++ 3 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 src/main/scala/com.snowplowanalytics.snowplow.micro/utils.scala diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 3075fb4..84433ab 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -17,7 +17,7 @@ object Dependencies { object V { // Snowplow val snowplowStreamCollector = "2.8.1" - val snowplowCommonEnrich = "3.6.1" + val snowplowCommonEnrich = "3.8.0" // circe val circe = "0.14.2" diff --git a/src/main/scala/com.snowplowanalytics.snowplow.micro/Main.scala b/src/main/scala/com.snowplowanalytics.snowplow.micro/Main.scala index 174e426..12839d5 100644 --- a/src/main/scala/com.snowplowanalytics.snowplow.micro/Main.scala +++ b/src/main/scala/com.snowplowanalytics.snowplow.micro/Main.scala @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2022 Snowplow Analytics Ltd. All rights reserved. + * Copyright (c) 2019-2023 Snowplow Analytics Ltd. All rights reserved. * * This program is licensed to you under the Apache License Version 2.0, * and you may not use this file except in compliance with the Apache License Version 2.0. @@ -12,18 +12,25 @@ */ package com.snowplowanalytics.snowplow.micro +import java.io.File + +import org.slf4j.LoggerFactory + +import scala.sys.process._ + import akka.actor.ActorSystem import akka.http.scaladsl.{ConnectionContext, Http} + import cats.Id + import com.snowplowanalytics.snowplow.collectors.scalastream.model.CollectorSinks + import com.snowplowanalytics.snowplow.enrich.common.enrichments.EnrichmentRegistry import com.snowplowanalytics.snowplow.enrich.common.enrichments.registry.{Enrichment, EnrichmentConf} -import com.snowplowanalytics.snowplow.enrich.common.utils.BlockerF -import com.snowplowanalytics.snowplow.micro.ConfigHelper.MicroConfig -import org.slf4j.LoggerFactory +import com.snowplowanalytics.snowplow.enrich.common.utils.{BlockerF, ShiftExecution} -import java.io.File -import scala.sys.process._ +import com.snowplowanalytics.snowplow.micro.ConfigHelper.MicroConfig +import com.snowplowanalytics.snowplow.micro.utils._ /** Read the configuration and instantiate Snowplow Micro, * which acts as a `Collector` and has an in-memory sink @@ -44,7 +51,7 @@ object Main { uri.toURL #> new File(location) !! } - val enrichmentRegistry = EnrichmentRegistry.build[Id](configs, BlockerF.noop).value match { + val enrichmentRegistry = EnrichmentRegistry.build[Id](configs, BlockerF.noop, ShiftExecution.noop).value match { case Right(ok) => ok case Left(e) => throw new IllegalArgumentException(s"Error while enabling enrichments: $e.") diff --git a/src/main/scala/com.snowplowanalytics.snowplow.micro/utils.scala b/src/main/scala/com.snowplowanalytics.snowplow.micro/utils.scala new file mode 100644 index 0000000..baf9fdb --- /dev/null +++ b/src/main/scala/com.snowplowanalytics.snowplow.micro/utils.scala @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023 Snowplow Analytics Ltd. All rights reserved. + * + * This program is licensed to you under the Apache License Version 2.0, + * and you may not use this file except in compliance with the Apache License Version 2.0. + * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the Apache License Version 2.0 is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under. + */ +package com.snowplowanalytics.snowplow.micro + +import java.util.concurrent.TimeUnit + +import cats.Id + +import cats.effect.Clock + +object utils { + implicit val clockProvider: Clock[Id] = new Clock[Id] { + final def realTime(unit: TimeUnit): Id[Long] = + unit.convert(System.currentTimeMillis(), TimeUnit.MILLISECONDS) + final def monotonic(unit: TimeUnit): Id[Long] = + unit.convert(System.nanoTime(), TimeUnit.NANOSECONDS) + } +} \ No newline at end of file From e73cb5d02c9ba1b0f45d04ec0f46e2c4a37cba35 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 8 May 2023 10:31:15 +0100 Subject: [PATCH 2/2] Remove duplication of clocks --- .../ConfigHelper.scala | 14 ++-------- .../Main.scala | 2 +- .../utils.scala | 28 ------------------- 3 files changed, 3 insertions(+), 41 deletions(-) delete mode 100644 src/main/scala/com.snowplowanalytics.snowplow.micro/utils.scala diff --git a/src/main/scala/com.snowplowanalytics.snowplow.micro/ConfigHelper.scala b/src/main/scala/com.snowplowanalytics.snowplow.micro/ConfigHelper.scala index 898ae8b..2ef2ba4 100644 --- a/src/main/scala/com.snowplowanalytics.snowplow.micro/ConfigHelper.scala +++ b/src/main/scala/com.snowplowanalytics.snowplow.micro/ConfigHelper.scala @@ -13,7 +13,6 @@ package com.snowplowanalytics.snowplow.micro import cats.Id -import cats.effect.Clock import cats.implicits._ import com.snowplowanalytics.iglu.client.IgluCirceClient import com.snowplowanalytics.iglu.client.resolver.Resolver @@ -24,6 +23,7 @@ import com.snowplowanalytics.snowplow.collectors.scalastream.model.{CollectorCon import com.snowplowanalytics.snowplow.enrich.common.enrichments.EnrichmentRegistry import com.snowplowanalytics.snowplow.enrich.common.enrichments.registry.EnrichmentConf import com.snowplowanalytics.snowplow.enrich.common.utils.JsonUtils +import com.snowplowanalytics.snowplow.micro.IdImplicits._ import com.typesafe.config.{Config, ConfigFactory} import io.circe.Json import io.circe.parser.parse @@ -36,7 +36,6 @@ import java.io.File import java.net.URI import java.nio.file.{Path, Paths} import java.security.{KeyStore, SecureRandom} -import java.util.concurrent.TimeUnit import javax.net.ssl.{KeyManagerFactory, SSLContext, TrustManagerFactory} import scala.io.Source @@ -54,17 +53,8 @@ private[micro] object ConfigHelper { implicit def hint[T] = ProductHint[T](ConfigFieldMapping(CamelCase, CamelCase)) - implicit val sinkConfigHint = new FieldCoproductHint[SinkConfig]("enabled") - // Copied from Enrich - necessary for parsing enrichment configs - implicit val clockProvider: Clock[Id] = new Clock[Id] { - final def realTime(unit: TimeUnit): Id[Long] = - unit.convert(System.currentTimeMillis(), TimeUnit.MILLISECONDS) - - final def monotonic(unit: TimeUnit): Id[Long] = - unit.convert(System.nanoTime(), TimeUnit.NANOSECONDS) - } - + implicit val sinkConfigHint = new FieldCoproductHint[SinkConfig]("enabled") type EitherS[A] = Either[String, A] case class MicroConfig( diff --git a/src/main/scala/com.snowplowanalytics.snowplow.micro/Main.scala b/src/main/scala/com.snowplowanalytics.snowplow.micro/Main.scala index 12839d5..a4775a0 100644 --- a/src/main/scala/com.snowplowanalytics.snowplow.micro/Main.scala +++ b/src/main/scala/com.snowplowanalytics.snowplow.micro/Main.scala @@ -30,7 +30,7 @@ import com.snowplowanalytics.snowplow.enrich.common.enrichments.registry.{Enrich import com.snowplowanalytics.snowplow.enrich.common.utils.{BlockerF, ShiftExecution} import com.snowplowanalytics.snowplow.micro.ConfigHelper.MicroConfig -import com.snowplowanalytics.snowplow.micro.utils._ +import com.snowplowanalytics.snowplow.micro.IdImplicits._ /** Read the configuration and instantiate Snowplow Micro, * which acts as a `Collector` and has an in-memory sink diff --git a/src/main/scala/com.snowplowanalytics.snowplow.micro/utils.scala b/src/main/scala/com.snowplowanalytics.snowplow.micro/utils.scala deleted file mode 100644 index baf9fdb..0000000 --- a/src/main/scala/com.snowplowanalytics.snowplow.micro/utils.scala +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2023 Snowplow Analytics Ltd. All rights reserved. - * - * This program is licensed to you under the Apache License Version 2.0, - * and you may not use this file except in compliance with the Apache License Version 2.0. - * You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the Apache License Version 2.0 is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under. - */ -package com.snowplowanalytics.snowplow.micro - -import java.util.concurrent.TimeUnit - -import cats.Id - -import cats.effect.Clock - -object utils { - implicit val clockProvider: Clock[Id] = new Clock[Id] { - final def realTime(unit: TimeUnit): Id[Long] = - unit.convert(System.currentTimeMillis(), TimeUnit.MILLISECONDS) - final def monotonic(unit: TimeUnit): Id[Long] = - unit.convert(System.nanoTime(), TimeUnit.NANOSECONDS) - } -} \ No newline at end of file