private def load1Async()

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))
        }
    }
  }