Disable Java serialization by default, #22333 (#27285)

* akka.actor.allow-java-serialization = off
* Moved primitive (Long, Int, String, ByteString) serializers
  from akka-remote to akka-actor since they had no dependency
  and are useful also in local systems, e.g. persistence.
  * e.g. needed for persistence-tck
  * less allow-java-serialization=on in tests
* CborSerializable in Jackson/test module for ease of use
* JavaSerializable for Java serialization in tests, already in akka-testkit,
  but misconfigured
* Made tests pass
  * allow-java-serialization=on in akka-persistence
  * allow-java-serialization=on in classic remoting tests
  * JavaSerializable and CborSerializable in other remoting tests
* Added serialization for
  * Boolean
  * java.util.concurrent.TimeoutException, AskTimeoutException
* support for testing serialization with the inmem journal
* utility to verifySerialization, in SerializationTestKit
* remove AccountExampleWithCommandHandlersInState becuase not possible to serialize State when it's not static
  * Effect() is factory in EventSourcedBehavior  class
* test the account examples
* SharedLeveldbJournal.configToEnableJavaSerializationForTest
* support for exceptions from remote deployed child actors
  * fallback to akka.remote.serialization.ThrowableNotSerializableException
    if exception is not serializable when wrapped in system messages from
    remote deployed child actors and Status.Failure messages
  * it's implemented in `WrappedPayloadSupport.payloadBuilder`
* update reference documentation
* serialize-messages=off in most places, separate ticket for
  improving or removing that feature
* migration guide, including description of rolling update

* fix 2.13 compiler error

* minor review feedback
This commit is contained in:
Patrik Nordwall 2019-07-11 14:04:24 +02:00 committed by GitHub
parent a4f090b622
commit 3efc1c2877
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
191 changed files with 4041 additions and 2321 deletions

View file

@ -13,6 +13,7 @@ import akka.cluster.ddata.Replicator._
import akka.remote.testconductor.RoleName
import akka.remote.testkit.MultiNodeConfig
import akka.remote.testkit.MultiNodeSpec
import akka.serialization.jackson.CborSerializable
import akka.testkit._
import com.typesafe.config.ConfigFactory
@ -33,7 +34,8 @@ object ReplicatorDeltaSpec extends MultiNodeConfig {
case class Highest(n: Int, delta: Option[Highest] = None)
extends DeltaReplicatedData
with RequiresCausalDeliveryOfDeltas
with ReplicatedDelta {
with ReplicatedDelta
with CborSerializable {
type T = Highest
type D = Highest

View file

@ -28,9 +28,7 @@ object ReplicatorMapDeltaSpec extends MultiNodeConfig {
akka.log-dead-letters-during-shutdown = off
akka.actor {
serialize-messages = off
allow-java-serialization = off
}
#akka.remote.artery.enabled = on
"""))
testTransport(on = true)

View file

@ -25,7 +25,6 @@ object ReplicatorORSetDeltaSpec extends MultiNodeConfig {
akka.log-dead-letters-during-shutdown = off
akka.actor {
serialize-messages = off
allow-java-serialization = off
}
"""))

View file

@ -1,5 +1,4 @@
akka.actor {
serialize-messages = on
warn-about-java-serializer-usage = off
serialize-messages = off
}

View file

@ -37,7 +37,6 @@ class ReplicatedDataSerializerSpec
akka.remote.artery.canonical.port = 0
akka.actor {
serialize-messages = off
allow-java-serialization = off
}
""")))
with WordSpecLike

View file

@ -41,7 +41,6 @@ class ReplicatorMessageSerializerSpec
akka.remote.artery.canonical.port = 0
akka.actor {
serialize-messages = off
allow-java-serialization = off
}
""")))
with WordSpecLike