Details
-
Improvement
-
Status: Confirmed
-
High
-
Resolution: Unresolved
-
None
Description
The cutover to Akka Artery and tell-based protocol (which puts more strain on persistence) crops up problems with serialization of our messages, like CONTROLLER-2037 (estimates) and CONTROLLER-2043 (raw volume).
Given that Akka has deprecated Java serialization as the protocol to use and the mentioned issues, it would be prudent to implement a better serialization protocol around Payloads, both in order to remove dependency on Java serialization and to improve its efficiency.
This mostly revolves around org.opendaylight.controller.cluster.raft.messages.Payload extensibility – we really want to attach a PayloadRegistry which will handle dispatch to serialization based on a single-byte type and base it on DataOutput/WritableObject interfaces. This will allow us to reduce the message overheads (which are significant).
We should also deal with sal-akka-raft message serialization based on similar interface and tie it in with sal-akka-segmented-journal, so that it can operate more efficiently than through Serializable.
Attachments
Issue Links
- blocks
-
CONTROLLER-2073 Ditch Akka persistence from sal-akka-raft
-
- Confirmed
-
- is blocked by
-
CONTROLLER-2071 Switch to our fork of atomix-storage
-
- Resolved
-
-
CONTROLLER-2072 Remove Kryo from atomix-storage
-
- In Review
-
- is duplicated by
-
CONTROLLER-1969 Migrate from using JavaSerializer
-
- Resolved
-
- relates to
-
CONTROLLER-2037 Fail to serialize oversized message
-
- Resolved
-
-
CONTROLLER-2043 Circuit breaker timeout with BGP and tell-based protocol
-
- Confirmed
-
- split to
-
CONTROLLER-2089 Do not store writerUuid in sal-akka-segmented-journal
-
- In Progress
-
Gerrit Reviews
| # | Subject | Branch | Project | Status | CR | V |
|---|---|---|---|---|---|---|
| 105485,6 | WIP: Improve sal-akka-raft serialization protocol | master | controller | Status: NEW | 0 | -1 |
| 106472,9 | [wip] Introduce PayloadRegistry and Handlers for Payload serialization | master | controller | Status: NEW | -1 | -1 |
| 109487,2 | WIP: Prototype alternative encoding | master | controller | Status: NEW | 0 | -1 |
| 109505,10 | WIP: add RaftState and related constructs | master | controller | Status: NEW | 0 | -1 |
| 109513,3 | WIP: Introduce AppendEntries.Entry | master | controller | Status: NEW | 0 | -1 |
| 109507,7 | Do not leak ReplicatedLogEntry in Replicate message | master | controller | Status: MERGED | +2 | +1 |