Skip to content

typed ActorSystem を new して使うと一部モジュールでエラー #24

@tksugimoto

Description

@tksugimoto

java.lang.UnsupportedOperationException: cannot create top-level actor from the outside on ActorSystem with custom user guardian

Feature/akka typed by tksugimoto · Pull Request #22 · lerna-stack/lerna-sample-payment-app

[info] java.lang.UnsupportedOperationException: cannot create top-level actor from the outside on ActorSystem with custom user guardian
1222
[info] at akka.actor.ActorSystemImpl.actorOf(ActorSystem.scala:901)
1223
[info] at lerna.util.akka.AtLeastOnceDelivery$.tellTo(AtLeastOnceDelivery.scala:120)
1224
[info] at jp.co.tis.lerna.payment.application.ecpayment.issuing.actor.PaymentActorSpec.$anonfun$new$18(PaymentActorSpec.scala:232)

問題の場所

lerna-app-library/AtLeastOnceDelivery.scala at 92f060be39128675ae9c26fea80ab6f423c1050d · lerna-stack/lerna-app-library

val atLeastOnceDeliveryProxy = system.toClassic.actorOf(AtLeastOnceDelivery.props(destination.toClassic))  

発生すると思われるコード

$ git grep system.*.actorOf */src/main
lerna-management/src/main/scala/lerna/management/stats/MetricsImpl.scala:  private val actor: ActorRef            = system.actorOf(MetricsActor.props())
lerna-util-akka/src/main/scala/lerna/util/akka/AtLeastOnceDelivery.scala:    val atLeastOnceDeliveryProxy = system.actorOf(AtLeastOnceDelivery.props(destination))
lerna-util-akka/src/main/scala/lerna/util/akka/AtLeastOnceDelivery.scala:    val atLeastOnceDeliveryProxy = system.actorOf(AtLeastOnceDelivery.props(destination))
lerna-util-akka/src/main/scala/lerna/util/akka/AtLeastOnceDelivery.scala:    val atLeastOnceDeliveryProxy = system.toClassic.actorOf(AtLeastOnceDelivery.props(destination.toClassic)).toTyped
lerna-util-akka/src/main/scala/lerna/util/akka/AtLeastOnceDelivery.scala:    val atLeastOnceDeliveryProxy = system.toClassic.actorOf(AtLeastOnceDelivery.props(destination.toClassic))
lerna-util-sequence/src/main/scala/lerna/util/sequence/CassandraSequenceFactory.scala:    val actor = system.actorOf(

原因

akka/akka - Gitter

if you need system.toClassic.actorOf you have to start it as akka.actor.ActorSystem, which you can adapt with .toTyped

typedSystem.toClassic.actorOf が使えるのは元々クラシックActorSystem の場合のみ。

対策

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions