From d36d4063b5d7051f25cd2d6cfb7cbc0bdc9a7a01 Mon Sep 17 00:00:00 2001 From: DaSCH Bot <50987250+daschbot@users.noreply.github.com> Date: Wed, 15 May 2024 00:09:25 +0000 Subject: [PATCH 1/7] chore: Update sbt-scalafix from 0.12.0 to 0.12.1 --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index db302dd5bb..5d573f38e3 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -10,5 +10,5 @@ addSbtPlugin("com.github.sbt" % "sbt-javaagent" % "0.1.8") addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.11") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.12.0") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2") -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.0") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.12.1") addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.10.0") From 83c7601081b0458858c5850cbe0269031aa753f5 Mon Sep 17 00:00:00 2001 From: DaSCH Bot <50987250+daschbot@users.noreply.github.com> Date: Wed, 15 May 2024 00:09:26 +0000 Subject: [PATCH 2/7] chore: Update zio from 2.0.22 to 2.1.1 --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 4c39415b8d..65f170d653 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -29,7 +29,7 @@ object Dependencies { val ZioMetricsConnectorsVersion = "2.3.1" val ZioPreludeVersion = "1.0.0-RC24" val ZioSchemaVersion = "0.2.0" - val ZioVersion = "2.0.22" + val ZioVersion = "2.1.1" // ZIO val zio = "dev.zio" %% "zio" % ZioVersion From ae1812fa1444e46e910325c37410483b8dcede05 Mon Sep 17 00:00:00 2001 From: DaSCH Bot <50987250+daschbot@users.noreply.github.com> Date: Wed, 15 May 2024 00:09:27 +0000 Subject: [PATCH 3/7] chore: Update sbt from 1.9.9 to 1.10.0 --- project/build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/build.properties b/project/build.properties index 04267b14af..081fdbbc76 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.9 +sbt.version=1.10.0 From 634b9adfa314fc0da8b832a4d792c328e8bc38b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Kleinb=C3=B6lting?= Date: Wed, 15 May 2024 10:29:38 +0200 Subject: [PATCH 4/7] Replace implicit class with Scala3 extension method --- .../knora/webapi/testcontainers/DspIngestTestContainer.scala | 5 +++-- .../knora/webapi/testcontainers/FusekiTestContainer.scala | 3 ++- .../org/knora/webapi/testcontainers/SipiTestContainer.scala | 5 +++-- .../org/knora/webapi/testcontainers/TestContainerOps.scala | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/integration/src/test/scala/org/knora/webapi/testcontainers/DspIngestTestContainer.scala b/integration/src/test/scala/org/knora/webapi/testcontainers/DspIngestTestContainer.scala index 8889240af7..860c32c909 100644 --- a/integration/src/test/scala/org/knora/webapi/testcontainers/DspIngestTestContainer.scala +++ b/integration/src/test/scala/org/knora/webapi/testcontainers/DspIngestTestContainer.scala @@ -11,7 +11,8 @@ import zio.URLayer import zio.ZIO import zio.ZLayer -import org.knora.webapi.testcontainers.TestContainerOps.StartableOps +import org.knora.webapi.testcontainers.TestContainerOps.toZio +import org.knora.webapi.testcontainers.TestContainerOps.toLayer final class DspIngestTestContainer extends GenericContainer[DspIngestTestContainer](s"daschswiss/dsp-ingest:latest") @@ -43,5 +44,5 @@ object DspIngestTestContainer { ) val layer: URLayer[SharedVolumes.Images, DspIngestTestContainer] = - ZLayer.scoped(ZIO.service[SharedVolumes.Images].flatMap(make(_).toZio)) >+> initDspIngest + ZLayer.scoped(ZIO.serviceWithZIO[SharedVolumes.Images](make(_).toZio)) >+> initDspIngest } diff --git a/integration/src/test/scala/org/knora/webapi/testcontainers/FusekiTestContainer.scala b/integration/src/test/scala/org/knora/webapi/testcontainers/FusekiTestContainer.scala index 32141462f2..9a241aca63 100644 --- a/integration/src/test/scala/org/knora/webapi/testcontainers/FusekiTestContainer.scala +++ b/integration/src/test/scala/org/knora/webapi/testcontainers/FusekiTestContainer.scala @@ -21,7 +21,8 @@ import java.net.http.HttpRequest.BodyPublishers import java.net.http.HttpResponse.BodyHandlers import org.knora.webapi.http.version.BuildInfo -import org.knora.webapi.testcontainers.TestContainerOps.StartableOps +import org.knora.webapi.testcontainers.TestContainerOps.toZio +import org.knora.webapi.testcontainers.TestContainerOps.toLayer final class FusekiTestContainer extends GenericContainer[FusekiTestContainer](BuildInfo.fuseki) { diff --git a/integration/src/test/scala/org/knora/webapi/testcontainers/SipiTestContainer.scala b/integration/src/test/scala/org/knora/webapi/testcontainers/SipiTestContainer.scala index 6899894396..ea17080c3f 100644 --- a/integration/src/test/scala/org/knora/webapi/testcontainers/SipiTestContainer.scala +++ b/integration/src/test/scala/org/knora/webapi/testcontainers/SipiTestContainer.scala @@ -18,7 +18,8 @@ import java.net.Inet6Address import java.net.InetAddress import org.knora.webapi.http.version.BuildInfo -import org.knora.webapi.testcontainers.TestContainerOps.StartableOps +import org.knora.webapi.testcontainers.TestContainerOps.toZio +import org.knora.webapi.testcontainers.TestContainerOps.toLayer final class SipiTestContainer extends GenericContainer[SipiTestContainer](s"daschswiss/knora-sipi:${BuildInfo.version}") { @@ -83,7 +84,7 @@ object SipiTestContainer { ) val layer: URLayer[SharedVolumes.Images, SipiTestContainer] = { - val container = ZLayer.scoped(ZIO.service[SharedVolumes.Images].flatMap(make(_).toZio)) + val container = ZLayer.scoped(ZIO.serviceWithZIO[SharedVolumes.Images](make(_).toZio)) (container >>> initSipi).orDie } } diff --git a/integration/src/test/scala/org/knora/webapi/testcontainers/TestContainerOps.scala b/integration/src/test/scala/org/knora/webapi/testcontainers/TestContainerOps.scala index fc0da54f2a..cd61085f2b 100644 --- a/integration/src/test/scala/org/knora/webapi/testcontainers/TestContainerOps.scala +++ b/integration/src/test/scala/org/knora/webapi/testcontainers/TestContainerOps.scala @@ -21,7 +21,7 @@ object ZioTestContainers { } object TestContainerOps { - implicit final class StartableOps[T <: Startable](private val self: T) extends AnyVal { + extension [T <: Startable](self: T) { def toZio: URIO[Scope, T] = ZioTestContainers.toZio(self) def toLayer(implicit ev: Tag[T]): ULayer[T] = ZioTestContainers.toLayer(self) } From d276710f171182bce03150d3559637716cb28fdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Kleinb=C3=B6lting?= Date: Wed, 15 May 2024 10:54:45 +0200 Subject: [PATCH 5/7] fmt --- .../org/knora/webapi/testcontainers/DspIngestTestContainer.scala | 1 - .../org/knora/webapi/testcontainers/FusekiTestContainer.scala | 1 - .../org/knora/webapi/testcontainers/SipiTestContainer.scala | 1 - 3 files changed, 3 deletions(-) diff --git a/integration/src/test/scala/org/knora/webapi/testcontainers/DspIngestTestContainer.scala b/integration/src/test/scala/org/knora/webapi/testcontainers/DspIngestTestContainer.scala index 860c32c909..436fdb5f9a 100644 --- a/integration/src/test/scala/org/knora/webapi/testcontainers/DspIngestTestContainer.scala +++ b/integration/src/test/scala/org/knora/webapi/testcontainers/DspIngestTestContainer.scala @@ -12,7 +12,6 @@ import zio.ZIO import zio.ZLayer import org.knora.webapi.testcontainers.TestContainerOps.toZio -import org.knora.webapi.testcontainers.TestContainerOps.toLayer final class DspIngestTestContainer extends GenericContainer[DspIngestTestContainer](s"daschswiss/dsp-ingest:latest") diff --git a/integration/src/test/scala/org/knora/webapi/testcontainers/FusekiTestContainer.scala b/integration/src/test/scala/org/knora/webapi/testcontainers/FusekiTestContainer.scala index 9a241aca63..6228b51698 100644 --- a/integration/src/test/scala/org/knora/webapi/testcontainers/FusekiTestContainer.scala +++ b/integration/src/test/scala/org/knora/webapi/testcontainers/FusekiTestContainer.scala @@ -21,7 +21,6 @@ import java.net.http.HttpRequest.BodyPublishers import java.net.http.HttpResponse.BodyHandlers import org.knora.webapi.http.version.BuildInfo -import org.knora.webapi.testcontainers.TestContainerOps.toZio import org.knora.webapi.testcontainers.TestContainerOps.toLayer final class FusekiTestContainer extends GenericContainer[FusekiTestContainer](BuildInfo.fuseki) { diff --git a/integration/src/test/scala/org/knora/webapi/testcontainers/SipiTestContainer.scala b/integration/src/test/scala/org/knora/webapi/testcontainers/SipiTestContainer.scala index ea17080c3f..9fbf873440 100644 --- a/integration/src/test/scala/org/knora/webapi/testcontainers/SipiTestContainer.scala +++ b/integration/src/test/scala/org/knora/webapi/testcontainers/SipiTestContainer.scala @@ -19,7 +19,6 @@ import java.net.InetAddress import org.knora.webapi.http.version.BuildInfo import org.knora.webapi.testcontainers.TestContainerOps.toZio -import org.knora.webapi.testcontainers.TestContainerOps.toLayer final class SipiTestContainer extends GenericContainer[SipiTestContainer](s"daschswiss/knora-sipi:${BuildInfo.version}") { From e1fcf996c9eec37f594ac2d7e71b1f40a8d70f57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Kleinb=C3=B6lting?= Date: Wed, 15 May 2024 11:10:13 +0200 Subject: [PATCH 6/7] ZioTestContainers: Die if container does not start --- .../knora/webapi/testcontainers/TestContainerOps.scala | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/integration/src/test/scala/org/knora/webapi/testcontainers/TestContainerOps.scala b/integration/src/test/scala/org/knora/webapi/testcontainers/TestContainerOps.scala index cd61085f2b..f6137dc2aa 100644 --- a/integration/src/test/scala/org/knora/webapi/testcontainers/TestContainerOps.scala +++ b/integration/src/test/scala/org/knora/webapi/testcontainers/TestContainerOps.scala @@ -10,14 +10,13 @@ import zio.* object ZioTestContainers { - def toZio[T <: Startable](self: T): URIO[Scope, T] = { // using `logError.ignore` because there's no point to try to recover if starting/stopping the container fails - val acquire = ZIO.attemptBlocking(self.start()).logError.ignore.as(self) - val release = (container: T) => ZIO.attemptBlocking(container.stop()).logError.ignore + def toZio[T <: Startable](self: T): URIO[Scope, T] = { + val acquire = ZIO.attemptBlocking(self.start()).orDie.as(self) + val release = (container: T) => ZIO.succeed(container.stop()) ZIO.acquireRelease(acquire)(release) } - def toLayer[T <: Startable: Tag](container: T): ULayer[T] = - ZLayer.scoped(toZio(container)) + def toLayer[T <: Startable: Tag](self: T): ULayer[T] = ZLayer.scoped(toZio(self)) } object TestContainerOps { From 246a74c4de350af6786e0194b5e7a2e76fbf6f81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Kleinb=C3=B6lting?= Date: Wed, 15 May 2024 11:55:40 +0200 Subject: [PATCH 7/7] Update zio-logging dependency --- project/Dependencies.scala | 2 +- .../scala/org/knora/webapi/util/Logger.scala | 22 +++++-------------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 65f170d653..8b0f2774bf 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -24,7 +24,7 @@ object Dependencies { val Rdf4jVersion = "4.3.11" val ZioConfigVersion = "4.0.2" - val ZioLoggingVersion = "2.2.3" + val ZioLoggingVersion = "2.2.4" val ZioNioVersion = "2.0.2" val ZioMetricsConnectorsVersion = "2.3.1" val ZioPreludeVersion = "1.0.0-RC24" diff --git a/webapi/src/main/scala/org/knora/webapi/util/Logger.scala b/webapi/src/main/scala/org/knora/webapi/util/Logger.scala index 4b57be7a52..ec5263dd0c 100644 --- a/webapi/src/main/scala/org/knora/webapi/util/Logger.scala +++ b/webapi/src/main/scala/org/knora/webapi/util/Logger.scala @@ -35,32 +35,22 @@ object Logger { label("spans", bracketed(spans)) + (space + label("cause", cause).highlight).filter(LogFilter.causeNonEmpty) - private val textLogger: ZLayer[Any, Nothing, Unit] = consoleLogger( - ConsoleLoggerConfig(logFormatText, logFilter), - ) - private val logFormatJson: LogFormat = LogFormat.label("name", LoggerNameExtractor.loggerNameAnnotationOrTrace.toLogFormat()) + LogFormat.default + LogFormat.annotations + LogFormat.spans - private val jsonLogger: ZLayer[Any, Nothing, Unit] = consoleJsonLogger( - ConsoleLoggerConfig(logFormatJson, logFilter), - ) + private val textLogger: ULayer[Unit] = consoleLogger(ConsoleLoggerConfig(logFormatText, logFilter)) + private val jsonLogger: ULayer[Unit] = consoleJsonLogger(ConsoleLoggerConfig(logFormatJson, logFilter)) private val useJsonLogger = sys.env.getOrElse("DSP_API_LOG_APPENDER", "TEXT") == "JSON" - private val logger: ZLayer[Any, Nothing, Unit] = - if (useJsonLogger) jsonLogger - else textLogger + private val logger: ULayer[Unit] = if (useJsonLogger) jsonLogger else textLogger - def fromEnv(): ZLayer[Any, Nothing, Unit & Unit] = - Runtime.removeDefaultLoggers >>> logger >+> Slf4jBridge.initialize + def fromEnv(): ULayer[Unit] = Runtime.removeDefaultLoggers >>> logger >+> Slf4jBridge.initialize - def json(): ZLayer[Any, Nothing, Unit & Unit] = - Runtime.removeDefaultLoggers >>> jsonLogger >+> Slf4jBridge.initialize + def json(): ULayer[Unit] = Runtime.removeDefaultLoggers >>> jsonLogger >+> Slf4jBridge.initialize - def text(): ZLayer[Any, Nothing, Unit & Unit] = - Runtime.removeDefaultLoggers >>> textLogger >+> Slf4jBridge.initialize + def text(): ULayer[Unit] = Runtime.removeDefaultLoggers >>> textLogger >+> Slf4jBridge.initialize }