From 75c09a4f36ec9e1f606c735e021d040c9a073bc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Krenski?= Date: Mon, 11 Dec 2023 09:24:13 +0100 Subject: [PATCH] Use recoverWith instead of recover in SnapshotSerializer akka backwards compatibility --- .../persistence/serialization/SnapshotSerializer.scala | 2 +- .../persistence/serialization/SnapshotSerializerSpec.scala | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/persistence/src/main/scala/org/apache/pekko/persistence/serialization/SnapshotSerializer.scala b/persistence/src/main/scala/org/apache/pekko/persistence/serialization/SnapshotSerializer.scala index e8e1c11927f..d9926f2a35a 100644 --- a/persistence/src/main/scala/org/apache/pekko/persistence/serialization/SnapshotSerializer.scala +++ b/persistence/src/main/scala/org/apache/pekko/persistence/serialization/SnapshotSerializer.scala @@ -115,7 +115,7 @@ class SnapshotSerializer(val system: ExtendedActorSystem) extends BaseSerializer // suggested in https://github.com/scullxbones/pekko-persistence-mongo/pull/14#issuecomment-1847223850 serialization .deserialize(snapshotBytes, serializerId, manifest) - .recover { + .recoverWith { case _: NotSerializableException if manifest.startsWith("akka") => serialization .deserialize(snapshotBytes, serializerId, manifest.replaceFirst("akka", "org.apache.pekko")) diff --git a/persistence/src/test/scala/org/apache/pekko/persistence/serialization/SnapshotSerializerSpec.scala b/persistence/src/test/scala/org/apache/pekko/persistence/serialization/SnapshotSerializerSpec.scala index 824ff9c51f4..bcadc2e8bd3 100644 --- a/persistence/src/test/scala/org/apache/pekko/persistence/serialization/SnapshotSerializerSpec.scala +++ b/persistence/src/test/scala/org/apache/pekko/persistence/serialization/SnapshotSerializerSpec.scala @@ -24,7 +24,6 @@ import pekko.serialization.SerializationExtension import pekko.testkit.PekkoSpec import java.util.Base64 -import scala.util.Success class SnapshotSerializerSpec extends PekkoSpec { @@ -38,10 +37,8 @@ class SnapshotSerializerSpec extends PekkoSpec { val bytes = Base64.getDecoder.decode(data) val result = serialization.deserialize(bytes, classOf[Snapshot]).get val deserialized = result.data - deserialized shouldBe a[Success[_]] - val innerResult = deserialized.asInstanceOf[Success[_]].get - innerResult shouldBe a[PersistentFSMSnapshot[_]] - val persistentFSMSnapshot = innerResult.asInstanceOf[PersistentFSMSnapshot[_]] + deserialized shouldBe a[PersistentFSMSnapshot[_]] + val persistentFSMSnapshot = deserialized.asInstanceOf[PersistentFSMSnapshot[_]] persistentFSMSnapshot shouldEqual PersistentFSMSnapshot[String]("test-identifier", "test-data", None) } }