I'm struggling sooo hard with akka, whenever I try to create persistant actor I get an exception, for a simple actor it works fine, but with this implementation I get an error. I've tried EVERYTHING, even adding stuff to the application.conf file. HEEELP PLSS:S

I think it breaks on:

val myPersistentBehavior = context.spawn(MyPersistentBehavior("Behaaaaaaavior"), "rootActor")

Anyways, code - very simple persistant actor:

object MyPersistentBehavior {
  sealed trait Command
  final case class Add(data: String) extends Command
  case object Clear extends Command
  case class GetState(replyTo: ActorRef[State]) extends Command
  case class AddCommand(number: Int, replyTo: ActorRef[State]) extends Command

  sealed trait Event
  final case class Added(data: String) extends Event
  case object Cleared extends Event

  final case class State(history: List[String] = Nil)

  def onCommand(state: State, command: Command): Effect[Event, State] = {
    command match {
      case Add(data) => Effect.persist(Added(data))
      case Clear     => Effect.persist(Cleared)
      case GetState(replyTo) =>
        replyTo ! state
        Effect.none
    }
  }

  val eventHandler: (State, Event) => State = { (state, event) =>
    event match {
      case Added(data) => state.copy((data :: state.history).take(5))
      case Cleared     => State(Nil)
    }
  }

  def apply(id: String): Behavior[Command] =
    EventSourcedBehavior[Command, Event, State](
      persistenceId = PersistenceId.ofUniqueId(id),
      emptyState = State(Nil),
      commandHandler = onCommand,
      eventHandler = eventHandler)
}

Entry point:

object QuickstartApp {
  //#start-http-server
  private def startHttpServer(routes: Route)(implicit system: ActorSystem[_]): Unit = {
    // Akka HTTP still needs a classic ActorSystem to start
    import system.executionContext

    val futureBinding = Http().newServerAt("localhost", 8080).bind(routes)
    futureBinding.onComplete {
      case Success(binding) =>
        val address = binding.localAddress
        system.log.info("Server online at http://{}:{}/", address.getHostString, address.getPort)
      case Failure(ex) =>
        system.log.error("Failed to bind HTTP endpoint, terminating system", ex)
        system.terminate()
    }
  }
  
  def main(args: Array[String]): Unit = {
    //#server-bootstrapping
    val rootBehavior = Behaviors.setup[MyPersistentBehavior.Command] { context =>
      val myPersistentBehavior = context.spawn(MyPersistentBehavior("Behaaaaaaavior"), "rootActor")
      context.watch(myPersistentBehavior)
      val routes = new NewROutes(myPersistentBehavior)(context.system)

      startHttpServer(routes.routes)(context.system)
      Behaviors.same
    }
    val system = ActorSystem[MyPersistentBehavior.Command](rootBehavior, "HelloAkkaHttpServer")
    //#server-bootstrapping
  }
}

Error:

[2022-05-27 21:42:25,673] [INFO] [akka.event.slf4j.Slf4jLogger] [HelloAkkaHttpServer-akka.actor.default-dispatcher-3] [] - Slf4jLogger started
[2022-05-27 21:42:26,250] [ERROR] [akka.actor.SupervisorStrategy] [HelloAkkaHttpServer-akka.actor.default-dispatcher-3] [akka://HelloAkkaHttpServer/user] - Default journal plugin is not configured, see 'reference.conf'
akka.actor.ActorInitializationException: akka://HelloAkkaHttpServer/user/UserRegistryActor: exception during creation
    at akka.actor.ActorInitializationException$.apply(Actor.scala:196)
    at akka.actor.ActorCell.create(ActorCell.scala:664)
    at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:514)
    at akka.actor.ActorCell.systemInvoke(ActorCell.scala:536)
    at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:295)
    at akka.dispatch.Mailbox.run(Mailbox.scala:230)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:243)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: java.lang.IllegalArgumentException: Default journal plugin is not configured, see 'reference.conf'
    at akka.persistence.Persistence$.verifyPluginConfigIsDefined(Persistence.scala:187)
    at akka.persistence.typed.internal.EventSourcedSettings$.defaultJournalPluginId$1(EventSourcedSettings.scala:61)
    at akka.persistence.typed.internal.EventSourcedSettings$.journalConfigFor(EventSourcedSettings.scala:65)
    at akka.persistence.typed.internal.EventSourcedSettings$.apply(EventSourcedSettings.scala:40)
    at akka.persistence.typed.internal.EventSourcedSettings$.apply(EventSourcedSettings.scala:23)
    at akka.persistence.typed.internal.EventSourcedBehaviorImpl.apply(EventSourcedBehaviorImpl.scala:125)
    at akka.actor.typed.Behavior$.start(Behavior.scala:168)
    at akka.actor.typed.internal.adapter.ActorAdapter.preStart(ActorAdapter.scala:290)
    at akka.actor.Actor.aroundPreStart(Actor.scala:548)
    at akka.actor.Actor.aroundPreStart$(Actor.scala:548)
    at akka.actor.typed.internal.adapter.ActorAdapter.aroundPreStart(ActorAdapter.scala:265)
    at akka.actor.ActorCell.create(ActorCell.scala:644)
    ... 10 common frames omitted
[2022-05-27 21:42:26,257] [ERROR] [akka.actor.LocalActorRefProvider] [HelloAkkaHttpServer-akka.actor.default-dispatcher-5] [LocalActorRefProvider] - guardian failed, shutting down system
akka.actor.typed.DeathPactException: death pact with Actor[akka://HelloAkkaHttpServer/user/UserRegistryActor#-1312428378] was triggered
    at akka.actor.typed.Behavior$.interpretSignal(Behavior.scala:239)
    at akka.actor.typed.internal.adapter.ActorAdapter.handleSignal(ActorAdapter.scala:138)
    at akka.actor.typed.internal.adapter.ActorAdapter.aroundReceive(ActorAdapter.scala:91)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:580)
    at akka.actor.dungeon.DeathWatch.$anonfun$receivedTerminated$1(DeathWatch.scala:79)
    at akka.actor.dungeon.DeathWatch.$anonfun$receivedTerminated$1$adapted(DeathWatch.scala:70)
    at scala.Option.foreach(Option.scala:437)
    at akka.actor.dungeon.DeathWatch.receivedTerminated(DeathWatch.scala:70)
    at akka.actor.dungeon.DeathWatch.receivedTerminated$(DeathWatch.scala:69)
    at akka.actor.ActorCell.receivedTerminated(ActorCell.scala:411)
    at akka.actor.ActorCell.autoReceiveMessage(ActorCell.scala:563)
    at akka.actor.ActorCell.invoke(ActorCell.scala:546)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270)
    at akka.dispatch.Mailbox.run(Mailbox.scala:231)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:243)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
[2022-05-27 21:42:26,257] [ERROR] [akka.actor.OneForOneStrategy] [HelloAkkaHttpServer-akka.actor.default-dispatcher-5] [akka://HelloAkkaHttpServer/user] - death pact with Actor[akka://HelloAkkaHttpServer/user/UserRegistryActor#-1312428378] was triggered
akka.actor.typed.DeathPactException: death pact with Actor[akka://HelloAkkaHttpServer/user/UserRegistryActor#-1312428378] was triggered
    at akka.actor.typed.Behavior$.interpretSignal(Behavior.scala:239)
    at akka.actor.typed.internal.adapter.ActorAdapter.handleSignal(ActorAdapter.scala:138)
    at akka.actor.typed.internal.adapter.ActorAdapter.aroundReceive(ActorAdapter.scala:91)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:580)
    at akka.actor.dungeon.DeathWatch.$anonfun$receivedTerminated$1(DeathWatch.scala:79)
    at akka.actor.dungeon.DeathWatch.$anonfun$receivedTerminated$1$adapted(DeathWatch.scala:70)
    at scala.Option.foreach(Option.scala:437)
    at akka.actor.dungeon.DeathWatch.receivedTerminated(DeathWatch.scala:70)
    at akka.actor.dungeon.DeathWatch.receivedTerminated$(DeathWatch.scala:69)
    at akka.actor.ActorCell.receivedTerminated(ActorCell.scala:411)
    at akka.actor.ActorCell.autoReceiveMessage(ActorCell.scala:563)
    at akka.actor.ActorCell.invoke(ActorCell.scala:546)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:270)
    at akka.dispatch.Mailbox.run(Mailbox.scala:231)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:243)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
[2022-05-27 21:42:26,265] [ERROR] [akka.actor.typed.ActorSystem] [HelloAkkaHttpServer-akka.actor.default-dispatcher-5] [] - Failed to bind HTTP endpoint, terminating system
java.util.NoSuchElementException: Binding was unbound before it was completely finished
    at akka.stream.impl.io.ConnectionSourceStage$$anon$1.postStop(TcpStages.scala:196)
    at akka.stream.impl.fusing.GraphInterpreter.finalizeStage(GraphInterpreter.scala:600)
    at akka.stream.impl.fusing.GraphInterpreter.finish(GraphInterpreter.scala:324)
    at akka.stream.impl.fusing.GraphInterpreterShell.tryAbort(ActorGraphInterpreter.scala:689)
    at akka.stream.impl.fusing.ActorGraphInterpreter.$anonfun$postStop$1(ActorGraphInterpreter.scala:846)
    at akka.stream.impl.fusing.ActorGraphInterpreter.$anonfun$postStop$1$adapted(ActorGraphInterpreter.scala:846)
    at scala.collection.immutable.Set$Set1.foreach(Set.scala:168)
    at akka.stream.impl.fusing.ActorGraphInterpreter.postStop(ActorGraphInterpreter.scala:846)
    at akka.actor.Actor.aroundPostStop(Actor.scala:556)
    at akka.actor.Actor.aroundPostStop$(Actor.scala:556)
    at akka.stream.impl.fusing.ActorGraphInterpreter.aroundPostStop(ActorGraphInterpreter.scala:716)
    at akka.actor.dungeon.FaultHandling.finishTerminate(FaultHandling.scala:240)
    at akka.actor.dungeon.FaultHandling.terminate(FaultHandling.scala:197)
    at akka.actor.dungeon.FaultHandling.terminate$(FaultHandling.scala:167)
    at akka.actor.ActorCell.terminate(ActorCell.scala:411)
    at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:520)
    at akka.actor.ActorCell.systemInvoke(ActorCell.scala:536)
    at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:295)
    at akka.dispatch.Mailbox.run(Mailbox.scala:230)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:243)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)

Process finished with exit code 0

Thank you soooo much for any help!!

0

There are 0 answers