pawelkaczor / akka-ddd

Akka CQRS/ES framework
https://newicom.pl/akka-ddd/
MIT License
352 stars 61 forks source link

Old snapshots (before 1.4.0) is not loaded when recovering actor. #38

Closed hengkysucanda closed 7 years ago

hengkysucanda commented 7 years ago

in JsonSerializerExtension:

The old snapshot doesn't have dataSerializerId, i think it needs one more pattern matching for snapshot that doesn't have data serializer id

def deserialize(implicit format: Formats): PartialFunction[(TypeInfo, JValue), Snapshot] = {
    case (TypeInfo(Clazz, _), JObject(List(
            JField("dataClass", JString(dataClass)),
            JField("dataSerializerId", JInt(serializerId)),
            JField("data", JString(x)),
            JField("metadata", metadata)))) =>
              import Base64._

              val data = if (serializerId.intValue == EmptySerializerId) {
                serialization.deserialize(x.toByteArray, Class.forName(dataClass)).get
              } else {
                serialization.deserialize(x.toByteArray, serializerId.intValue, dataClass).get
              }
              val metaData = metadata.extract[SnapshotMetadata]
              Snapshot(data, metaData)
  }
pawelkaczor commented 7 years ago

Please create pull request. Thanks.

hengkysucanda commented 7 years ago

Pulled https://github.com/pawelkaczor/akka-ddd/pull/39.

Thanks for the chance to contribute!