in core/src/main/scala/org/apache/pekko/persistence/cassandra/snapshot/CassandraSnapshotStore.scala [161:181]
private def load1Async(metadata: SnapshotMetadata): Future[DeserializedSnapshot] = {
val boundSelectSnapshot = preparedSelectSnapshot.map(
_.bind(metadata.persistenceId, metadata.sequenceNr: JLong).setExecutionProfileName(snapshotSettings.readProfile))
boundSelectSnapshot.flatMap(session.selectOne).flatMap {
case None =>
// Can happen since metadata and the actual snapshot might not be replicated at exactly same time.
// Handled by loadNAsync.
throw new NoSuchElementException(
s"No snapshot for persistenceId [${metadata.persistenceId}] " +
s"with with sequenceNr [${metadata.sequenceNr}]")
case Some(row) =>
row.getByteBuffer("snapshot") match {
case null =>
snapshotSerialization.deserializeSnapshot(row)
case bytes =>
// for backwards compatibility
val payload = serialization.deserialize(Bytes.getArray(bytes), classOf[Snapshot]).get.data
Future.successful(DeserializedSnapshot(payload, OptionVal.None))
}
}
}