1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2018 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.api
21 
22 import akka.actor.typed.receptionist.{Receptionist, ServiceKey}
23 import akka.actor.typed.scaladsl.{ActorContext, Behaviors}
24 import akka.actor.typed.{ActorRef, Behavior, Props, SpawnProtocol}
25 import org.make.api.idea.{IdeaConsumerBehavior, IdeaProducerBehavior}
26 import org.make.api.kafka.kafkaDispatcher
27 import org.make.api.proposal.ProposalSupervisor
28 import org.make.api.sequence.{SequenceCacheManager, SequenceConfigurationActor}
29 import org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationActorProtocol
30 import org.make.api.sessionhistory.SessionHistoryCoordinator
31 import org.make.api.technical.crm._
32 import org.make.api.technical.job.JobCoordinator
33 import org.make.api.technical.tracking.{
34   DemographicsProducerBehavior,
35   PanoramicProducerBehavior,
36   TrackingProducerBehavior
37 }
38 import org.make.api.technical.{ActorProtocol, ActorSystemHelper, DeadLettersListenerActor, MakeDowningActor}
39 import org.make.api.user.UserSupervisor
40 import org.make.api.userhistory.{UserHistoryCommand, UserHistoryCoordinator}
41 import org.make.core.job.Job
42 
43 object MakeGuardian {
44   val name: String = "make-api"
45 
46   sealed trait GuardianProtocol extends ActorProtocol
47 
48   sealed trait GuardianCommand extends GuardianProtocol
49   final case class Initialize(replyTo: ActorRef[Initialized.type]) extends GuardianCommand
50 
51   sealed trait GuardianResponse extends GuardianProtocol
52   case object Initialized extends GuardianResponse
53 
54   val SpawnActorKey: ServiceKey[SpawnProtocol.Command] = ServiceKey("spawn-actor")
55 
56   def createBehavior(dependencies: MakeApi): Behavior[GuardianCommand] = {
57     Behaviors.setup { implicit context =>
58       Behaviors.receiveMessagePartial {
59         case Initialize(sender) =>
60           createTechnicalActors(dependencies)
61           createFunctionalActors(dependencies)
62           createProducersAndConsumers(dependencies)
63           sender ! Initialized
64           initialized()
65       }
66     }
67   }
68 
69   private def initialized(): Behavior[GuardianCommand] = {
70     Behaviors.receiveMessagePartial {
71       case Initialize(sender) =>
72         sender ! Initialized
73         Behaviors.same
74     }
75   }
76 
77   private def createTechnicalActors(dependencies: MakeApi)(implicit context: ActorContext[_]): Unit = {
78     context.watch(context.spawn(MakeDowningActor(), MakeDowningActor.name))
79     context.watch(context.spawn(DeadLettersListenerActor(), DeadLettersListenerActor.name))
80     val spawnActorRef = context.spawn(SpawnProtocol(), MakeGuardian.SpawnActorKey.id)
81     context.watch(spawnActorRef)
82     context.system.receptionist ! Receptionist.Register(MakeGuardian.SpawnActorKey, spawnActorRef)
83 
84     val sequenceConfigurationCacheActor: ActorRef[SequenceConfigurationActorProtocol] = context.spawn(
85       ActorSystemHelper.superviseWithBackoff(
86         SequenceConfigurationActor(dependencies.persistentSequenceConfigurationService)
87       ),
88       SequenceConfigurationActor.name
89     )
90     context.watch(sequenceConfigurationCacheActor)
91     context.system.receptionist ! Receptionist.Register(
92       SequenceConfigurationActor.SequenceConfigurationCacheActorKey,
93       sequenceConfigurationCacheActor
94     )
95     val sequenceCacheManager: ActorRef[SequenceCacheManager.Protocol] = context.spawn(
96       ActorSystemHelper.superviseWithBackoff(
97         SequenceCacheManager(
98           dependencies.sequenceCacheConfiguration,
99           dependencies.sequenceService,
100           dependencies.sequenceConfigurationService
101         )
102       ),
103       SequenceCacheManager.name
104     )
105     context.watch(sequenceCacheManager)
106     context.system.receptionist ! Receptionist.Register(
107       SequenceCacheManager.SequenceCacheActorKey,
108       sequenceCacheManager
109     )
110   }
111 
112   private def createFunctionalActors(dependencies: MakeApi)(implicit context: ActorContext[_]): Unit = {
113     val userHistoryCoordinator: ActorRef[UserHistoryCommand] = UserHistoryCoordinator(system = context.system)
114     context.watch(userHistoryCoordinator)
115     context.system.receptionist ! Receptionist.Register(UserHistoryCoordinator.Key, userHistoryCoordinator)
116 
117     val sessionHistoryCoordinator =
118       SessionHistoryCoordinator(
119         context.system,
120         userHistoryCoordinator,
121         dependencies.idGenerator,
122         dependencies.makeSettings
123       )
124     context.watch(sessionHistoryCoordinator)
125     context.system.receptionist ! Receptionist.Register(SessionHistoryCoordinator.Key, sessionHistoryCoordinator)
126 
127     context.watch(
128       context.spawn[Nothing](
129         ProposalSupervisor(dependencies, dependencies.makeSettings.lockDuration),
130         ProposalSupervisor.name
131       )
132     )
133 
134     context.watch(context.spawn[Nothing](UserSupervisor(dependencies), UserSupervisor.name))
135 
136     val jobCoordinatorRef = JobCoordinator(context.system, Job.defaultHeartRate)
137 
138     context.watch(jobCoordinatorRef)
139     context.system.receptionist ! Receptionist.Register(JobCoordinator.Key, jobCoordinatorRef)
140   }
141 
142   private def createProducersAndConsumers(dependencies: MakeApi)(implicit context: ActorContext[_]): Unit = {
143     spawnKafkaActorWithBackoff(DemographicsProducerBehavior(), DemographicsProducerBehavior.name)
144     spawnKafkaActorWithBackoff(IdeaProducerBehavior(), IdeaProducerBehavior.name)
145     spawnKafkaActorWithBackoff(
146       IdeaConsumerBehavior(dependencies.ideaService, dependencies.elasticsearchIdeaAPI),
147       IdeaConsumerBehavior.name
148     )
149     spawnKafkaActorWithBackoff(MailJetProducerBehavior(), MailJetProducerBehavior.name)
150     spawnKafkaActorWithBackoff(MailJetConsumerBehavior(dependencies.crmService), MailJetConsumerBehavior.name)
151     spawnKafkaActorWithBackoff(MailJetEventProducerBehavior(), MailJetEventProducerBehavior.name)
152     spawnKafkaActorWithBackoff(
153       MailJetEventConsumerBehavior(dependencies.userService),
154       MailJetEventConsumerBehavior.name
155     )
156     spawnKafkaActorWithBackoff(TrackingProducerBehavior(), TrackingProducerBehavior.name)
157     spawnKafkaActorWithBackoff(PanoramicProducerBehavior(), PanoramicProducerBehavior.name)
158   }
159 
160   private def spawnKafkaActorWithBackoff(behavior: Behavior[_], name: String)(
161     implicit context: ActorContext[_]
162   ): Unit = {
163     context.watch(
164       context.spawn(
165         ActorSystemHelper.superviseWithBackoff(behavior),
166         name,
167         Props.empty.withDispatcherFromConfig(kafkaDispatcher)
168       )
169     )
170   }
171 }
Line Stmt Id Pos Tree Symbol Tests Code
44 36976 1864 - 1874 Literal <nosymbol> "make-api"
54 41877 2245 - 2270 ApplyToImplicitArgs akka.actor.typed.receptionist.ServiceKey.apply akka.actor.typed.receptionist.ServiceKey.apply[akka.actor.typed.SpawnProtocol.Command]("spawn-actor")((ClassTag.apply[akka.actor.typed.SpawnProtocol.Command](classOf[akka.actor.typed.SpawnProtocol$$Command]): scala.reflect.ClassTag[akka.actor.typed.SpawnProtocol.Command]))
54 49996 2256 - 2269 Literal <nosymbol> "spawn-actor"
57 41622 2351 - 2677 Apply akka.actor.typed.scaladsl.Behaviors.setup akka.actor.typed.scaladsl.Behaviors.setup[org.make.api.MakeGuardian.GuardianCommand](((implicit context: akka.actor.typed.scaladsl.ActorContext[org.make.api.MakeGuardian.GuardianCommand]) => akka.actor.typed.scaladsl.Behaviors.receiveMessagePartial[org.make.api.MakeGuardian.GuardianCommand](({ @SerialVersionUID(value = 0) final <synthetic> class $anonfun extends scala.runtime.AbstractPartialFunction[org.make.api.MakeGuardian.GuardianCommand,akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]] with java.io.Serializable { def <init>(): <$anon: org.make.api.MakeGuardian.GuardianCommand => akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]> = { $anonfun.super.<init>(); () }; final override def applyOrElse[A1 <: org.make.api.MakeGuardian.GuardianCommand, B1 >: akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]](x1: A1, default: A1 => B1): B1 = ((x1.asInstanceOf[org.make.api.MakeGuardian.GuardianCommand]: org.make.api.MakeGuardian.GuardianCommand): org.make.api.MakeGuardian.GuardianCommand @unchecked) match { case (replyTo: akka.actor.typed.ActorRef[org.make.api.MakeGuardian.Initialized.type]): org.make.api.MakeGuardian.Initialize((sender @ _)) => { MakeGuardian.this.createTechnicalActors(dependencies)(context); MakeGuardian.this.createFunctionalActors(dependencies)(context); MakeGuardian.this.createProducersAndConsumers(dependencies)(context); typed.this.ActorRef.ActorRefOps[org.make.api.MakeGuardian.Initialized.type](sender).!(MakeGuardian.this.Initialized); MakeGuardian.this.initialized() } case (defaultCase$ @ _) => default.apply(x1) }; final def isDefinedAt(x1: org.make.api.MakeGuardian.GuardianCommand): Boolean = ((x1.asInstanceOf[org.make.api.MakeGuardian.GuardianCommand]: org.make.api.MakeGuardian.GuardianCommand): org.make.api.MakeGuardian.GuardianCommand @unchecked) match { case (replyTo: akka.actor.typed.ActorRef[org.make.api.MakeGuardian.Initialized.type]): org.make.api.MakeGuardian.Initialize((sender @ _)) => true case (defaultCase$ @ _) => false } }; new $anonfun() }: PartialFunction[org.make.api.MakeGuardian.GuardianCommand,akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]]))))
58 49478 2395 - 2671 Apply akka.actor.typed.scaladsl.Behaviors.receiveMessagePartial akka.actor.typed.scaladsl.Behaviors.receiveMessagePartial[org.make.api.MakeGuardian.GuardianCommand](({ @SerialVersionUID(value = 0) final <synthetic> class $anonfun extends scala.runtime.AbstractPartialFunction[org.make.api.MakeGuardian.GuardianCommand,akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]] with java.io.Serializable { def <init>(): <$anon: org.make.api.MakeGuardian.GuardianCommand => akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]> = { $anonfun.super.<init>(); () }; final override def applyOrElse[A1 <: org.make.api.MakeGuardian.GuardianCommand, B1 >: akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]](x1: A1, default: A1 => B1): B1 = ((x1.asInstanceOf[org.make.api.MakeGuardian.GuardianCommand]: org.make.api.MakeGuardian.GuardianCommand): org.make.api.MakeGuardian.GuardianCommand @unchecked) match { case (replyTo: akka.actor.typed.ActorRef[org.make.api.MakeGuardian.Initialized.type]): org.make.api.MakeGuardian.Initialize((sender @ _)) => { MakeGuardian.this.createTechnicalActors(dependencies)(context); MakeGuardian.this.createFunctionalActors(dependencies)(context); MakeGuardian.this.createProducersAndConsumers(dependencies)(context); typed.this.ActorRef.ActorRefOps[org.make.api.MakeGuardian.Initialized.type](sender).!(MakeGuardian.this.Initialized); MakeGuardian.this.initialized() } case (defaultCase$ @ _) => default.apply(x1) }; final def isDefinedAt(x1: org.make.api.MakeGuardian.GuardianCommand): Boolean = ((x1.asInstanceOf[org.make.api.MakeGuardian.GuardianCommand]: org.make.api.MakeGuardian.GuardianCommand): org.make.api.MakeGuardian.GuardianCommand @unchecked) match { case (replyTo: akka.actor.typed.ActorRef[org.make.api.MakeGuardian.Initialized.type]): org.make.api.MakeGuardian.Initialize((sender @ _)) => true case (defaultCase$ @ _) => false } }; new $anonfun() }: PartialFunction[org.make.api.MakeGuardian.GuardianCommand,akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]]))
58 36735 2427 - 2427 Apply org.make.api.MakeGuardian.$anonfun.<init> new $anonfun()
60 38312 2474 - 2509 ApplyToImplicitArgs org.make.api.MakeGuardian.createTechnicalActors MakeGuardian.this.createTechnicalActors(dependencies)(context)
61 51083 2520 - 2556 ApplyToImplicitArgs org.make.api.MakeGuardian.createFunctionalActors MakeGuardian.this.createFunctionalActors(dependencies)(context)
62 43500 2567 - 2608 ApplyToImplicitArgs org.make.api.MakeGuardian.createProducersAndConsumers MakeGuardian.this.createProducersAndConsumers(dependencies)(context)
63 35087 2628 - 2639 Select org.make.api.MakeGuardian.Initialized MakeGuardian.this.Initialized
63 31190 2619 - 2639 Apply akka.actor.typed.ActorRef.ActorRefOps.! typed.this.ActorRef.ActorRefOps[org.make.api.MakeGuardian.Initialized.type](sender).!(MakeGuardian.this.Initialized)
64 44582 2650 - 2663 Apply org.make.api.MakeGuardian.initialized MakeGuardian.this.initialized()
70 35126 2778 - 2778 Apply org.make.api.MakeGuardian.$anonfun.<init> new $anonfun()
70 30945 2746 - 2870 Apply akka.actor.typed.scaladsl.Behaviors.receiveMessagePartial akka.actor.typed.scaladsl.Behaviors.receiveMessagePartial[org.make.api.MakeGuardian.GuardianCommand](({ @SerialVersionUID(value = 0) final <synthetic> class $anonfun extends scala.runtime.AbstractPartialFunction[org.make.api.MakeGuardian.GuardianCommand,akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]] with java.io.Serializable { def <init>(): <$anon: org.make.api.MakeGuardian.GuardianCommand => akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]> = { $anonfun.super.<init>(); () }; final override def applyOrElse[A1 <: org.make.api.MakeGuardian.GuardianCommand, B1 >: akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]](x1: A1, default: A1 => B1): B1 = ((x1.asInstanceOf[org.make.api.MakeGuardian.GuardianCommand]: org.make.api.MakeGuardian.GuardianCommand): org.make.api.MakeGuardian.GuardianCommand @unchecked) match { case (replyTo: akka.actor.typed.ActorRef[org.make.api.MakeGuardian.Initialized.type]): org.make.api.MakeGuardian.Initialize((sender @ _)) => { typed.this.ActorRef.ActorRefOps[org.make.api.MakeGuardian.Initialized.type](sender).!(MakeGuardian.this.Initialized); akka.actor.typed.scaladsl.Behaviors.same[org.make.api.MakeGuardian.GuardianCommand] } case (defaultCase$ @ _) => default.apply(x1) }; final def isDefinedAt(x1: org.make.api.MakeGuardian.GuardianCommand): Boolean = ((x1.asInstanceOf[org.make.api.MakeGuardian.GuardianCommand]: org.make.api.MakeGuardian.GuardianCommand): org.make.api.MakeGuardian.GuardianCommand @unchecked) match { case (replyTo: akka.actor.typed.ActorRef[org.make.api.MakeGuardian.Initialized.type]): org.make.api.MakeGuardian.Initialize((sender @ _)) => true case (defaultCase$ @ _) => false } }; new $anonfun() }: PartialFunction[org.make.api.MakeGuardian.GuardianCommand,akka.actor.typed.Behavior[org.make.api.MakeGuardian.GuardianCommand]]))
72 51118 2821 - 2841 Apply akka.actor.typed.ActorRef.ActorRefOps.! typed.this.ActorRef.ActorRefOps[org.make.api.MakeGuardian.Initialized.type](sender).!(MakeGuardian.this.Initialized)
72 37206 2830 - 2841 Select org.make.api.MakeGuardian.Initialized MakeGuardian.this.Initialized
73 43254 2850 - 2864 TypeApply akka.actor.typed.scaladsl.Behaviors.same akka.actor.typed.scaladsl.Behaviors.same[org.make.api.MakeGuardian.GuardianCommand]
78 37241 2984 - 3055 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[org.make.api.technical.MakeDowningActor.Protocol](context.spawn[org.make.api.technical.MakeDowningActor.Protocol](org.make.api.technical.MakeDowningActor.apply(), org.make.api.technical.MakeDowningActor.name, context.spawn$default$3[Nothing]))
78 36179 3032 - 3053 Select org.make.api.technical.MakeDowningActor.name org.make.api.technical.MakeDowningActor.name
78 41666 2998 - 3054 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[org.make.api.technical.MakeDowningActor.Protocol](org.make.api.technical.MakeDowningActor.apply(), org.make.api.technical.MakeDowningActor.name, context.spawn$default$3[Nothing])
78 43735 3012 - 3030 Apply org.make.api.technical.MakeDowningActor.apply org.make.api.technical.MakeDowningActor.apply()
78 49226 3006 - 3006 TypeApply akka.actor.typed.scaladsl.ActorContext.spawn$default$3 context.spawn$default$3[Nothing]
79 47644 3074 - 3146 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[akka.actor.DeadLetter](org.make.api.technical.DeadLettersListenerActor.apply(), org.make.api.technical.DeadLettersListenerActor.name, context.spawn$default$3[Nothing])
79 34877 3082 - 3082 TypeApply akka.actor.typed.scaladsl.ActorContext.spawn$default$3 context.spawn$default$3[Nothing]
79 43454 3116 - 3145 Select org.make.api.technical.DeadLettersListenerActor.name org.make.api.technical.DeadLettersListenerActor.name
79 43774 3060 - 3147 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[akka.actor.DeadLetter](context.spawn[akka.actor.DeadLetter](org.make.api.technical.DeadLettersListenerActor.apply(), org.make.api.technical.DeadLettersListenerActor.name, context.spawn$default$3[Nothing]))
79 50281 3088 - 3114 Apply org.make.api.technical.DeadLettersListenerActor.apply org.make.api.technical.DeadLettersListenerActor.apply()
80 49990 3203 - 3232 Select akka.actor.typed.receptionist.ServiceKey.id MakeGuardian.SpawnActorKey.id
80 41705 3180 - 3180 TypeApply akka.actor.typed.scaladsl.ActorContext.spawn$default$3 context.spawn$default$3[Nothing]
80 38307 3172 - 3233 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[akka.actor.typed.SpawnProtocol.Command](akka.actor.typed.SpawnProtocol.apply(), MakeGuardian.SpawnActorKey.id, context.spawn$default$3[Nothing])
80 35932 3186 - 3201 Apply akka.actor.typed.SpawnProtocol.apply akka.actor.typed.SpawnProtocol.apply()
81 50318 3238 - 3266 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[akka.actor.typed.SpawnProtocol.Command](spawnActorRef)
82 43211 3271 - 3298 Select akka.actor.typed.ActorSystem.receptionist context.system.receptionist
82 44828 3271 - 3365 Apply akka.actor.typed.ActorRef.ActorRefOps.! typed.this.ActorRef.ActorRefOps[akka.actor.typed.receptionist.Receptionist.Command](context.system.receptionist).!(akka.actor.typed.receptionist.Receptionist.Register.apply[akka.actor.typed.SpawnProtocol.Command](MakeGuardian.SpawnActorKey, spawnActorRef))
82 35637 3323 - 3349 Select org.make.api.MakeGuardian.SpawnActorKey MakeGuardian.SpawnActorKey
82 47685 3301 - 3365 Apply akka.actor.typed.receptionist.Receptionist.Register.apply akka.actor.typed.receptionist.Receptionist.Register.apply[akka.actor.typed.SpawnProtocol.Command](MakeGuardian.SpawnActorKey, spawnActorRef)
84 37041 3463 - 3463 TypeApply akka.actor.typed.scaladsl.ActorContext.spawn$default$3 context.spawn$default$3[Nothing]
84 51370 3455 - 3656 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationActorProtocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationActorProtocol](org.make.api.sequence.SequenceConfigurationActor.apply(dependencies.persistentSequenceConfigurationService)), org.make.api.sequence.SequenceConfigurationActor.name, context.spawn$default$3[Nothing])
85 49738 3476 - 3611 Apply org.make.api.technical.ActorSystemHelper.superviseWithBackoff org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationActorProtocol](org.make.api.sequence.SequenceConfigurationActor.apply(dependencies.persistentSequenceConfigurationService))
86 36728 3524 - 3603 Apply org.make.api.sequence.SequenceConfigurationActor.apply org.make.api.sequence.SequenceConfigurationActor.apply(dependencies.persistentSequenceConfigurationService)
88 41617 3619 - 3650 Select org.make.api.sequence.SequenceConfigurationActor.name org.make.api.sequence.SequenceConfigurationActor.name
90 43250 3661 - 3707 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationActorProtocol](sequenceConfigurationCacheActor)
91 35671 3712 - 3739 Select akka.actor.typed.ActorSystem.receptionist context.system.receptionist
91 43566 3742 - 3877 Apply akka.actor.typed.receptionist.Receptionist.Register.apply akka.actor.typed.receptionist.Receptionist.Register.apply[org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationActorProtocol](org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationCacheActorKey, sequenceConfigurationCacheActor)
91 36492 3712 - 3877 Apply akka.actor.typed.ActorRef.ActorRefOps.! typed.this.ActorRef.ActorRefOps[akka.actor.typed.receptionist.Receptionist.Command](context.system.receptionist).!(akka.actor.typed.receptionist.Receptionist.Register.apply[org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationActorProtocol](org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationCacheActorKey, sequenceConfigurationCacheActor))
92 48157 3771 - 3832 Select org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationCacheActorKey org.make.api.sequence.SequenceConfigurationActor.SequenceConfigurationCacheActorKey
95 50869 3958 - 3958 TypeApply akka.actor.typed.scaladsl.ActorContext.spawn$default$3 context.spawn$default$3[Nothing]
95 43005 3950 - 4240 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[org.make.api.sequence.SequenceCacheManager.Protocol](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.sequence.SequenceCacheManager.Protocol](org.make.api.sequence.SequenceCacheManager.apply(dependencies.sequenceCacheConfiguration, dependencies.sequenceService, dependencies.sequenceConfigurationService)), org.make.api.sequence.SequenceCacheManager.name, context.spawn$default$3[Nothing])
96 41658 3971 - 4201 Apply org.make.api.technical.ActorSystemHelper.superviseWithBackoff org.make.api.technical.ActorSystemHelper.superviseWithBackoff[org.make.api.sequence.SequenceCacheManager.Protocol](org.make.api.sequence.SequenceCacheManager.apply(dependencies.sequenceCacheConfiguration, dependencies.sequenceService, dependencies.sequenceConfigurationService))
97 49781 4019 - 4193 Apply org.make.api.sequence.SequenceCacheManager.apply org.make.api.sequence.SequenceCacheManager.apply(dependencies.sequenceCacheConfiguration, dependencies.sequenceService, dependencies.sequenceConfigurationService)
103 33799 4209 - 4234 Select org.make.api.sequence.SequenceCacheManager.name org.make.api.sequence.SequenceCacheManager.name
105 35424 4245 - 4280 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[org.make.api.sequence.SequenceCacheManager.Protocol](sequenceCacheManager)
106 49815 4285 - 4420 Apply akka.actor.typed.ActorRef.ActorRefOps.! typed.this.ActorRef.ActorRefOps[akka.actor.typed.receptionist.Receptionist.Command](context.system.receptionist).!(akka.actor.typed.receptionist.Receptionist.Register.apply[org.make.api.sequence.SequenceCacheManager.Protocol](org.make.api.sequence.SequenceCacheManager.SequenceCacheActorKey, sequenceCacheManager))
106 48194 4285 - 4312 Select akka.actor.typed.ActorSystem.receptionist context.system.receptionist
106 36530 4315 - 4420 Apply akka.actor.typed.receptionist.Receptionist.Register.apply akka.actor.typed.receptionist.Receptionist.Register.apply[org.make.api.sequence.SequenceCacheManager.Protocol](org.make.api.sequence.SequenceCacheManager.SequenceCacheActorKey, sequenceCacheManager)
107 44027 4344 - 4386 Select org.make.api.sequence.SequenceCacheManager.SequenceCacheActorKey org.make.api.sequence.SequenceCacheManager.SequenceCacheActorKey
113 41413 4626 - 4640 Select akka.actor.typed.scaladsl.ActorContext.system context.system
113 33836 4594 - 4641 Apply org.make.api.userhistory.UserHistoryCoordinator.apply org.make.api.userhistory.UserHistoryCoordinator.apply(context.system)
114 51329 4646 - 4683 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[org.make.api.userhistory.UserHistoryCommand](userHistoryCoordinator)
115 34915 4740 - 4766 Select org.make.api.userhistory.UserHistoryCoordinator.Key org.make.api.userhistory.UserHistoryCoordinator.Key
115 39819 4688 - 4791 Apply akka.actor.typed.ActorRef.ActorRefOps.! typed.this.ActorRef.ActorRefOps[akka.actor.typed.receptionist.Receptionist.Command](context.system.receptionist).!(akka.actor.typed.receptionist.Receptionist.Register.apply[org.make.api.userhistory.UserHistoryCommand](org.make.api.userhistory.UserHistoryCoordinator.Key, userHistoryCoordinator))
115 47947 4718 - 4791 Apply akka.actor.typed.receptionist.Receptionist.Register.apply akka.actor.typed.receptionist.Receptionist.Register.apply[org.make.api.userhistory.UserHistoryCommand](org.make.api.userhistory.UserHistoryCoordinator.Key, userHistoryCoordinator)
115 43045 4688 - 4715 Select akka.actor.typed.ActorSystem.receptionist context.system.receptionist
118 49563 4835 - 4835 Select org.make.api.sessionhistory.SessionHistoryCoordinator.apply$default$5 org.make.api.sessionhistory.SessionHistoryCoordinator.apply$default$5
118 41455 4835 - 4993 Apply org.make.api.sessionhistory.SessionHistoryCoordinator.apply org.make.api.sessionhistory.SessionHistoryCoordinator.apply(context.system, userHistoryCoordinator, dependencies.idGenerator, dependencies.makeSettings, org.make.api.sessionhistory.SessionHistoryCoordinator.apply$default$5)
119 35956 4870 - 4884 Select akka.actor.typed.scaladsl.ActorContext.system context.system
124 33581 4998 - 5038 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[org.make.api.sessionhistory.SessionHistoryCommand](sessionHistoryCoordinator)
125 51364 5043 - 5070 Select akka.actor.typed.ActorSystem.receptionist context.system.receptionist
125 42476 5095 - 5124 Select org.make.api.sessionhistory.SessionHistoryCoordinator.Key org.make.api.sessionhistory.SessionHistoryCoordinator.Key
125 34673 5073 - 5152 Apply akka.actor.typed.receptionist.Receptionist.Register.apply akka.actor.typed.receptionist.Receptionist.Register.apply[org.make.api.sessionhistory.SessionHistoryCommand](org.make.api.sessionhistory.SessionHistoryCoordinator.Key, sessionHistoryCoordinator)
125 47987 5043 - 5152 Apply akka.actor.typed.ActorRef.ActorRefOps.! typed.this.ActorRef.ActorRefOps[akka.actor.typed.receptionist.Receptionist.Command](context.system.receptionist).!(akka.actor.typed.receptionist.Receptionist.Register.apply[org.make.api.sessionhistory.SessionHistoryCommand](org.make.api.sessionhistory.SessionHistoryCoordinator.Key, sessionHistoryCoordinator))
127 50093 5158 - 5330 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[Nothing](context.spawn[Nothing](org.make.api.proposal.ProposalSupervisor.apply(dependencies, dependencies.makeSettings.lockDuration), org.make.api.proposal.ProposalSupervisor.name, context.spawn$default$3[Nothing]))
128 34382 5179 - 5324 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[Nothing](org.make.api.proposal.ProposalSupervisor.apply(dependencies, dependencies.makeSettings.lockDuration), org.make.api.proposal.ProposalSupervisor.name, context.spawn$default$3[Nothing])
128 41205 5192 - 5192 TypeApply akka.actor.typed.scaladsl.ActorContext.spawn$default$3 context.spawn$default$3[Nothing]
129 37013 5211 - 5283 Apply org.make.api.proposal.ProposalSupervisor.apply org.make.api.proposal.ProposalSupervisor.apply(dependencies, dependencies.makeSettings.lockDuration)
129 40876 5244 - 5282 Select org.make.api.extensions.MakeSettings.lockDuration dependencies.makeSettings.lockDuration
130 49768 5293 - 5316 Select org.make.api.proposal.ProposalSupervisor.name org.make.api.proposal.ProposalSupervisor.name
134 43534 5373 - 5401 Apply org.make.api.user.UserSupervisor.apply org.make.api.user.UserSupervisor.apply(dependencies)
134 35745 5336 - 5424 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[Nothing](context.spawn[Nothing](org.make.api.user.UserSupervisor.apply(dependencies), org.make.api.user.UserSupervisor.name, context.spawn$default$3[Nothing]))
134 40916 5350 - 5423 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[Nothing](org.make.api.user.UserSupervisor.apply(dependencies), org.make.api.user.UserSupervisor.name, context.spawn$default$3[Nothing])
134 35415 5403 - 5422 Select org.make.api.user.UserSupervisor.name org.make.api.user.UserSupervisor.name
134 47730 5363 - 5363 TypeApply akka.actor.typed.scaladsl.ActorContext.spawn$default$3 context.spawn$default$3[Nothing]
136 34424 5454 - 5506 Apply org.make.api.technical.job.JobCoordinator.apply org.make.api.technical.job.JobCoordinator.apply(context.system, org.make.core.job.Job.defaultHeartRate)
136 41945 5485 - 5505 Select org.make.core.job.Job.defaultHeartRate org.make.core.job.Job.defaultHeartRate
136 49515 5469 - 5483 Select akka.actor.typed.scaladsl.ActorContext.system context.system
138 47433 5512 - 5544 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[org.make.api.technical.job.JobActor.Protocol.Command](jobCoordinatorRef)
139 40955 5549 - 5639 Apply akka.actor.typed.ActorRef.ActorRefOps.! typed.this.ActorRef.ActorRefOps[akka.actor.typed.receptionist.Receptionist.Command](context.system.receptionist).!(akka.actor.typed.receptionist.Receptionist.Register.apply[org.make.api.technical.job.JobActor.Protocol.Command](org.make.api.technical.job.JobCoordinator.Key, jobCoordinatorRef))
139 43036 5549 - 5576 Select akka.actor.typed.ActorSystem.receptionist context.system.receptionist
139 47943 5579 - 5639 Apply akka.actor.typed.receptionist.Receptionist.Register.apply akka.actor.typed.receptionist.Receptionist.Register.apply[org.make.api.technical.job.JobActor.Protocol.Command](org.make.api.technical.job.JobCoordinator.Key, jobCoordinatorRef)
139 35167 5601 - 5619 Select org.make.api.technical.job.JobCoordinator.Key org.make.api.technical.job.JobCoordinator.Key
143 36810 5759 - 5852 ApplyToImplicitArgs org.make.api.MakeGuardian.spawnKafkaActorWithBackoff MakeGuardian.this.spawnKafkaActorWithBackoff(org.make.api.technical.tracking.DemographicsProducerBehavior.apply(), org.make.api.technical.tracking.DemographicsProducerBehavior.name)(context)
144 49555 5857 - 5934 ApplyToImplicitArgs org.make.api.MakeGuardian.spawnKafkaActorWithBackoff MakeGuardian.this.spawnKafkaActorWithBackoff(org.make.api.idea.IdeaProducerBehavior.apply(), org.make.api.idea.IdeaProducerBehavior.name)(context)
145 41706 5939 - 6093 ApplyToImplicitArgs org.make.api.MakeGuardian.spawnKafkaActorWithBackoff MakeGuardian.this.spawnKafkaActorWithBackoff(org.make.api.idea.IdeaConsumerBehavior.apply(dependencies.ideaService, dependencies.elasticsearchIdeaAPI), org.make.api.idea.IdeaConsumerBehavior.name)(context)
149 33576 6098 - 6181 ApplyToImplicitArgs org.make.api.MakeGuardian.spawnKafkaActorWithBackoff MakeGuardian.this.spawnKafkaActorWithBackoff(org.make.api.technical.crm.MailJetProducerBehavior.apply(), org.make.api.technical.crm.MailJetProducerBehavior.name)(context)
150 46165 6186 - 6292 ApplyToImplicitArgs org.make.api.MakeGuardian.spawnKafkaActorWithBackoff MakeGuardian.this.spawnKafkaActorWithBackoff(org.make.api.technical.crm.MailJetConsumerBehavior.apply(dependencies.crmService), org.make.api.technical.crm.MailJetConsumerBehavior.name)(context)
151 42783 6297 - 6390 ApplyToImplicitArgs org.make.api.MakeGuardian.spawnKafkaActorWithBackoff MakeGuardian.this.spawnKafkaActorWithBackoff(org.make.api.technical.crm.MailJetEventProducerBehavior.apply(), org.make.api.technical.crm.MailJetEventProducerBehavior.name)(context)
152 35207 6395 - 6530 ApplyToImplicitArgs org.make.api.MakeGuardian.spawnKafkaActorWithBackoff MakeGuardian.this.spawnKafkaActorWithBackoff(org.make.api.technical.crm.MailJetEventConsumerBehavior.apply(dependencies.userService), org.make.api.technical.crm.MailJetEventConsumerBehavior.name)(context)
156 47979 6535 - 6620 ApplyToImplicitArgs org.make.api.MakeGuardian.spawnKafkaActorWithBackoff MakeGuardian.this.spawnKafkaActorWithBackoff(org.make.api.technical.tracking.TrackingProducerBehavior.apply(), org.make.api.technical.tracking.TrackingProducerBehavior.name)(context)
157 40098 6625 - 6712 ApplyToImplicitArgs org.make.api.MakeGuardian.spawnKafkaActorWithBackoff MakeGuardian.this.spawnKafkaActorWithBackoff(org.make.api.technical.tracking.PanoramicProducerBehavior.apply(), org.make.api.technical.tracking.PanoramicProducerBehavior.name)(context)
163 46625 6853 - 7036 Apply akka.actor.typed.scaladsl.ActorContext.watch context.watch[_$4](context.spawn[_$4](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[_$4](behavior), name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher)))
164 33614 6874 - 7030 Apply akka.actor.typed.scaladsl.ActorContext.spawn context.spawn[_$4](org.make.api.technical.ActorSystemHelper.superviseWithBackoff[_$4](behavior), name, akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher))
165 36319 6897 - 6945 Apply org.make.api.technical.ActorSystemHelper.superviseWithBackoff org.make.api.technical.ActorSystemHelper.superviseWithBackoff[_$4](behavior)
167 41742 6969 - 7022 Apply akka.actor.typed.Props.withDispatcherFromConfig akka.actor.typed.Props.empty.withDispatcherFromConfig(org.make.api.kafka.kafkaDispatcher)
167 49305 7006 - 7021 Select org.make.api.kafka.kafkaDispatcher org.make.api.kafka.kafkaDispatcher