diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md
index c496c480d35..b7bbe7b3d91 100644
--- a/CHANGELOG.unreleased.md
+++ b/CHANGELOG.unreleased.md
@@ -32,6 +32,7 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.released
- Updated antd UI library from version 4.24.8 to 4.24.15. [#7505](https://github.com/scalableminds/webknossos/pull/7505)
- Changed the default dataset search mode to also search in subfolders. [#7539](https://github.com/scalableminds/webknossos/pull/7539)
- When clicking a segment in the viewport, it is automatically focused in the segment list. A corresponding context menu entry was added as well. [#7512](https://github.com/scalableminds/webknossos/pull/7512)
+- Upgraded to Play 3. [#7562](https://github.com/scalableminds/webknossos/pull/7562)
- Updated the isValidName route in the API to return 200 for valid and invalid names. With this, the API version was bumped up to 6. [#7550](https://github.com/scalableminds/webknossos/pull/7550)
- The metadata for ND datasets and their annotation has changed: upper bound of additionalAxes is now stored as an exclusive value, called "end" in the NML format. [#7547](https://github.com/scalableminds/webknossos/pull/7547)
diff --git a/MIGRATIONS.unreleased.md b/MIGRATIONS.unreleased.md
index 1cccde5d142..bf880256643 100644
--- a/MIGRATIONS.unreleased.md
+++ b/MIGRATIONS.unreleased.md
@@ -13,6 +13,9 @@ User-facing changes are documented in the [changelog](CHANGELOG.released.md).
- If your setup contains webknossos-workers, you may want to add the new available worker job `compute_segment_index_file` to the `supportedJobCommands` column of one or more of your workers. [#7493](https://github.com/scalableminds/webknossos/pull/7493)
- The WEBKNOSSOS api version has changed to 6. The `isValidNewName` route for datasets now returns 200 regardless of whether the name is valid or not. The body contains a JSON object with the key "isValid". [#7550](https://github.com/scalableminds/webknossos/pull/7550)
- If your setup contains ND datasets, run the python3 script at `tools/migrate-axis-bounds/migration.py` on your datastores to update the datasource-properties.jsons of the ND datasets.
+- With the upgrade to Play 3 and the migration to pekko, configuration keys using akka need to be changed. For the default configuration this results in the following changes:
+ - akka.requestTimeout → pekko.requestTimeout
+ - akka.actor.default-dispatcher → pekko.actor.default-dispatcher
### Postgres Evolutions:
diff --git a/app/Startup.scala b/app/Startup.scala
index ee83169c550..be4fac6cc0a 100755
--- a/app/Startup.scala
+++ b/app/Startup.scala
@@ -1,4 +1,4 @@
-import akka.actor.{ActorSystem, Props}
+import org.apache.pekko.actor.{ActorSystem, Props}
import cleanup.CleanUpService
import com.typesafe.scalalogging.LazyLogging
import controllers.InitialDataService
diff --git a/app/cleanup/CleanUpService.scala b/app/cleanup/CleanUpService.scala
index a2a686584c8..1ebd649565b 100644
--- a/app/cleanup/CleanUpService.scala
+++ b/app/cleanup/CleanUpService.scala
@@ -1,6 +1,6 @@
package cleanup
-import akka.actor.{ActorSystem, Cancellable}
+import org.apache.pekko.actor.{ActorSystem, Cancellable}
import com.scalableminds.util.tools.Fox
import com.typesafe.scalalogging.LazyLogging
import javax.inject.Inject
@@ -11,10 +11,10 @@ import scala.concurrent.duration.FiniteDuration
class CleanUpService @Inject()(system: ActorSystem)(implicit ec: ExecutionContext) extends LazyLogging {
- @volatile private var akkaIsShuttingDown = false
+ @volatile private var pekkoIsShuttingDown = false
system.registerOnTermination {
- akkaIsShuttingDown = true
+ pekkoIsShuttingDown = true
}
def register[T](description: String, interval: FiniteDuration, runOnShutdown: Boolean = false)(
@@ -22,7 +22,7 @@ class CleanUpService @Inject()(system: ActorSystem)(implicit ec: ExecutionContex
system.scheduler.scheduleWithFixedDelay(interval, interval)(() => runJob(description, job, runOnShutdown))
private def runJob[T](description: String, job: => Fox[T], runOnShutdown: Boolean): Unit =
- if (!akkaIsShuttingDown || runOnShutdown) {
+ if (!pekkoIsShuttingDown || runOnShutdown) {
job.futureBox.map {
case Full(value) =>
logger.info(s"Completed cleanup job: $description. Result: " + value)
diff --git a/app/controllers/AnnotationController.scala b/app/controllers/AnnotationController.scala
index 6efd9d82047..9417182fd22 100755
--- a/app/controllers/AnnotationController.scala
+++ b/app/controllers/AnnotationController.scala
@@ -1,6 +1,6 @@
package controllers
-import akka.util.Timeout
+import org.apache.pekko.util.Timeout
import play.silhouette.api.Silhouette
import com.scalableminds.util.accesscontext.{DBAccessContext, GlobalAccessContext}
import com.scalableminds.util.geometry.BoundingBox
diff --git a/app/controllers/AnnotationIOController.scala b/app/controllers/AnnotationIOController.scala
index 71afbb5632b..f96d052e6c0 100755
--- a/app/controllers/AnnotationIOController.scala
+++ b/app/controllers/AnnotationIOController.scala
@@ -2,8 +2,8 @@ package controllers
import java.io.{BufferedOutputStream, File, FileOutputStream}
import java.util.zip.Deflater
-import akka.actor.ActorSystem
-import akka.stream.Materializer
+import org.apache.pekko.actor.ActorSystem
+import org.apache.pekko.stream.Materializer
import play.silhouette.api.Silhouette
import com.scalableminds.util.accesscontext.{DBAccessContext, GlobalAccessContext}
import com.scalableminds.util.io.ZipIO
diff --git a/app/controllers/Application.scala b/app/controllers/Application.scala
index 2f1f72db9ef..497e8471c5d 100755
--- a/app/controllers/Application.scala
+++ b/app/controllers/Application.scala
@@ -1,6 +1,6 @@
package controllers
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import play.silhouette.api.Silhouette
import com.scalableminds.util.tools.{Fox, FoxImplicits}
import com.typesafe.config.ConfigRenderOptions
diff --git a/app/controllers/AuthenticationController.scala b/app/controllers/AuthenticationController.scala
index 5561af3558b..c9e8794a2ae 100755
--- a/app/controllers/AuthenticationController.scala
+++ b/app/controllers/AuthenticationController.scala
@@ -1,6 +1,6 @@
package controllers
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import play.silhouette.api.actions.SecuredRequest
import play.silhouette.api.exceptions.ProviderException
import play.silhouette.api.services.AuthenticatorResult
diff --git a/app/controllers/OrganizationController.scala b/app/controllers/OrganizationController.scala
index 6a4ab3c4b02..9304aedb5d8 100755
--- a/app/controllers/OrganizationController.scala
+++ b/app/controllers/OrganizationController.scala
@@ -1,6 +1,6 @@
package controllers
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import play.silhouette.api.Silhouette
import com.scalableminds.util.accesscontext.{DBAccessContext, GlobalAccessContext}
import com.scalableminds.util.time.Instant
diff --git a/app/mail/MailchimpTicker.scala b/app/mail/MailchimpTicker.scala
index 4ec85937244..fdd214aa957 100644
--- a/app/mail/MailchimpTicker.scala
+++ b/app/mail/MailchimpTicker.scala
@@ -1,6 +1,6 @@
package mail
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.scalableminds.util.accesscontext.{DBAccessContext, GlobalAccessContext}
import com.scalableminds.util.time.Instant
import com.scalableminds.util.tools.Fox
diff --git a/app/mail/Mailer.scala b/app/mail/Mailer.scala
index 825d0cbd325..db986cbe360 100644
--- a/app/mail/Mailer.scala
+++ b/app/mail/Mailer.scala
@@ -1,6 +1,6 @@
package mail
-import akka.actor._
+import org.apache.pekko.actor._
import com.typesafe.scalalogging.LazyLogging
import javax.mail.internet.InternetAddress
import org.apache.commons.mail._
diff --git a/app/models/annotation/AnnotationMutexService.scala b/app/models/annotation/AnnotationMutexService.scala
index acac310d94e..6495b1537cc 100644
--- a/app/models/annotation/AnnotationMutexService.scala
+++ b/app/models/annotation/AnnotationMutexService.scala
@@ -1,6 +1,6 @@
package models.annotation
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.scalableminds.util.accesscontext.GlobalAccessContext
import com.scalableminds.util.time.Instant
import com.scalableminds.util.tools.Fox
diff --git a/app/models/annotation/AnnotationService.scala b/app/models/annotation/AnnotationService.scala
index bcd16b8fa83..407abca424c 100755
--- a/app/models/annotation/AnnotationService.scala
+++ b/app/models/annotation/AnnotationService.scala
@@ -1,7 +1,7 @@
package models.annotation
-import akka.actor.ActorSystem
-import akka.stream.Materializer
+import org.apache.pekko.actor.ActorSystem
+import org.apache.pekko.stream.Materializer
import com.scalableminds.util.accesscontext.{AuthorizedAccessContext, DBAccessContext, GlobalAccessContext}
import com.scalableminds.util.geometry.{BoundingBox, Vec3Double, Vec3Int}
import com.scalableminds.util.io.{NamedStream, ZipIO}
diff --git a/app/models/job/Job.scala b/app/models/job/Job.scala
index c38e53cdbeb..d5798f165fc 100644
--- a/app/models/job/Job.scala
+++ b/app/models/job/Job.scala
@@ -1,6 +1,6 @@
package models.job
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.scalableminds.util.accesscontext.{DBAccessContext, GlobalAccessContext}
import com.scalableminds.util.geometry.{BoundingBox, Vec3Int}
import com.scalableminds.util.mvc.Formatter
diff --git a/app/models/job/Worker.scala b/app/models/job/Worker.scala
index 1bb8119911e..187c4ef6dd8 100644
--- a/app/models/job/Worker.scala
+++ b/app/models/job/Worker.scala
@@ -1,6 +1,6 @@
package models.job
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.scalableminds.util.accesscontext.GlobalAccessContext
import com.scalableminds.util.mvc.Formatter
import com.scalableminds.util.time.Instant
diff --git a/app/models/storage/UsedStorageService.scala b/app/models/storage/UsedStorageService.scala
index b7ab20e7b33..67c77ce4d7d 100644
--- a/app/models/storage/UsedStorageService.scala
+++ b/app/models/storage/UsedStorageService.scala
@@ -1,6 +1,6 @@
package models.storage
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.scalableminds.util.accesscontext.{DBAccessContext, GlobalAccessContext}
import com.scalableminds.util.time.Instant
import com.scalableminds.util.tools.Fox
diff --git a/app/models/user/EmailVerificationService.scala b/app/models/user/EmailVerificationService.scala
index c264e85a3ec..cd04217185c 100644
--- a/app/models/user/EmailVerificationService.scala
+++ b/app/models/user/EmailVerificationService.scala
@@ -1,6 +1,6 @@
package models.user
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.scalableminds.util.accesscontext.DBAccessContext
import com.scalableminds.util.time.Instant
import com.scalableminds.util.tools.Fox
diff --git a/app/models/user/Invite.scala b/app/models/user/Invite.scala
index 269e9f96e5a..267d27f3375 100644
--- a/app/models/user/Invite.scala
+++ b/app/models/user/Invite.scala
@@ -1,6 +1,6 @@
package models.user
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.scalableminds.util.accesscontext.DBAccessContext
import com.scalableminds.util.time.Instant
import com.scalableminds.util.tools.{Fox, FoxImplicits}
diff --git a/app/models/user/UserService.scala b/app/models/user/UserService.scala
index 5dbfe248102..122645aad3a 100755
--- a/app/models/user/UserService.scala
+++ b/app/models/user/UserService.scala
@@ -1,6 +1,6 @@
package models.user
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import play.silhouette.api.LoginInfo
import play.silhouette.api.services.IdentityService
import play.silhouette.api.util.PasswordInfo
diff --git a/app/models/voxelytics/LokiClient.scala b/app/models/voxelytics/LokiClient.scala
index 526afb3a08b..1ea3a7f3d9c 100644
--- a/app/models/voxelytics/LokiClient.scala
+++ b/app/models/voxelytics/LokiClient.scala
@@ -1,6 +1,7 @@
package models.voxelytics
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
+import org.apache.pekko.pattern.after
import com.scalableminds.util.mvc.MimeTypes
import com.scalableminds.util.time.Instant
import com.scalableminds.util.tools.Fox
@@ -42,7 +43,7 @@ class LokiClient @Inject()(wkConf: WkConf, rpc: RPC, val system: ActorSystem)(im
private def pollUntilServerStartedUp(until: Instant): Fox[Unit] = {
def waitAndRecurse(until: Instant): Fox[Unit] =
for {
- _ <- akka.pattern.after(POLLING_INTERVAL, using = system.scheduler)(Future.successful(()))
+ _ <- after(POLLING_INTERVAL, using = system.scheduler)(Future.successful(()))
_ <- bool2Fox(!until.isPast) ?~> s"Loki did not become ready within ${conf.startupTimeout}."
_ <- pollUntilServerStartedUp(until)
} yield ()
diff --git a/app/opengraph/OpenGraphService.scala b/app/opengraph/OpenGraphService.scala
index 6bb688b5571..c4081092493 100644
--- a/app/opengraph/OpenGraphService.scala
+++ b/app/opengraph/OpenGraphService.scala
@@ -1,6 +1,6 @@
package opengraph
-import akka.http.scaladsl.model.Uri
+import org.apache.pekko.http.scaladsl.model.Uri
import com.google.inject.Inject
import com.scalableminds.util.accesscontext.DBAccessContext
import com.scalableminds.util.enumeration.ExtendedEnumeration
diff --git a/app/thirdparty/BrainTracing.scala b/app/thirdparty/BrainTracing.scala
index 5fceaf2df21..014a3a6dbfa 100755
--- a/app/thirdparty/BrainTracing.scala
+++ b/app/thirdparty/BrainTracing.scala
@@ -1,6 +1,6 @@
package thirdparty
-import akka.actor.{ActorSelection, ActorSystem}
+import org.apache.pekko.actor.{ActorSelection, ActorSystem}
import com.scalableminds.util.accesscontext.GlobalAccessContext
import com.scalableminds.util.security.SCrypt
import com.scalableminds.util.tools.{Fox, FoxImplicits}
diff --git a/build.sbt b/build.sbt
index c464b04491f..971dff89d18 100644
--- a/build.sbt
+++ b/build.sbt
@@ -22,7 +22,7 @@ ThisBuild / javacOptions ++= Seq(
)
ThisBuild / dependencyCheckAssemblyAnalyzerEnabled := Some(false)
-PlayKeys.devSettings := Seq("play.server.akka.requestTimeout" -> "10000s", "play.server.http.idleTimeout" -> "10000s")
+PlayKeys.devSettings := Seq("play.server.pekko.requestTimeout" -> "10000s", "play.server.http.idleTimeout" -> "10000s")
// Disable unused import warnings, only in sbt console REPL
Compile / console / scalacOptions -= "-Xlint:unused"
diff --git a/conf/application.conf b/conf/application.conf
index 67db7f0bd41..e5d91b66ea3 100644
--- a/conf/application.conf
+++ b/conf/application.conf
@@ -56,7 +56,7 @@ play {
# Timeouts. Note that these take effect only in production mode (timeouts are shorter in dev)
server {
http.idleTimeout = 2 hours
- akka.requestTimeout = 2 hours
+ pekko.requestTimeout = 2 hours
}
assets {
cache {
@@ -72,7 +72,7 @@ play {
}
}
-akka.actor.default-dispatcher {
+pekko.actor.default-dispatcher {
# We use a compromise for our thread pool configuration
# Parts of our api are async, so they should not need many threads,
# but some parts are also blocking (file io, gcs, s3 access), causing new requests
diff --git a/conf/logback-dev.xml b/conf/logback-dev.xml
index 82a05312595..e8aa9cb9f8a 100644
--- a/conf/logback-dev.xml
+++ b/conf/logback-dev.xml
@@ -17,7 +17,7 @@
-
+
diff --git a/conf/logback.xml b/conf/logback.xml
index 018b3d26531..82d0197a708 100644
--- a/conf/logback.xml
+++ b/conf/logback.xml
@@ -16,7 +16,7 @@
-
+
diff --git a/project/Dependencies.scala b/project/Dependencies.scala
index 1c3c2a5a504..def4f720b5e 100644
--- a/project/Dependencies.scala
+++ b/project/Dependencies.scala
@@ -2,14 +2,14 @@ import play.sbt.PlayImport.{filters, _}
import sbt._
object Dependencies {
- private val silhouetteVersion = "9.0.0"
+ private val silhouetteVersion = "10.0.0"
private val brotliVersion = "1.11.0"
private val scalapbVersion = scalapb.compiler.Version.scalapbVersion
private val grpcVersion = scalapb.compiler.Version.grpcJavaVersion
val utilDependencies: Seq[ModuleID] = Seq(
// Play Web Framework. import play
- "com.typesafe.play" %% "play" % "2.9.0",
+ "org.playframework" %% "play" % "3.0.1",
// Play’s JSON serialization. import play.api.libs.json
"com.typesafe.play" %% "play-json" % "2.10.1",
// Sending emails. import org.apache.commons.mail
@@ -85,8 +85,8 @@ object Dependencies {
val webknossosDependencies: Seq[ModuleID] = Seq(
// Base64, Hashing. import org.apache.commons.codec
"commons-codec" % "commons-codec" % "1.16.0",
- // End-to-end tests. import org.scalatestplus.play
- "org.scalatestplus.play" %% "scalatestplus-play" % "5.1.0" % "test",
+ // End-to-end tests, backend unit tests. import org.scalatestplus.play
+ "org.scalatestplus.play" %% "scalatestplus-play" % "7.0.1" % "test",
// Authenticated requests. import play.silhouette
"org.playframework.silhouette" %% "play-silhouette" % silhouetteVersion,
// Signing Cookies. import play.silhouette.crypto
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 37f6334c9c8..745d372c6a2 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -1,5 +1,5 @@
// play framework
-addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.9.0-RC3")
+addSbtPlugin("org.playframework" % "sbt-plugin" % "3.0.1")
// buildinfo routes
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0")
diff --git a/util/src/main/scala/com/scalableminds/util/cache/AlfuCache.scala b/util/src/main/scala/com/scalableminds/util/cache/AlfuCache.scala
index db5b3735b65..3e857c62826 100644
--- a/util/src/main/scala/com/scalableminds/util/cache/AlfuCache.scala
+++ b/util/src/main/scala/com/scalableminds/util/cache/AlfuCache.scala
@@ -6,8 +6,8 @@ import net.liftweb.common.{Box, Failure}
import java.util.concurrent.{CompletableFuture, Executor, TimeUnit}
import java.util.function.BiFunction
-import scala.compat.java8.FunctionConverters.asJavaBiFunction
-import scala.compat.java8.FutureConverters.{CompletionStageOps, FutureOps}
+import scala.jdk.FunctionWrappers.AsJavaBiFunction
+import scala.jdk.FutureConverters.{CompletionStageOps, FutureOps}
import scala.concurrent.{ExecutionContext, Future}
import scala.concurrent.duration.{DurationInt, FiniteDuration}
import scala.jdk.CollectionConverters._
@@ -25,7 +25,7 @@ class AlfuCache[K, V](store: AsyncCache[K, Box[V]]) extends FoxImplicits {
} yield result
private def getOrLoadAdapter(key: K, loadValue: K => Future[Box[V]]): Future[Box[V]] =
- store.get(key, AlfuCache.toJavaMappingFunction[K, Box[V]](loadValue)).toScala
+ store.get(key, AlfuCache.toJavaMappingFunction[K, Box[V]](loadValue)).asScala
def remove(key: K): Unit = store.synchronous().invalidate(key)
@@ -73,7 +73,7 @@ object AlfuCache {
}
private def toJavaMappingFunction[K, V](loadValue: K => Future[V]): BiFunction[K, Executor, CompletableFuture[V]] =
- asJavaBiFunction[K, Executor, CompletableFuture[V]]((k, _) => loadValue(k).toJava.toCompletableFuture)
+ new AsJavaBiFunction[K, Executor, CompletableFuture[V]]((k, _) => loadValue(k).asJava.toCompletableFuture)
}
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/DataStoreModule.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/DataStoreModule.scala
index aee6753d473..24c5680ce88 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/DataStoreModule.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/DataStoreModule.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.datastore
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.google.inject.AbstractModule
import com.google.inject.name.Names
import com.scalableminds.webknossos.datastore.services._
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/helpers/IntervalScheduler.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/helpers/IntervalScheduler.scala
index defa0f1bb4d..dac330158eb 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/helpers/IntervalScheduler.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/helpers/IntervalScheduler.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.datastore.helpers
-import akka.actor.{ActorSystem, Cancellable}
+import org.apache.pekko.actor.{ActorSystem, Cancellable}
import play.api.inject.ApplicationLifecycle
import scala.concurrent.{ExecutionContext, Future}
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/AdHocMeshService.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/AdHocMeshService.scala
index 4d63f79bbe2..0f5b5c24b35 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/AdHocMeshService.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/AdHocMeshService.scala
@@ -1,10 +1,10 @@
package com.scalableminds.webknossos.datastore.services
import java.nio._
-import akka.actor.{Actor, ActorRef, ActorSystem, Props}
-import akka.pattern.ask
-import akka.routing.RoundRobinPool
-import akka.util.Timeout
+import org.apache.pekko.actor.{Actor, ActorRef, ActorSystem, Props}
+import org.apache.pekko.pattern.ask
+import org.apache.pekko.routing.RoundRobinPool
+import org.apache.pekko.util.Timeout
import com.scalableminds.util.geometry.{BoundingBox, Vec3Double, Vec3Int}
import com.scalableminds.util.tools.{Fox, FoxImplicits}
import com.scalableminds.webknossos.datastore.models.AdditionalCoordinate
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/AdHocMeshingServiceHolder.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/AdHocMeshingServiceHolder.scala
index ce51a0cdebd..4ae043c805b 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/AdHocMeshingServiceHolder.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/AdHocMeshingServiceHolder.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.datastore.services
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import javax.inject.Inject
import scala.concurrent.ExecutionContext
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DSRemoteWebKnossosClient.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DSRemoteWebKnossosClient.scala
index cc45c9c60ed..f5e3f580ef7 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DSRemoteWebKnossosClient.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DSRemoteWebKnossosClient.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.datastore.services
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.google.inject.Inject
import com.google.inject.name.Named
import com.scalableminds.util.cache.AlfuCache
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DataSourceRepository.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DataSourceRepository.scala
index 79d419a4ca4..bd2eebcd7c9 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DataSourceRepository.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DataSourceRepository.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.datastore.services
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.google.inject.Inject
import com.google.inject.name.Named
import com.scalableminds.webknossos.datastore.models.datasource.inbox.InboxDataSource
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DataSourceService.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DataSourceService.scala
index 3f85842f4bf..8d17cb9cc30 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DataSourceService.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DataSourceService.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.datastore.services
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.google.inject.Inject
import com.google.inject.name.Named
import com.scalableminds.util.io.PathUtils
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DatasetErrorLoggingService.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DatasetErrorLoggingService.scala
index 704d497769e..62d80a5aa69 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DatasetErrorLoggingService.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/services/DatasetErrorLoggingService.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.datastore.services
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.google.inject.name.Named
import com.scalableminds.webknossos.datastore.helpers.IntervalScheduler
import com.typesafe.scalalogging.LazyLogging
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/TemporaryStore.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/TemporaryStore.scala
index ac2869271ce..1ec23abd39a 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/TemporaryStore.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/TemporaryStore.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.datastore.storage
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import javax.inject.Inject
import scala.concurrent.ExecutionContext
diff --git a/webknossos-datastore/conf/logback.xml b/webknossos-datastore/conf/logback.xml
index 484faf4099e..57c74fdaee4 100644
--- a/webknossos-datastore/conf/logback.xml
+++ b/webknossos-datastore/conf/logback.xml
@@ -13,7 +13,7 @@
-
+
diff --git a/webknossos-datastore/conf/standalone-datastore.conf b/webknossos-datastore/conf/standalone-datastore.conf
index c946f74a2c9..2fb36dc1d4a 100644
--- a/webknossos-datastore/conf/standalone-datastore.conf
+++ b/webknossos-datastore/conf/standalone-datastore.conf
@@ -26,7 +26,7 @@ play {
server {
# Timeouts. Note that these take effect only in production mode (timeouts are shorter in dev)
http.idleTimeout = 10000s
- akka.requestTimeout = 10000s
+ pekko.requestTimeout = 10000s
}
ws {
timeout.request = 2 hours
@@ -35,7 +35,7 @@ play {
}
}
-akka.actor.default-dispatcher {
+pekko.actor.default-dispatcher {
# We use a compromise for our thread pool configuration
# Parts of our api are async, so they should not need many threads,
# but some parts are also blocking (file io, gcs, s3 access), causing new requests
diff --git a/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/TracingStoreModule.scala b/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/TracingStoreModule.scala
index 1327dc918b2..5886c45b7bf 100644
--- a/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/TracingStoreModule.scala
+++ b/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/TracingStoreModule.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.tracingstore
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.google.inject.AbstractModule
import com.google.inject.name.Names
import com.scalableminds.webknossos.datastore.services.AdHocMeshingServiceHolder
diff --git a/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/TemporaryTracingStore.scala b/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/TemporaryTracingStore.scala
index 5b65a84c5d0..1ade2c25851 100644
--- a/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/TemporaryTracingStore.scala
+++ b/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/TemporaryTracingStore.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.tracingstore.tracings
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.google.inject.Inject
import com.google.inject.name.Named
import com.scalableminds.webknossos.datastore.storage.TemporaryStore
diff --git a/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/TracingDataStore.scala b/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/TracingDataStore.scala
index 8d198d64398..37df9decf09 100644
--- a/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/TracingDataStore.scala
+++ b/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/TracingDataStore.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.tracingstore.tracings
-import akka.actor.ActorSystem
+import org.apache.pekko.actor.ActorSystem
import com.google.inject.Inject
import com.scalableminds.webknossos.tracingstore.TracingStoreConfig
import com.scalableminds.webknossos.tracingstore.slacknotification.TSSlackNotificationService
diff --git a/webknossos-tracingstore/conf/logback.xml b/webknossos-tracingstore/conf/logback.xml
index 484faf4099e..57c74fdaee4 100644
--- a/webknossos-tracingstore/conf/logback.xml
+++ b/webknossos-tracingstore/conf/logback.xml
@@ -13,7 +13,7 @@
-
+
diff --git a/webknossos-tracingstore/conf/standalone-tracingstore.conf b/webknossos-tracingstore/conf/standalone-tracingstore.conf
index 8053cae40bb..ae1d166e1f9 100644
--- a/webknossos-tracingstore/conf/standalone-tracingstore.conf
+++ b/webknossos-tracingstore/conf/standalone-tracingstore.conf
@@ -26,7 +26,7 @@ play {
server {
# Timeouts. Note that these take effect only in production mode (timeouts are shorter in dev)
http.idleTimeout = 10000s
- akka.requestTimeout = 10000s
+ pekko.requestTimeout = 10000s
}
ws {
timeout.request = 2 hours
@@ -35,7 +35,7 @@ play {
}
}
-akka.actor.default-dispatcher {
+pekko.actor.default-dispatcher {
# We use a compromise for our thread pool configuration
# Parts of our api are async, so they should not need many threads,
# but some parts are also blocking (file io, gcs, s3 access), causing new requests