* also support for serialization of exceptions, see
comment in reference.conf
* extract Throwable and Payload methods to helper classes
* add security checks before creating instance from class name
* comprehensive integration test that revealed many bugs
* confirmations of manifests were wrong, at two places
* using wrong tables when system is restarted, including
originUid in the tables with checks when receiving advertisments
* close (stop scheduling) of advertisments when new incarnation,
quarantine, or restart
* cleanup how deadLetters ref was treated, and made it more robust
* make Decoder tolerant to decompression failures, can happen in
case of system restart before handshake completed
* give up resending advertisment after a few attempts without confirmation,
to avoid keeping outbound association open to possible dead system
* don't advertise new table when no inbound messages,
to avoid keeping outbound association open to possible dead system
* HeaderBuilder could use manifest field from previous message, added
resetMessageFields
* No compression for ArteryMessage, e.g. handshake messages must go
through without depending on compression tables being in sync
* improve debug logging, including originUid
* =art now correctly compresses and 2 table mode working
* =art AGRESSIVELY optimising hashing, not convienved about correctness yet
* fix HandshakeShouldDropCompressionTableSpec
* handle UID incarnations, shared association state that can be swapped
for new handshakes
* detect that message comes from unknown origin and then initiate new
handshake (handled by InboundHandshake stage)
* simplify the OutboundHandshake stage
* doesn't have to listen for HandshakeRsp replies, it can just listen
to when the uniqueRemoteAddress future is completed, InboundHandshake
stage completes the handshake when it receives HandshakeRsp
* send the HandshakeReq via the control message ingress, instead of
pushing it downstreams, than also means that HandshakeReq is only sent
on the control stream, which is good
* materialization race condition
This is to ensure Akka Cluster Client will work with Java Serialization turned off.
However for the sake of backward compatibility, the protobuf serialization for `akka.actor.Identify`
and `akka.actor.ActorIdentity` is turned off.
- created new subproject akka-protobuf (and added COPYING and LICENSE)
- renamed com.google.protobuf -> akka.protobuf everywhere
- also added such renaming step to the results of protoc compilation in
project/Protobuf.scala
- had to include transcriptions of Netty’s ProtobufEncoder/Decoder to
make multi-node-testkit compile again
- Also introduces reason in the Disassociate message
- Reliable delivery now transitions from idle to active if there are pending system msgs
- Minor fix in merging receive buffers (reduces resends)
- Tweaked WireFormat
- Removed busy-wait in startup
- throwing the proper exception type in EndpointReader
- InvalidAssociationException extends NoStackTrace
- Asynchronous lockless remoting
- Pluggable transport drivers
- Multiple transport support
- Simplified lifecycle events
- Support for netty based TCP, SSL+TCP and UDP support
- Updated Akka protocol with soft-state connections and failure detection
- Refactored failure detectors (currently duplicated from cluster)
- add supervisor to remote USE message
- make remoteDaemon a VirtualPathContainer like
LocalActorRefProvider.tempContainer (i.e. synchonous with CHM-based
child lookup), scrap remoteDaemonSupervisor and rename remoteDaemon to
“/remote” to match the plans in the docs
- comment out the remote deployment configuration section, to be done
when Henrik is finished with RoutedActorRef work
- for now only “remote.nodes = ["sys@host:port"]” is looked at, i.e. if
at least one is present, the first one is used to determine where to
deploy the currently created child (routers will do the scaling-out
component) [rest is commented out]
- multi-jvm tests not yet re-enabled (need to be adapted), but all other
tests are GREEN (at least on my machine)
- create RemoteActorRef in actorFor
- simplify send/receive because Futures/Exceptions do not go over the
wire anymore
- add RemoteCommunicationSpec which uses two ActorSystems communicating
in the same JVM via TCP socket
- represent it by SerializedActorRef(path), i.e. only a “tagged” string
- remove serialize/deserialize from ActorRefProvider interface
- adapt test since deadLetters is returned when nothing found instead of
exception
- multi-jvm tests are still broken, but that is due to look-up of remote
actors, which I have just not done yet