akka/akka-core

Persistence with Jackson trying to cast all Map keys to String

Open

#28,566 opened on Feb 4, 2020

View on GitHub
 (6 comments) (2 reactions) (0 assignees)Scala (13,277 stars) (3,547 forks)batch import
1 - triagedhelp wantedt:docst:serialization

Description

scalaVersion "2.13.1" akkaVersion = "2.6.1"

akka {
  actor {
    serializers {
      jackson-json = "akka.serialization.jackson.JacksonJsonSerializer"
      jackson-cbor = "akka.serialization.jackson.JacksonCborSerializer"
    }
    serialization-bindings {
      "xxx.CborSerializable" = jackson-cbor
    }
  }
}
trait CborSerializable

final case class State(data:Map[Long,List[String]]) extends CborSerializable

// persist something with typed persistent actor.  eg. 42 -> List() 
// after snapshot recovery 

state.data.get(42) // should be Some, but it is None

state.data.find(_._1 == 42) // throws ex

Exception is

class java.lang.String cannot be cast to class java.lang.Long (java.lang.String and java.lang.Long are in module java.base of loader 'bootstrap') java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Long (java.lang.String and java.lang.Long are in module java.base of loader 'bootstrap')

Contributor guide

Persistence with Jackson trying to cast all Map keys to String · akka/akka-core#28566 | Good First Issue