3

I didn't find a way (documentation and API) to remove old snapshots with Akka Persistence Typed. With the plain API, I used:

override def receiveCommand: Receive = {
    case SaveSnapshotSuccess(metadata) =>
      deleteSnapshots(SnapshotSelectionCriteria.create(metadata.sequenceNr, metadata.timestamp - 1))
    case c: C => {
      val snd = sender()
      c.validate(persistenceId, state).fold(
        error => snd ! Left(error),
        event => {
          persist(event) { _ =>
            state = eventHandler.handle(event)(state)
            saveSnapshot(state)
            snd ! Right(event)
          }
        }
      )
    }
  }

But with the new API, I can't find a way.

 def behavior(persistenceId: String): Behavior[BoardCommand] = PersistentBehaviors
    .receive[BoardCommand, BoardEvent, Option[states.Board]](
    persistenceId, None,
    (state, cmd)=> {
      cmd.validate(persistenceId, state ).fold(
        error => {
          cmd.replyTo ! Left(error)
          Effect.none[BoardEvent, Option[states.Board]]
        },
        v => {
          cmd.replyTo !  Right(v)
          Effect.persist(v)
        })
    },
    (state, event)=> BoardEventHandler.handle(event)(state)
  ).snapshotEvery(1)
Jeffrey Chung
  • 19,319
  • 8
  • 34
  • 54
Damien GOUYETTE
  • 467
  • 1
  • 3
  • 11

0 Answers0