Skip to content

Commit

Permalink
Merge pull request #4402 from guardian/an/play-3
Browse files Browse the repository at this point in the history
Play v3 migration
  • Loading branch information
andrew-nowak authored Jan 22, 2025
2 parents 849f2af + 6efedbc commit 704c39b
Show file tree
Hide file tree
Showing 42 changed files with 81 additions and 78 deletions.
15 changes: 9 additions & 6 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ val commonSettings = Seq(
Test / testOptions ++= Seq(Tests.Argument(TestFrameworks.ScalaTest, "-o"), Tests.Argument(TestFrameworks.ScalaTest, "-u", "logs/test-reports")),
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "3.2.19" % Test,
"org.scalatestplus.play" %% "scalatestplus-play" % "6.0.1" % Test,
"org.scalatestplus.play" %% "scalatestplus-play" % "7.0.1" % Test,
"org.scalatestplus" %% "mockito-3-4" % "3.1.4.0" % Test,
"org.mockito" % "mockito-core" % "2.18.0" % Test,
"org.scalamock" %% "scalamock" % "5.1.0" % Test,
Expand Down Expand Up @@ -76,7 +76,7 @@ val maybeBBCLib: Option[sbt.ProjectReference] = if(bbcBuildProcess) Some(bbcProj
lazy val commonLib = project("common-lib").settings(
libraryDependencies ++= Seq(
"com.gu" %% "editorial-permissions-client" % "3.0.0",
"com.gu" %% "pan-domain-auth-play_2-9" % "7.0.0",
"com.gu" %% "pan-domain-auth-play_3-0" % "7.0.0",
"com.amazonaws" % "aws-java-sdk-iam" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-s3" % awsSdkVersion,
"com.amazonaws" % "aws-java-sdk-ec2" % awsSdkVersion,
Expand All @@ -103,7 +103,7 @@ lazy val commonLib = project("common-lib").settings(
// i.e. to only log to disk in DEV
// see: https://logback.qos.ch/setup.html#janino
"org.codehaus.janino" % "janino" % "3.0.6",
"com.typesafe.play" %% "play-json-joda" % "2.10.2",
"org.playframework" %% "play-json-joda" % "3.0.4",
"org.scanamo" %% "scanamo" % "2.0.0",
// Necessary to have a mix of play library versions due to scala-java8-compat incompatibility
ws,
Expand All @@ -116,7 +116,7 @@ lazy val restLib = project("rest-lib").settings(
libraryDependencies ++= Seq(
playCore,
filters,
akkaHttpServer,
pekkoHttpServer,
),
).dependsOn(commonLib % "compile->compile;test->test")

Expand Down Expand Up @@ -159,13 +159,16 @@ lazy val thrall = playProject("thrall", 9002)
"org.codehaus.groovy" % "groovy-json" % "3.0.7",
// TODO upgrading kcl to v3? check if you can remove avro override below
"software.amazon.kinesis" % "amazon-kinesis-client" % "2.6.0",
"io.github.streetcontxt" %% "kcl-akka-stream" % "4.1.1",
"com.gu" %% "kcl-pekko-stream" % "0.1.0",
"org.testcontainers" % "elasticsearch" % "1.19.2" % Test,
"com.google.protobuf" % "protobuf-java" % "3.19.6"
),
// amazon-kinesis-client 2.6.0 brings in a critically vulnerable version of apache avro,
// but we cannot upgrade amazon-kinesis-client further without performing the v2->v3 upgrade https://docs.aws.amazon.com/streams/latest/dev/kcl-migration-from-2-3.html
dependencyOverrides += "org.apache.avro" % "avro" % "1.11.4"
dependencyOverrides ++= Seq(
"org.apache.avro" % "avro" % "1.11.4",
"org.apache.pekko" %% "pekko-stream" % "1.0.3"
)
)

lazy val usage = playProject("usage", 9009).settings(
Expand Down
2 changes: 1 addition & 1 deletion collections/app/lib/CollectionsMetrics.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package lib

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.gu.mediaservice.lib.metrics.CloudWatchMetrics
import play.api.inject.ApplicationLifecycle

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gu.mediaservice.lib

import akka.actor.{Cancellable, Scheduler}
import org.apache.pekko.actor.{Cancellable, Scheduler}
import com.gu.mediaservice.lib.aws.S3
import com.gu.mediaservice.lib.config.CommonConfig
import com.gu.mediaservice.lib.logging.GridLogging
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import java.util.concurrent.Executors

import _root_.play.api.libs.functional.syntax._
import _root_.play.api.libs.json._
import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.amazonaws.services.cloudwatch.model.Dimension
import com.amazonaws.services.sqs.model.{Message => SQSMessage}
import com.gu.mediaservice.lib.ImageId
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gu.mediaservice.lib.cleanup

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.gu.mediaservice.lib.config.CommonConfig
import play.api.Configuration

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gu.mediaservice.lib.cleanup

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.gu.mediaservice.lib.config.{CommonConfig, CommonConfigWithElastic}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gu.mediaservice.lib.config

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import play.api.Configuration
import play.api.inject.ApplicationLifecycle

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gu.mediaservice.lib.elasticsearch

import akka.actor.Scheduler
import org.apache.pekko.actor.Scheduler
import com.sksamuel.elastic4s.Index

import java.util.concurrent.atomic.AtomicReference
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.gu.mediaservice.lib.metrics

import akka.actor.{Actor, ActorSystem, Props, Timers}
import akka.pattern.ask
import akka.util.Timeout
import org.apache.pekko.actor.{Actor, ActorSystem, Props, Timers}
import org.apache.pekko.pattern.ask
import org.apache.pekko.util.Timeout
import com.amazonaws.services.cloudwatch.{AmazonCloudWatch, AmazonCloudWatchClientBuilder}
import com.amazonaws.services.cloudwatch.model.{Dimension, MetricDatum, PutMetricDataRequest, StandardUnit, StatisticSet}
import com.gu.mediaservice.lib.config.CommonConfig
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.gu.mediaservice.lib.play

import akka.actor.ActorSystem
import akka.stream.Materializer
import org.apache.pekko.actor.ActorSystem
import org.apache.pekko.stream.Materializer
import com.gu.mediaservice.lib.config.CommonConfig
import com.gu.mediaservice.lib.metrics.CloudWatchMetrics
import play.api.inject.ApplicationLifecycle
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gu.mediaservice.lib.cleanup

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.gu.mediaservice.lib.config.{CommonConfig, GridConfigResources}
import com.gu.mediaservice.lib.guardian.GuardianUsageRightsConfig
import com.gu.mediaservice.model._
Expand Down
6 changes: 3 additions & 3 deletions image-loader/app/controllers/ImageLoaderController.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package controllers

import akka.Done
import akka.stream.Materializer
import akka.stream.scaladsl.Source
import org.apache.pekko.Done
import org.apache.pekko.stream.Materializer
import org.apache.pekko.stream.scaladsl.Source
import com.amazonaws.services.cloudwatch.model.Dimension
import com.amazonaws.services.s3.AmazonS3
import com.amazonaws.services.s3.model.AmazonS3Exception
Expand Down
2 changes: 1 addition & 1 deletion image-loader/app/controllers/ImageLoaderManagement.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package controllers

import akka.Done
import org.apache.pekko.Done
import com.gu.mediaservice.lib.aws.SimpleSqsMessageConsumer
import com.gu.mediaservice.lib.management.{BuildInfo, Management}
import play.api.libs.json.Json
Expand Down
4 changes: 2 additions & 2 deletions image-loader/app/lib/BodyParsers.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package lib
import java.io.{File, FileOutputStream}
import java.security.MessageDigest

import akka.stream.scaladsl.Sink
import akka.util.ByteString
import org.apache.pekko.stream.scaladsl.Sink
import org.apache.pekko.util.ByteString
import com.gu.mediaservice.lib.argo.ArgoHelpers
import com.gu.mediaservice.lib.logging.GridLogging
import play.api.libs.streams.Accumulator
Expand Down
2 changes: 1 addition & 1 deletion image-loader/app/lib/ImageLoaderMetrics.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package lib

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.gu.mediaservice.lib.metrics.CloudWatchMetrics
import play.api.inject.ApplicationLifecycle

Expand Down
2 changes: 1 addition & 1 deletion media-api/app/controllers/MediaApi.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package controllers

import akka.stream.scaladsl.StreamConverters
import org.apache.pekko.stream.scaladsl.StreamConverters
import com.google.common.net.HttpHeaders
import com.gu.mediaservice.{GridClient, JsonDiff}
import com.gu.mediaservice.lib.argo._
Expand Down
2 changes: 1 addition & 1 deletion media-api/app/lib/MediaApiMetrics.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package lib

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.amazonaws.services.cloudwatch.model.Dimension
import com.gu.mediaservice.lib.auth.{ApiAccessor, Syndication}
import com.gu.mediaservice.lib.metrics.CloudWatchMetrics
Expand Down
2 changes: 1 addition & 1 deletion media-api/app/lib/UsageQuota.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package lib

import akka.actor.Scheduler
import org.apache.pekko.actor.Scheduler
import com.gu.mediaservice.lib.FeatureToggle
import com.gu.mediaservice.model.UsageRights

Expand Down
2 changes: 1 addition & 1 deletion media-api/app/lib/elasticsearch/ElasticSearch.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package lib.elasticsearch

import akka.actor.Scheduler
import org.apache.pekko.actor.Scheduler
import com.gu.mediaservice.lib.ImageFields
import com.gu.mediaservice.lib.elasticsearch.filters
import com.gu.mediaservice.lib.auth.Authentication.Principal
Expand Down
2 changes: 1 addition & 1 deletion media-api/test/lib/elasticsearch/ElasticSearchTest.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package lib.elasticsearch

import akka.actor.{ActorSystem, Scheduler}
import org.apache.pekko.actor.{ActorSystem, Scheduler}
import com.gu.mediaservice.lib.auth.Authentication.Principal
import com.gu.mediaservice.lib.auth.{Internal, ReadOnly, Syndication}
import com.gu.mediaservice.lib.config.GridConfigResources
Expand Down
2 changes: 1 addition & 1 deletion metadata-editor/app/lib/MetadataEditorMetrics.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package lib

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.gu.mediaservice.lib.metrics.CloudWatchMetrics
import play.api.inject.ApplicationLifecycle

Expand Down
2 changes: 1 addition & 1 deletion project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
libraryDependencies += "org.vafer" % "jdeb" % "1.3" artifacts (Artifact("jdeb", "jar", "jar"))

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.9.5")
addSbtPlugin("org.playframework" % "sbt-plugin" % "3.0.5")

addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.9.0")

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gu.mediaservice.lib.auth

import akka.stream.Materializer
import org.apache.pekko.stream.Materializer
import com.gu.mediaservice.lib.argo.ArgoHelpers
import com.gu.mediaservice.lib.auth.Authentication.{InnerServicePrincipal, MachinePrincipal, Principal, Request, UserPrincipal}
import com.gu.mediaservice.lib.auth.Permissions.{ArchiveImages, DeleteCropsOrUsages, PrincipalFilter, UploadImages}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gu.mediaservice.lib.auth.provider

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.gu.mediaservice.lib.auth.Authentication.{InnerServicePrincipal, Principal}
import com.gu.mediaservice.lib.auth.Authorisation
import com.gu.mediaservice.lib.auth.provider.AuthenticationProvider.RedirectUri
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.gu.mediaservice.lib.play

import akka.http.scaladsl.model.EntityStreamException
import akka.stream.Materializer
import org.apache.pekko.http.scaladsl.model.EntityStreamException
import org.apache.pekko.stream.Materializer
import com.typesafe.scalalogging.StrictLogging
import play.api.mvc.{Filter, RequestHeader, Result, Results}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gu.mediaservice.lib.play

import akka.stream.Materializer
import org.apache.pekko.stream.Materializer
import com.gu.mediaservice.lib.auth.Authentication
import com.gu.mediaservice.lib.auth.provider.InnerServiceAuthentication
import net.logstash.logback.marker.Markers.appendEntries
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.gu.mediaservice.lib.auth

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.gu.mediaservice.lib.auth.Authentication.MachinePrincipal
import com.gu.mediaservice.lib.auth.provider.{ApiKeyAuthenticationProvider, Authenticated, AuthenticationProviderResources, Invalid, NotAuthenticated, NotAuthorised}
import com.gu.mediaservice.lib.config.{CommonConfig, GridConfigResources}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.gu.mediaservice.lib.auth

import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import org.apache.pekko.actor.ActorSystem
import org.apache.pekko.stream.ActorMaterializer
import com.gu.mediaservice.lib.auth.Authentication.{MachinePrincipal, OnBehalfOfPrincipal, UserPrincipal}
import com.gu.mediaservice.lib.auth.provider.AuthenticationProvider.RedirectUri
import com.gu.mediaservice.lib.auth.provider._
Expand Down
10 changes: 5 additions & 5 deletions thrall/app/ThrallComponents.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import akka.Done
import akka.stream.scaladsl.Source
import com.contxt.kinesis.{KinesisRecord, KinesisSource, ConsumerConfig => KclAkkaStreamConfig}
import org.apache.pekko.Done
import org.apache.pekko.stream.scaladsl.Source
import com.gu.kinesis.{KinesisRecord, KinesisSource, ConsumerConfig => KclPekkoStreamConfig}
import com.gu.mediaservice.GridClient
import com.gu.mediaservice.lib.config.Services
import com.gu.mediaservice.lib.aws.{S3Ops, ThrallMessageSender}
Expand Down Expand Up @@ -48,8 +48,8 @@ class ThrallComponents(context: Context) extends GridComponents(context, new Thr

val messageSender = new ThrallMessageSender(config.thrallKinesisStreamConfig)

val highPriorityKinesisConfig: KclAkkaStreamConfig = KinesisConfig.kinesisConfig(config.kinesisConfig)
val lowPriorityKinesisConfig: KclAkkaStreamConfig = KinesisConfig.kinesisConfig(config.kinesisLowPriorityConfig)
val highPriorityKinesisConfig: KclPekkoStreamConfig = KinesisConfig.kinesisConfig(config.kinesisConfig)
val lowPriorityKinesisConfig: KclPekkoStreamConfig = KinesisConfig.kinesisConfig(config.kinesisLowPriorityConfig)

val uiSource: Source[KinesisRecord, Future[Done]] = KinesisSource(highPriorityKinesisConfig)
val automationSource: Source[KinesisRecord, Future[Done]] = KinesisSource(lowPriorityKinesisConfig)
Expand Down
2 changes: 1 addition & 1 deletion thrall/app/controllers/ReaperController.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package controllers

import akka.actor.Scheduler
import org.apache.pekko.actor.Scheduler
import com.gu.mediaservice.lib.{DateTimeUtils, ImageIngestOperations}
import com.gu.mediaservice.lib.auth.Permissions.DeleteImage
import com.gu.mediaservice.lib.auth.{Authentication, Authorisation, BaseControllerWithLoginRedirects}
Expand Down
6 changes: 3 additions & 3 deletions thrall/app/controllers/ThrallController.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package controllers

import akka.actor.ActorSystem
import akka.stream.Materializer
import akka.stream.scaladsl.{Sink, Source}
import org.apache.pekko.actor.ActorSystem
import org.apache.pekko.stream.Materializer
import org.apache.pekko.stream.scaladsl.{Sink, Source}
import com.gu.mediaservice.GridClient
import com.gu.mediaservice.lib.auth.{Authentication, BaseControllerWithLoginRedirects}
import com.gu.mediaservice.lib.aws.ThrallMessageSender
Expand Down
10 changes: 5 additions & 5 deletions thrall/app/lib/MigrationSourceWithSender.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package lib

import akka.stream.scaladsl.Source
import akka.stream.{Materializer, OverflowStrategy, QueueOfferResult}
import akka.{Done, NotUsed}
import org.apache.pekko.stream.scaladsl.Source
import org.apache.pekko.stream.{Materializer, OverflowStrategy, QueueOfferResult}
import org.apache.pekko.{Done, NotUsed}
import com.gu.mediaservice.GridClient
import com.gu.mediaservice.lib.elasticsearch.{InProgress, Paused}
import com.gu.mediaservice.lib.logging.GridLogging
Expand Down Expand Up @@ -37,7 +37,7 @@ object MigrationSourceWithSender extends GridLogging {
Source.repeat(())
.throttle(1, per = 1.second)
.statefulMapConcat(() => {
// This Akka-provided stage is explicitly provided as a way to safely wrap around mutable state.
// This Pekko-provided stage is explicitly provided as a way to safely wrap around mutable state.
// Required here to keep a marker of the current search scroll. Scrolling prevents the
// next search from picking up the same image ids and inserting them into the flow and
// causing lots of version comparison failures.
Expand All @@ -47,7 +47,7 @@ object MigrationSourceWithSender extends GridLogging {
// difficult (or impossible?) to change the query value once the stream has been materialized.)
// - Defining our own version of the ElasticSource using our desired library versions and a system to change
// the query value as desired.
// - Define an Akka actor to handle the querying and wrap around the state.
// - Define an Pekko actor to handle the querying and wrap around the state.
var maybeScrollId: Option[String] = None

def handleScrollResponse(resp: ScrolledSearchResults) = {
Expand Down
4 changes: 2 additions & 2 deletions thrall/app/lib/RetryHandler.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package lib


import akka.actor.{ActorSystem, Scheduler}
import akka.pattern.{after, retry}
import org.apache.pekko.actor.{ActorSystem, Scheduler}
import org.apache.pekko.pattern.{after, retry}
import com.gu.mediaservice.lib.logging.{GridLogging, LogMarker, MarkerMap, combineMarkers}
import play.api.{Logger, MarkerContext}

Expand Down
8 changes: 4 additions & 4 deletions thrall/app/lib/SyncChecker.scala
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package lib

import akka.Done
import akka.actor.ActorSystem
import akka.stream.{Materializer, RestartSettings}
import akka.stream.scaladsl.{RestartSource, Source}
import org.apache.pekko.Done
import org.apache.pekko.actor.ActorSystem
import org.apache.pekko.stream.{Materializer, RestartSettings}
import org.apache.pekko.stream.scaladsl.{RestartSource, Source}
import com.amazonaws.services.s3.AmazonS3
import com.amazonaws.services.s3.model.ListObjectsV2Request
import com.gu.mediaservice.lib.elasticsearch.InProgress
Expand Down
2 changes: 1 addition & 1 deletion thrall/app/lib/ThrallMetrics.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package lib

import akka.actor.ActorSystem
import org.apache.pekko.actor.ActorSystem
import com.gu.mediaservice.lib.metrics.CloudWatchMetrics
import play.api.inject.ApplicationLifecycle

Expand Down
Loading

0 comments on commit 704c39b

Please sign in to comment.