The FSM is a cluster singleton, and I used the ref of the ClusterSingletonManager, to send messages to. That's no good, I should have used the SingletonProxy, slight oversight..
Op maandag 25 augustus 2014 22:17:16 UTC+2 schreef Dennis Vriend: > > Hi, > > I get the following warning: > > [WARN] [08/25/2014 22:06:40.653] > [NfaCluster-akka.actor.default-dispatcher-18] [akka.tcp:// > [email protected]:2552/user/singleCampaignPrizes] unhandled event > PersistentImpl(PrizeCreated(3,T118),1,/user/sharding/PrizePool/T118-3,false,Collections(),Actor[akka.tcp:// > [email protected]:2553/user/$c#2011411521]) in state Oldest > > And the event is not handled by the FSM, of course. The state Oldest does > not exist, and is not defined by me? Where doest this state come from? Any > ideas? There is an event handler of course for the event: > > import akka.actor.{ActorLogging, FSM, Props} > import akka.persistence.{Persistent, Processor} > import nl.novamedia.nfa.instantwin.CampaignPrizesLike._ > import nl.novamedia.nfa.instantwin.events.v1.cp.{Activate, Deactivate, > IsInstantWinCampaign} > import nl.novamedia.nfa.instantwin.events.v1.pcv.PrizeCreated > > import scala.util.{Failure, Success} > > object CampaignPrizesLike { > sealed trait State > case object NoState extends State > > sealed trait Data > case class CampaignPrizesState(campaigns: Map[String, CampaignState] = > Map.empty[String, CampaignState]) extends Data > > case class CampaignState(active: Boolean = false) > } > > trait CampaignPrizesLike extends Processor with ActorLogging with > FSM[State, Data] { > startWith(NoState, CampaignPrizesState()) > > when(NoState) { > case Event(Persistent(PrizeCreated(ticketNumber, campaignId), _), > data: CampaignPrizesState) => > recoveryRunning match { > case true => > stay() using data.copy(campaigns = data.campaigns + (campaignId > -> CampaignState())) > case false => > log.info("Prize created, ticketNumber: {}, campaignId: {}", > ticketNumber, campaignId) > stay() using data.copy(campaigns = data.campaigns + (campaignId > -> CampaignState())) replying Success((ticketNumber, campaignId)) > } > > case Event(Persistent(Activate(campaignId), _), data: > CampaignPrizesState) => > recoveryRunning match { > case true => > stay() using data.copy(campaigns = data.campaigns + (campaignId > -> CampaignState(active = true))) > case false => > log.info("Activating campaign: {}", campaignId) > val newData = data.copy(campaigns = data.campaigns + (campaignId > -> CampaignState(active = true))) > stay() using newData replying Success((campaignId, > newData.campaigns.get(campaignId))) > } > > case Event(Persistent(Deactivate(campaignId), _), data: > CampaignPrizesState) => > recoveryRunning match { > case true => > stay() using data.copy(campaigns = data.campaigns + (campaignId > -> CampaignState(active = false))) > case false => > log.info("Deactivating campaign: {}", campaignId) > val newData = data.copy(campaigns = data.campaigns + (campaignId > -> CampaignState(active = false))) > stay() using newData replying Success((campaignId, > newData.campaigns.get(campaignId))) > } > > case Event(IsInstantWinCampaign(campaignId), data: > CampaignPrizesState) => > data.campaigns.get(campaignId) match { > case None => stay() replying Failure(new Error("No InstantWin > campaign")) > case Some(_) => stay() replying Success(true) > } > > case Event(msg @ _, _) => > log.info("Unknown event: {}", msg) > stay() > } > } > > object CampaignPrizes { > def props = Props(new CampaignPrizes) > } > > class CampaignPrizes extends CampaignPrizesLike > -- >>>>>>>>>> Read the docs: http://akka.io/docs/ >>>>>>>>>> Check the FAQ: >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user --- You received this message because you are subscribed to the Google Groups "Akka User List" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.
