diff --git a/akka-docs/src/main/paradox/serialization.md b/akka-docs/src/main/paradox/serialization.md index 7d289eafcb..317a4550e2 100644 --- a/akka-docs/src/main/paradox/serialization.md +++ b/akka-docs/src/main/paradox/serialization.md @@ -55,6 +55,7 @@ You can enable them one by one adding by adding their bindings to the misc seria ``` akka.actor.serialization-bindings { "akka.Done" = akka-misc + "akka.NotUsed" = akka-misc "akka.actor.Address" = akka-misc "akka.remote.UniqueAddress" = akka-misc } diff --git a/akka-remote/src/main/resources/reference.conf b/akka-remote/src/main/resources/reference.conf index 71512d5c36..2d12d97cdf 100644 --- a/akka-remote/src/main/resources/reference.conf +++ b/akka-remote/src/main/resources/reference.conf @@ -52,9 +52,10 @@ akka { # The following are handled by the MiscMessageSerializer, but they are not enabled for - # compatibility reasons (it was added in Akka 2.5.[8,9]). Enable them by adding: + # compatibility reasons (it was added in Akka 2.5.[8,9,12]). Enable them by adding: # akka.actor.serialization-bindings { # "akka.Done" = akka-misc + # "akka.NotUsed" = akka-misc # "akka.actor.Address" = akka-misc # "akka.remote.UniqueAddress" = akka-misc # } @@ -129,6 +130,7 @@ akka { # Additional serialization bindings which are enabled automatically when allow-java-serialization is disabled. java-serialization-disabled-additional-serialization-bindings = { "akka.Done" = akka-misc + "akka.NotUsed" = akka-misc "akka.actor.Address" = akka-misc "akka.remote.UniqueAddress" = akka-misc } diff --git a/akka-remote/src/main/scala/akka/remote/serialization/MiscMessageSerializer.scala b/akka-remote/src/main/scala/akka/remote/serialization/MiscMessageSerializer.scala index cc4645d836..36851c6875 100644 --- a/akka-remote/src/main/scala/akka/remote/serialization/MiscMessageSerializer.scala +++ b/akka-remote/src/main/scala/akka/remote/serialization/MiscMessageSerializer.scala @@ -8,7 +8,7 @@ import java.nio.charset.StandardCharsets import java.util.Optional import java.util.concurrent.TimeUnit -import akka.Done +import akka.{ Done, NotUsed } import akka.actor._ import akka.dispatch.Dispatchers import akka.remote.WireFormats.AddressData @@ -46,6 +46,7 @@ class MiscMessageSerializer(val system: ExtendedActorSystem) extends SerializerW case Kill ⇒ ParameterlessSerializedMessage case RemoteWatcher.Heartbeat ⇒ ParameterlessSerializedMessage case Done ⇒ ParameterlessSerializedMessage + case NotUsed ⇒ ParameterlessSerializedMessage case hbrsp: RemoteWatcher.HeartbeatRsp ⇒ serializeHeartbeatRsp(hbrsp) case rs: RemoteScope ⇒ serializeRemoteScope(rs) case LocalScope ⇒ ParameterlessSerializedMessage @@ -288,6 +289,7 @@ class MiscMessageSerializer(val system: ExtendedActorSystem) extends SerializerW private val KillManifest = "K" private val RemoteWatcherHBManifest = "RWHB" private val DoneManifest = "DONE" + private val NotUsedManifest = "NU" private val AddressManifest = "AD" private val UniqueAddressManifest = "UD" private val RemoteWatcherHBRespManifest = "RWHR" @@ -319,6 +321,7 @@ class MiscMessageSerializer(val system: ExtendedActorSystem) extends SerializerW KillManifest → ((_) ⇒ Kill), RemoteWatcherHBManifest → ((_) ⇒ RemoteWatcher.Heartbeat), DoneManifest → ((_) ⇒ Done), + NotUsedManifest → ((_) ⇒ NotUsed), AddressManifest → deserializeAddressData, UniqueAddressManifest → deserializeUniqueAddress, RemoteWatcherHBRespManifest → deserializeHeartbeatRsp, @@ -352,6 +355,7 @@ class MiscMessageSerializer(val system: ExtendedActorSystem) extends SerializerW case Kill ⇒ KillManifest case RemoteWatcher.Heartbeat ⇒ RemoteWatcherHBManifest case Done ⇒ DoneManifest + case NotUsed ⇒ NotUsedManifest case _: Address ⇒ AddressManifest case _: UniqueAddress ⇒ UniqueAddressManifest case _: RemoteWatcher.HeartbeatRsp ⇒ RemoteWatcherHBRespManifest diff --git a/akka-remote/src/test/scala/akka/remote/serialization/MiscMessageSerializerSpec.scala b/akka-remote/src/test/scala/akka/remote/serialization/MiscMessageSerializerSpec.scala index 5f7f8cdea2..6eb61f9257 100644 --- a/akka-remote/src/test/scala/akka/remote/serialization/MiscMessageSerializerSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/serialization/MiscMessageSerializerSpec.scala @@ -5,7 +5,7 @@ package akka.remote.serialization import akka.actor._ -import akka.remote.{ RemoteScope, RemoteWatcher, UniqueAddress } +import akka.remote.{ RemoteScope, RemoteWatcher } import akka.serialization.SerializationExtension import akka.testkit.AkkaSpec import com.typesafe.config.ConfigFactory @@ -15,8 +15,7 @@ import scala.concurrent.duration._ import java.util.Optional import java.io.NotSerializableException -import akka.Done -import akka.remote.ArteryControlFormats.UniqueAddress +import akka.{ Done, NotUsed } import akka.remote.routing.RemoteRouterConfig import akka.routing._ @@ -88,6 +87,7 @@ class MiscMessageSerializerSpec extends AkkaSpec(MiscMessageSerializerSpec.testC "RemoteWatcher.Heartbeat" → RemoteWatcher.Heartbeat, "RemoteWatcher.HertbeatRsp" → RemoteWatcher.HeartbeatRsp(65537), "Done" → Done, + "NotUsed" → NotUsed, "Address" → Address("akka", "system", "host", 1337), "UniqueAddress" → akka.remote.UniqueAddress(Address("akka", "system", "host", 1337), 82751), "LocalScope" → LocalScope,