akka/akka-core

Serialization issues with Option

開放

#29,923 建立於 2020年12月30日

 (3 則留言) (0 個反應) (0 位負責人)Scala (3,547 個分叉)batch import
1 - triagedhelp wanted

倉庫指標

星標
 (13,277 顆星)
PR 合併指標
 (平均合併 8天 19小時) (30 天內合併 10 個 PR)

描述

Some example projects and also the current style guide recommend using Option for state in event sourced behaviors (entities). This causes two issues:

  1. Double serialization - Option is caught by MiscMessageSerializer, which delegates payload serialization to another serializer based on configuration and then serializes the result again with ContainerFormats.Option.
  2. Payload serialization is always synchronous, so this results in blocking IO in a case where state uses AsyncSerializer.

These issues could be fixed by implementing following changes:

  1. Altering documentation to suggest using sealed trait hierarchies or case classes which contain Option to express empty state.
  2. Converting MiscMessageSerializer to AsyncSerializer.

Behavior seems obviously undesirable, so I'm wondering if I am missing something or does this actually need fixing?

I've noticed this issue with Lagom 1.6.4 entities, but since they fallback to Akka actors for everything I assume this is a general Akka issue.

貢獻者指南