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.sessionhistory
21 
22 import akka.actor.typed.ActorRef
23 import akka.stream.scaladsl.{Sink, Source}
24 import akka.util.Timeout
25 import org.make.api.extensions.MakeSettingsComponent
26 import org.make.api.sessionhistory.SessionHistoryResponse.{Error, LockResponse}
27 import org.make.api.sessionhistory.SessionHistoryResponse.Error.ExpiredSession
28 import org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef
29 import org.make.api.technical.{ActorSystemComponent, StreamUtils, TimeSettings}
30 import org.make.core.technical.Pagination
31 import org.make.core.history.HistoryActions.VoteAndQualifications
32 import org.make.core.proposal.{ProposalId, QualificationKey}
33 import org.make.core.session.SessionId
34 import org.make.core.user.UserId
35 import org.make.core.RequestContext
36 
37 import scala.concurrent.ExecutionContext.global
38 import scala.concurrent.{ExecutionContext, Future}
39 import cats.implicits._
40 
41 trait SessionHistoryCoordinatorComponent {
42   def sessionHistoryCoordinator: ActorRef[SessionHistoryCommand]
43 }
44 
45 trait SessionHistoryCoordinatorService {
46   def getCurrentSessionId(sessionId: SessionId, newSessionId: SessionId): Future[SessionId]
47   def logTransactionalHistory[T <: LoggableHistoryEvent[_]](command: T): Future[Unit]
48   def convertSession(sessionId: SessionId, userId: UserId, requestContext: RequestContext): Future[Unit]
49   def retrieveVoteAndQualifications(
50     sessionId: SessionId,
51     proposalIds: Seq[ProposalId]
52   ): Future[Map[ProposalId, VoteAndQualifications]]
53   def retrieveVotedProposals(
54     sessionId: SessionId,
55     proposalsIds: Option[Seq[ProposalId]] = None
56   ): Future[Seq[ProposalId]]
57   def lockSessionForVote(sessionId: SessionId, proposalId: ProposalId): Future[Unit]
58   def lockSessionForQualification(sessionId: SessionId, proposalId: ProposalId, key: QualificationKey): Future[Unit]
59   def unlockSessionForVote(sessionId: SessionId, proposalId: ProposalId): Future[Unit]
60   def unlockSessionForQualification(sessionId: SessionId, proposalId: ProposalId, key: QualificationKey): Future[Unit]
61 }
62 
63 trait SessionHistoryCoordinatorServiceComponent {
64   def sessionHistoryCoordinatorService: SessionHistoryCoordinatorService
65 }
66 
67 final case class ConcurrentModification(message: String) extends Exception(message)
68 
69 trait DefaultSessionHistoryCoordinatorServiceComponent extends SessionHistoryCoordinatorServiceComponent {
70   self: SessionHistoryCoordinatorComponent with ActorSystemComponent with MakeSettingsComponent =>
71 
72   type Receiver[T] = ActorRef[SessionHistoryResponse[Error.Expired, T]]
73   type LockReceiver = ActorRef[SessionHistoryResponse[Error.LockError, LockResponse]]
74 
75   override lazy val sessionHistoryCoordinatorService: SessionHistoryCoordinatorService =
76     new DefaultSessionHistoryCoordinatorService
77 
78   class DefaultSessionHistoryCoordinatorService extends SessionHistoryCoordinatorService {
79 
80     implicit val ctx: ExecutionContext = global
81     private val proposalsPerPage: Int = makeSettings.maxHistoryProposalsPerPage
82     implicit val timeout: Timeout = TimeSettings.defaultTimeout
83 
84     override def getCurrentSessionId(sessionId: SessionId, newSessionId: SessionId): Future[SessionId] = {
85       (sessionHistoryCoordinator ?? (GetCurrentSession(sessionId, newSessionId, _))).map(_.value)
86     }
87 
88     override def logTransactionalHistory[T <: LoggableHistoryEvent[_]](command: T): Future[Unit] = {
89       def log(id: SessionId)(replyTo: Receiver[LogResult]): EventEnvelope[T] = EventEnvelope(id, command, replyTo)
90       askExpired(sessionHistoryCoordinator, log)(command.sessionId).flatMap(shapeResponse).void
91     }
92 
93     override def retrieveVoteAndQualifications(
94       sessionId: SessionId,
95       proposalIds: Seq[ProposalId]
96     ): Future[Map[ProposalId, VoteAndQualifications]] = {
97       def votesValues(id: SessionId)(replyTo: Receiver[Map[ProposalId, VoteAndQualifications]]) =
98         SessionVoteValuesCommand(id, proposalIds, replyTo)
99       askExpired(sessionHistoryCoordinator, votesValues)(sessionId).flatMap(shapeResponse)
100     }
101 
102     override def convertSession(sessionId: SessionId, userId: UserId, requestContext: RequestContext): Future[Unit] = {
103       def userConnected(id: SessionId)(replyTo: Receiver[LogResult]) =
104         UserConnected(id, userId, requestContext, replyTo)
105       askExpired(sessionHistoryCoordinator, userConnected)(sessionId).flatMap(shapeResponse).void
106     }
107 
108     private def retrieveVotedProposalsPage(
109       request: RequestSessionVotedProposals,
110       offset: Int
111     ): Future[Seq[ProposalId]] = {
112       def requestPaginate(proposalsIds: Option[Seq[ProposalId]]) =
113         RequestSessionVotedProposalsPaginate(
114           sessionId = request.sessionId,
115           proposalsIds = proposalsIds,
116           limit = Pagination.Limit(proposalsPerPage),
117           offset = Pagination.Offset(offset)
118         )
119       request.proposalsIds match {
120         case Some(proposalsIds) if proposalsIds.sizeIs > proposalsPerPage =>
121           Source(proposalsIds)
122             .sliding(proposalsPerPage, proposalsPerPage)
123             .mapAsync(5) { someProposalsIds =>
124               doRequestVotedProposalsPage(requestPaginate(Some(someProposalsIds)))
125             }
126             .mapConcat(identity)
127             .runWith(Sink.seq)
128         case _ =>
129           doRequestVotedProposalsPage(requestPaginate(request.proposalsIds))
130       }
131     }
132 
133     private def doRequestVotedProposalsPage(request: RequestSessionVotedProposalsPaginate): Future[Seq[ProposalId]] = {
134       def voted(id: SessionId)(replyTo: Receiver[Seq[ProposalId]]) =
135         SessionVotedProposalsPaginateCommand(id, request.proposalsIds, request.limit, request.offset, replyTo)
136       askExpired(sessionHistoryCoordinator, voted)(request.sessionId).flatMap(shapeResponse)
137     }
138 
139     override def retrieveVotedProposals(
140       sessionId: SessionId,
141       proposalsIds: Option[Seq[ProposalId]] = None
142     ): Future[Seq[ProposalId]] = {
143       StreamUtils
144         .asyncPageToPageSource(retrieveVotedProposalsPage(RequestSessionVotedProposals(sessionId, proposalsIds), _))
145         .mapConcat(identity)
146         .runWith(Sink.seq)
147     }
148 
149     override def lockSessionForVote(sessionId: SessionId, proposalId: ProposalId): Future[Unit] = {
150       def lock(id: SessionId)(replyTo: LockReceiver) = LockProposalForVote(id, proposalId, replyTo)
151       askExpired(sessionHistoryCoordinator, lock)(sessionId).flatMap(shapeResponse).void
152     }
153 
154     override def lockSessionForQualification(
155       sessionId: SessionId,
156       proposalId: ProposalId,
157       key: QualificationKey
158     ): Future[Unit] = {
159       def lock(id: SessionId)(replyTo: LockReceiver) = LockProposalForQualification(id, proposalId, key, replyTo)
160       askExpired(sessionHistoryCoordinator, lock)(sessionId).flatMap(shapeResponse).void
161     }
162 
163     override def unlockSessionForVote(sessionId: SessionId, proposalId: ProposalId): Future[Unit] = {
164       def release(id: SessionId)(replyTo: LockReceiver) = ReleaseProposalForVote(id, proposalId, replyTo)
165       askExpired(sessionHistoryCoordinator, release)(sessionId).flatMap(shapeResponse).void
166     }
167 
168     override def unlockSessionForQualification(
169       sessionId: SessionId,
170       proposalId: ProposalId,
171       key: QualificationKey
172     ): Future[Unit] = {
173       def release(id: SessionId)(replyTo: LockReceiver) = ReleaseProposalForQualification(id, proposalId, key, replyTo)
174       askExpired(sessionHistoryCoordinator, release)(sessionId).flatMap(shapeResponse).void
175     }
176 
177     private def shapeResponse[E, T](response: SessionHistoryResponse[E, T]): Future[T] = response match {
178       case SessionHistoryResponse.Envelope(value)                    => Future.successful(value)
179       case l: SessionHistoryResponse.LockResponse                    => Future.successful(l)
180       case SessionHistoryResponse.Error.LockAlreadyAcquired(message) => Future.failed(ConcurrentModification(message))
181       case error: SessionHistoryResponse.Error[_] =>
182         Future.failed(
183           new IllegalStateException(
184             s"Unknown response from session history actor: ${error.toString} of class ${error.getClass.getName}}"
185           )
186         )
187     }
188 
189     @SuppressWarnings(Array("org.wartremover.warts.Recursion"))
190     private def askExpired[Req, Res](ref: ActorRef[Req], replyTo: SessionId => ActorRef[Res] => Req)(
191       id: SessionId
192     ): Future[Res] = {
193       (ref ?? replyTo(id)).flatMap {
194         case ExpiredSession(newSessionId) => askExpired(ref, replyTo)(newSessionId)
195         case other                        => Future.successful(other)
196       }
197     }
198 
199   }
200 }
201 
202 final case class RequestSessionVotedProposals(sessionId: SessionId, proposalsIds: Option[Seq[ProposalId]] = None)
203 final case class RequestSessionVotedProposalsPaginate(
204   sessionId: SessionId,
205   proposalsIds: Option[Seq[ProposalId]] = None,
206   limit: Pagination.Limit,
207   offset: Pagination.Offset
208 )
Line Stmt Id Pos Tree Symbol Tests Code
81 17525 3677 - 3716 Select org.make.api.extensions.MakeSettings.maxHistoryProposalsPerPage org.make.api.sessionhistory.sessionhistorycoordinatortest DefaultSessionHistoryCoordinatorServiceComponent.this.makeSettings.maxHistoryProposalsPerPage
82 14146 3753 - 3780 Select org.make.api.technical.TimeSettings.defaultTimeout org.make.api.sessionhistory.sessionhistorycoordinatortest org.make.api.technical.TimeSettings.defaultTimeout
85 12261 3896 - 3921 Select org.make.api.sessionhistory.SessionHistoryCoordinatorComponent.sessionHistoryCoordinator DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator
85 11534 3977 - 3977 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
85 18092 3926 - 3971 Apply org.make.api.sessionhistory.GetCurrentSession.apply GetCurrentSession.apply(sessionId, newSessionId, x$1)
85 10968 3922 - 3922 Select org.make.api.technical.ActorSystemComponent.actorSystem DefaultSessionHistoryCoordinatorServiceComponent.this.actorSystem
85 14598 3922 - 3922 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
85 17122 3922 - 3922 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.timeout DefaultSessionHistoryCoordinatorService.this.timeout
85 17540 3896 - 3986 ApplyToImplicitArgs scala.concurrent.Future.map org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef[org.make.api.sessionhistory.SessionHistoryCommand](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator).??[org.make.api.sessionhistory.SessionHistoryResponse.Envelope[org.make.core.session.SessionId]](((x$1: akka.actor.typed.ActorRef[org.make.api.sessionhistory.SessionHistoryResponse.Envelope[org.make.core.session.SessionId]]) => GetCurrentSession.apply(sessionId, newSessionId, x$1)))(DefaultSessionHistoryCoordinatorService.this.ctx, DefaultSessionHistoryCoordinatorServiceComponent.this.actorSystem, DefaultSessionHistoryCoordinatorService.this.timeout).map[org.make.core.session.SessionId](((x$2: org.make.api.sessionhistory.SessionHistoryResponse.Envelope[org.make.core.session.SessionId]) => x$2.value))(DefaultSessionHistoryCoordinatorService.this.ctx)
85 15261 3978 - 3985 Select org.make.api.sessionhistory.SessionHistoryResponse.Envelope.value x$2.value
89 13743 4174 - 4209 Apply org.make.api.sessionhistory.EventEnvelope.apply org.make.api.sessionhistory.sessionhistorycoordinatortest EventEnvelope.apply[T](id, command, replyTo)
90 12276 4227 - 4252 Select org.make.api.sessionhistory.SessionHistoryCoordinatorComponent.sessionHistoryCoordinator org.make.api.sessionhistory.sessionhistorycoordinatortest DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator
90 14501 4259 - 4276 Select org.make.api.sessionhistory.SessionHistoryEvent.sessionId org.make.api.sessionhistory.sessionhistorycoordinatortest command.sessionId
90 13756 4216 - 4305 Select cats.Functor.Ops.void org.make.api.sessionhistory.sessionhistorycoordinatortest cats.implicits.toFunctorOps[scala.concurrent.Future, org.make.api.sessionhistory.LogResult](DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.EventEnvelope[T], org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.LogResult]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.Receiver[org.make.api.sessionhistory.LogResult]) => log(id)(replyTo))))(command.sessionId).flatMap[org.make.api.sessionhistory.LogResult](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.LogResult]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.LogResult](response)))(DefaultSessionHistoryCoordinatorService.this.ctx))(cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)).void
90 16713 4285 - 4285 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx org.make.api.sessionhistory.sessionhistorycoordinatortest DefaultSessionHistoryCoordinatorService.this.ctx
90 10749 4286 - 4299 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.shapeResponse DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.LogResult](response)
90 17430 4285 - 4285 ApplyToImplicitArgs cats.instances.FutureInstances.catsStdInstancesForFuture org.make.api.sessionhistory.sessionhistorycoordinatortest cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)
90 11547 4285 - 4285 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx org.make.api.sessionhistory.sessionhistorycoordinatortest DefaultSessionHistoryCoordinatorService.this.ctx
90 18108 4254 - 4257 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.log org.make.api.sessionhistory.sessionhistorycoordinatortest log(id)(replyTo)
90 15273 4216 - 4300 ApplyToImplicitArgs scala.concurrent.Future.flatMap org.make.api.sessionhistory.sessionhistorycoordinatortest DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.EventEnvelope[T], org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.LogResult]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.Receiver[org.make.api.sessionhistory.LogResult]) => log(id)(replyTo))))(command.sessionId).flatMap[org.make.api.sessionhistory.LogResult](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.LogResult]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.LogResult](response)))(DefaultSessionHistoryCoordinatorService.this.ctx)
98 10158 4588 - 4638 Apply org.make.api.sessionhistory.SessionVoteValuesCommand.apply org.make.api.sessionhistory.sessionhistorycoordinatortest SessionVoteValuesCommand.apply(id, proposalIds, replyTo)
99 14510 4683 - 4694 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.votesValues org.make.api.sessionhistory.sessionhistorycoordinatortest votesValues(id)(replyTo)
99 11261 4715 - 4728 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.shapeResponse DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]](response)
99 15352 4645 - 4729 ApplyToImplicitArgs scala.concurrent.Future.flatMap org.make.api.sessionhistory.sessionhistorycoordinatortest DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.SessionVoteValuesCommand, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.Receiver[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]) => votesValues(id)(replyTo))))(sessionId).flatMap[Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, Map[org.make.core.proposal.ProposalId,org.make.core.history.HistoryActions.VoteAndQualifications]](response)))(DefaultSessionHistoryCoordinatorService.this.ctx)
99 17984 4656 - 4681 Select org.make.api.sessionhistory.SessionHistoryCoordinatorComponent.sessionHistoryCoordinator org.make.api.sessionhistory.sessionhistorycoordinatortest DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator
99 16732 4714 - 4714 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx org.make.api.sessionhistory.sessionhistorycoordinatortest DefaultSessionHistoryCoordinatorService.this.ctx
104 11439 4936 - 4986 Apply org.make.api.sessionhistory.UserConnected.apply UserConnected.apply(id, userId, requestContext, replyTo)
105 14417 4993 - 5079 ApplyToImplicitArgs scala.concurrent.Future.flatMap DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.UserConnected, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.LogResult]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.Receiver[org.make.api.sessionhistory.LogResult]) => userConnected(id)(replyTo))))(sessionId).flatMap[org.make.api.sessionhistory.LogResult](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.LogResult]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.LogResult](response)))(DefaultSessionHistoryCoordinatorService.this.ctx)
105 17237 5004 - 5029 Select org.make.api.sessionhistory.SessionHistoryCoordinatorComponent.sessionHistoryCoordinator DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator
105 14258 5031 - 5044 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.userConnected userConnected(id)(replyTo)
105 10672 5064 - 5064 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
105 10175 5065 - 5078 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.shapeResponse DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.LogResult](response)
105 18306 5064 - 5064 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
105 15255 4993 - 5084 Select cats.Functor.Ops.void cats.implicits.toFunctorOps[scala.concurrent.Future, org.make.api.sessionhistory.LogResult](DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.UserConnected, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,org.make.api.sessionhistory.LogResult]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.Receiver[org.make.api.sessionhistory.LogResult]) => userConnected(id)(replyTo))))(sessionId).flatMap[org.make.api.sessionhistory.LogResult](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.LogResult]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.LogResult](response)))(DefaultSessionHistoryCoordinatorService.this.ctx))(cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)).void
105 17220 5064 - 5064 ApplyToImplicitArgs cats.instances.FutureInstances.catsStdInstancesForFuture cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)
113 18213 5309 - 5535 Apply org.make.api.sessionhistory.RequestSessionVotedProposalsPaginate.apply RequestSessionVotedProposalsPaginate.apply(request.sessionId, proposalsIds, org.make.core.technical.Pagination.Limit.apply(DefaultSessionHistoryCoordinatorService.this.proposalsPerPage), org.make.core.technical.Pagination.Offset.apply(offset))
114 11743 5369 - 5386 Select org.make.api.sessionhistory.RequestSessionVotedProposals.sessionId request.sessionId
116 13675 5445 - 5479 Apply org.make.core.technical.Pagination.Limit.apply org.make.core.technical.Pagination.Limit.apply(DefaultSessionHistoryCoordinatorService.this.proposalsPerPage)
116 17708 5462 - 5478 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.proposalsPerPage DefaultSessionHistoryCoordinatorService.this.proposalsPerPage
117 10557 5500 - 5525 Apply org.make.core.technical.Pagination.Offset.apply org.make.core.technical.Pagination.Offset.apply(offset)
119 14496 5542 - 5562 Select org.make.api.sessionhistory.RequestSessionVotedProposals.proposalsIds request.proposalsIds
120 16641 5606 - 5644 Apply scala.collection.IterableOps.SizeCompareOps.> proposalsIds.sizeIs.>(DefaultSessionHistoryCoordinatorService.this.proposalsPerPage)
120 11159 5628 - 5644 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.proposalsPerPage DefaultSessionHistoryCoordinatorService.this.proposalsPerPage
122 13541 5700 - 5716 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.proposalsPerPage DefaultSessionHistoryCoordinatorService.this.proposalsPerPage
122 11646 5718 - 5734 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.proposalsPerPage DefaultSessionHistoryCoordinatorService.this.proposalsPerPage
123 17425 5758 - 5759 Literal <nosymbol> 5
124 13690 5841 - 5863 Apply scala.Some.apply scala.Some.apply[Seq[org.make.core.proposal.ProposalId]](someProposalsIds)
124 18226 5797 - 5865 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.doRequestVotedProposalsPage DefaultSessionHistoryCoordinatorService.this.doRequestVotedProposalsPage(requestPaginate(scala.Some.apply[Seq[org.make.core.proposal.ProposalId]](someProposalsIds)))
124 10458 5825 - 5864 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.requestPaginate requestPaginate(scala.Some.apply[Seq[org.make.core.proposal.ProposalId]](someProposalsIds))
126 14393 5903 - 5911 Apply scala.Predef.identity scala.Predef.identity[Seq[org.make.core.proposal.ProposalId]](x)
127 10861 5934 - 5942 TypeApply akka.stream.scaladsl.Sink.seq akka.stream.scaladsl.Sink.seq[org.make.core.proposal.ProposalId]
127 11429 5658 - 5943 ApplyToImplicitArgs akka.stream.scaladsl.Source.runWith akka.stream.scaladsl.Source.apply[org.make.core.proposal.ProposalId](proposalsIds).sliding(DefaultSessionHistoryCoordinatorService.this.proposalsPerPage, DefaultSessionHistoryCoordinatorService.this.proposalsPerPage).mapAsync[Seq[org.make.core.proposal.ProposalId]](5)(((someProposalsIds: Seq[org.make.core.proposal.ProposalId]) => DefaultSessionHistoryCoordinatorService.this.doRequestVotedProposalsPage(requestPaginate(scala.Some.apply[Seq[org.make.core.proposal.ProposalId]](someProposalsIds))))).mapConcat[org.make.core.proposal.ProposalId](((x: Seq[org.make.core.proposal.ProposalId]) => scala.Predef.identity[Seq[org.make.core.proposal.ProposalId]](x))).runWith[scala.concurrent.Future[Seq[org.make.core.proposal.ProposalId]]](akka.stream.scaladsl.Sink.seq[org.make.core.proposal.ProposalId])(stream.this.Materializer.matFromSystem(DefaultSessionHistoryCoordinatorServiceComponent.this.actorSystem))
127 17027 5933 - 5933 Select org.make.api.technical.ActorSystemComponent.actorSystem DefaultSessionHistoryCoordinatorServiceComponent.this.actorSystem
127 13441 5933 - 5933 ApplyToImplicitArgs akka.stream.Materializer.matFromSystem stream.this.Materializer.matFromSystem(DefaultSessionHistoryCoordinatorServiceComponent.this.actorSystem)
129 10474 5972 - 6038 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.doRequestVotedProposalsPage DefaultSessionHistoryCoordinatorService.this.doRequestVotedProposalsPage(requestPaginate(request.proposalsIds))
129 17340 6016 - 6036 Select org.make.api.sessionhistory.RequestSessionVotedProposals.proposalsIds request.proposalsIds
129 13879 6000 - 6037 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.requestPaginate requestPaginate(request.proposalsIds)
135 17213 6251 - 6353 Apply org.make.api.sessionhistory.SessionVotedProposalsPaginateCommand.apply SessionVotedProposalsPaginateCommand.apply(id, request.proposalsIds, request.limit, request.offset, replyTo)
135 10878 6329 - 6343 Select org.make.api.sessionhistory.RequestSessionVotedProposalsPaginate.offset request.offset
135 14407 6314 - 6327 Select org.make.api.sessionhistory.RequestSessionVotedProposalsPaginate.limit request.limit
135 18127 6292 - 6312 Select org.make.api.sessionhistory.RequestSessionVotedProposalsPaginate.proposalsIds request.proposalsIds
136 10655 6431 - 6431 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
136 17357 6405 - 6422 Select org.make.api.sessionhistory.RequestSessionVotedProposalsPaginate.sessionId request.sessionId
136 13669 6432 - 6445 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.shapeResponse DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, Seq[org.make.core.proposal.ProposalId]](response)
136 13462 6371 - 6396 Select org.make.api.sessionhistory.SessionHistoryCoordinatorComponent.sessionHistoryCoordinator DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator
136 11302 6398 - 6403 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.voted voted(id)(replyTo)
136 16410 6360 - 6446 ApplyToImplicitArgs scala.concurrent.Future.flatMap DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.SessionVotedProposalsPaginateCommand, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.Expired,Seq[org.make.core.proposal.ProposalId]]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.Receiver[Seq[org.make.core.proposal.ProposalId]]) => voted(id)(replyTo))))(request.sessionId).flatMap[Seq[org.make.core.proposal.ProposalId]](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,Seq[org.make.core.proposal.ProposalId]]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, Seq[org.make.core.proposal.ProposalId]](response)))(DefaultSessionHistoryCoordinatorService.this.ctx)
144 14300 6685 - 6738 Apply org.make.api.sessionhistory.RequestSessionVotedProposals.apply RequestSessionVotedProposals.apply(sessionId, proposalsIds)
144 16633 6657 - 6657 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx org.make.api.sessionhistory.sessionhistorycoordinatortest DefaultSessionHistoryCoordinatorService.this.ctx
144 10784 6658 - 6742 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.retrieveVotedProposalsPage DefaultSessionHistoryCoordinatorService.this.retrieveVotedProposalsPage(RequestSessionVotedProposals.apply(sessionId, proposalsIds), x$3)
145 13656 6763 - 6771 Apply scala.Predef.identity scala.Predef.identity[Seq[org.make.core.proposal.ProposalId]](x)
146 10070 6615 - 6799 ApplyToImplicitArgs akka.stream.scaladsl.Source.runWith org.make.api.sessionhistory.sessionhistorycoordinatortest org.make.api.technical.StreamUtils.asyncPageToPageSource[org.make.core.proposal.ProposalId](((x$3: Int) => DefaultSessionHistoryCoordinatorService.this.retrieveVotedProposalsPage(RequestSessionVotedProposals.apply(sessionId, proposalsIds), x$3)))(DefaultSessionHistoryCoordinatorService.this.ctx).mapConcat[org.make.core.proposal.ProposalId](((x: Seq[org.make.core.proposal.ProposalId]) => scala.Predef.identity[Seq[org.make.core.proposal.ProposalId]](x))).runWith[scala.concurrent.Future[Seq[org.make.core.proposal.ProposalId]]](akka.stream.scaladsl.Sink.seq[org.make.core.proposal.ProposalId])(stream.this.Materializer.matFromSystem(DefaultSessionHistoryCoordinatorServiceComponent.this.actorSystem))
146 17367 6789 - 6789 Select org.make.api.technical.ActorSystemComponent.actorSystem org.make.api.sessionhistory.sessionhistorycoordinatortest DefaultSessionHistoryCoordinatorServiceComponent.this.actorSystem
146 11320 6790 - 6798 TypeApply akka.stream.scaladsl.Sink.seq org.make.api.sessionhistory.sessionhistorycoordinatortest akka.stream.scaladsl.Sink.seq[org.make.core.proposal.ProposalId]
146 14166 6789 - 6789 ApplyToImplicitArgs akka.stream.Materializer.matFromSystem org.make.api.sessionhistory.sessionhistorycoordinatortest stream.this.Materializer.matFromSystem(DefaultSessionHistoryCoordinatorServiceComponent.this.actorSystem)
150 16369 6962 - 7006 Apply org.make.api.sessionhistory.LockProposalForVote.apply LockProposalForVote.apply(id, proposalId, replyTo)
151 10574 7013 - 7095 Select cats.Functor.Ops.void cats.implicits.toFunctorOps[scala.concurrent.Future, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.LockProposalForVote, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.LockReceiver) => lock(id)(replyTo))))(sessionId).flatMap[org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)))(DefaultSessionHistoryCoordinatorService.this.ctx))(cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)).void
151 14180 7075 - 7075 ApplyToImplicitArgs cats.instances.FutureInstances.catsStdInstancesForFuture cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)
151 17135 7076 - 7089 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.shapeResponse DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)
151 17272 7075 - 7075 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
151 14317 7024 - 7049 Select org.make.api.sessionhistory.SessionHistoryCoordinatorComponent.sessionHistoryCoordinator DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator
151 9921 7013 - 7090 ApplyToImplicitArgs scala.concurrent.Future.flatMap DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.LockProposalForVote, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.LockReceiver) => lock(id)(replyTo))))(sessionId).flatMap[org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)))(DefaultSessionHistoryCoordinatorService.this.ctx)
151 11171 7051 - 7055 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.lock lock(id)(replyTo)
151 13075 7075 - 7075 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
159 16387 7314 - 7372 Apply org.make.api.sessionhistory.LockProposalForQualification.apply LockProposalForQualification.apply(id, proposalId, key, replyTo)
160 14632 7390 - 7415 Select org.make.api.sessionhistory.SessionHistoryCoordinatorComponent.sessionHistoryCoordinator DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator
160 10586 7379 - 7461 Select cats.Functor.Ops.void cats.implicits.toFunctorOps[scala.concurrent.Future, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.LockProposalForQualification, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.LockReceiver) => lock(id)(replyTo))))(sessionId).flatMap[org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)))(DefaultSessionHistoryCoordinatorService.this.ctx))(cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)).void
160 17350 7441 - 7441 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
160 9807 7379 - 7456 ApplyToImplicitArgs scala.concurrent.Future.flatMap DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.LockProposalForQualification, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.LockReceiver) => lock(id)(replyTo))))(sessionId).flatMap[org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)))(DefaultSessionHistoryCoordinatorService.this.ctx)
160 13336 7441 - 7441 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
160 17149 7442 - 7455 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.shapeResponse DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)
160 11042 7417 - 7421 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.lock lock(id)(replyTo)
160 14065 7441 - 7441 ApplyToImplicitArgs cats.instances.FutureInstances.catsStdInstancesForFuture cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)
164 16404 7629 - 7676 Apply org.make.api.sessionhistory.ReleaseProposalForVote.apply ReleaseProposalForVote.apply(id, proposalId, replyTo)
165 17052 7749 - 7762 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.shapeResponse DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)
165 13352 7748 - 7748 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
165 10376 7683 - 7768 Select cats.Functor.Ops.void cats.implicits.toFunctorOps[scala.concurrent.Future, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.ReleaseProposalForVote, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.LockReceiver) => release(id)(replyTo))))(sessionId).flatMap[org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)))(DefaultSessionHistoryCoordinatorService.this.ctx))(cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)).void
165 13782 7748 - 7748 ApplyToImplicitArgs cats.instances.FutureInstances.catsStdInstancesForFuture cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)
165 9822 7683 - 7763 ApplyToImplicitArgs scala.concurrent.Future.flatMap DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.ReleaseProposalForVote, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.LockReceiver) => release(id)(replyTo))))(sessionId).flatMap[org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)))(DefaultSessionHistoryCoordinatorService.this.ctx)
165 17251 7748 - 7748 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
165 14526 7694 - 7719 Select org.make.api.sessionhistory.SessionHistoryCoordinatorComponent.sessionHistoryCoordinator DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator
165 10778 7721 - 7728 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.release release(id)(replyTo)
173 16308 7992 - 8053 Apply org.make.api.sessionhistory.ReleaseProposalForQualification.apply ReleaseProposalForQualification.apply(id, proposalId, key, replyTo)
174 10688 8098 - 8105 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.release release(id)(replyTo)
174 9722 8060 - 8140 ApplyToImplicitArgs scala.concurrent.Future.flatMap DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.ReleaseProposalForQualification, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.LockReceiver) => release(id)(replyTo))))(sessionId).flatMap[org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)))(DefaultSessionHistoryCoordinatorService.this.ctx)
174 13367 8125 - 8125 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
174 10567 8060 - 8145 Select cats.Functor.Ops.void cats.implicits.toFunctorOps[scala.concurrent.Future, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](DefaultSessionHistoryCoordinatorService.this.askExpired[org.make.api.sessionhistory.ReleaseProposalForQualification, org.make.api.sessionhistory.SessionHistoryResponse[org.make.api.sessionhistory.SessionHistoryResponse.Error.LockError,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]](DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator, ((id: org.make.core.session.SessionId) => ((replyTo: DefaultSessionHistoryCoordinatorServiceComponent.this.LockReceiver) => release(id)(replyTo))))(sessionId).flatMap[org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](((response: org.make.api.sessionhistory.SessionHistoryResponse[Any,org.make.api.sessionhistory.SessionHistoryResponse.LockResponse]) => DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)))(DefaultSessionHistoryCoordinatorService.this.ctx))(cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)).void
174 16760 8126 - 8139 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.shapeResponse DefaultSessionHistoryCoordinatorService.this.shapeResponse[Any, org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](response)
174 12594 8071 - 8096 Select org.make.api.sessionhistory.SessionHistoryCoordinatorComponent.sessionHistoryCoordinator DefaultSessionHistoryCoordinatorServiceComponent.this.sessionHistoryCoordinator
174 17265 8125 - 8125 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
174 13691 8125 - 8125 ApplyToImplicitArgs cats.instances.FutureInstances.catsStdInstancesForFuture cats.implicits.catsStdInstancesForFuture(DefaultSessionHistoryCoordinatorService.this.ctx)
178 16324 8331 - 8355 Apply scala.concurrent.Future.successful scala.concurrent.Future.successful[T](value)
179 12487 8428 - 8448 TypeApply scala.Any.asInstanceOf scala.concurrent.Future.successful[org.make.api.sessionhistory.SessionHistoryResponse.LockResponse](l).asInstanceOf[scala.concurrent.Future[T]]
180 10699 8535 - 8566 Apply org.make.api.sessionhistory.ConcurrentModification.apply ConcurrentModification.apply(message)
180 17144 8521 - 8567 Apply scala.concurrent.Future.failed scala.concurrent.Future.failed[Nothing](ConcurrentModification.apply(message))
182 9742 8629 - 8816 Apply scala.concurrent.Future.failed scala.concurrent.Future.failed[Nothing](new java.lang.IllegalStateException(("Unknown response from session history actor: ".+(error.toString()).+(" of class ").+(error.getClass().getName()).+("}"): String)))
183 13553 8654 - 8806 Apply java.lang.IllegalStateException.<init> new java.lang.IllegalStateException(("Unknown response from session history actor: ".+(error.toString()).+(" of class ").+(error.getClass().getName()).+("}"): String))
193 17749 9047 - 9058 Apply scala.Function1.apply replyTo.apply(id)
193 10580 9044 - 9044 Select org.make.api.technical.ActorSystemComponent.actorSystem DefaultSessionHistoryCoordinatorServiceComponent.this.actorSystem
193 13570 9040 - 9231 ApplyToImplicitArgs scala.concurrent.Future.flatMap org.make.api.technical.BetterLoggingActors.BetterLoggingTypedActorRef[Req](ref).??[Res](replyTo.apply(id))(DefaultSessionHistoryCoordinatorService.this.ctx, DefaultSessionHistoryCoordinatorServiceComponent.this.actorSystem, DefaultSessionHistoryCoordinatorService.this.timeout).flatMap[Res](((x0$1: Res) => x0$1 match { case (newSessionId: org.make.core.session.SessionId): org.make.api.sessionhistory.SessionHistoryResponse.Error.ExpiredSession((newSessionId @ _)) => DefaultSessionHistoryCoordinatorService.this.askExpired[Req, Res](ref, replyTo)(newSessionId) case (other @ _) => scala.concurrent.Future.successful[Res](other) }))(DefaultSessionHistoryCoordinatorService.this.ctx)
193 17044 9068 - 9068 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
193 13706 9044 - 9044 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.ctx DefaultSessionHistoryCoordinatorService.this.ctx
193 16508 9044 - 9044 Select org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.timeout DefaultSessionHistoryCoordinatorService.this.timeout
194 12505 9115 - 9153 Apply org.make.api.sessionhistory.DefaultSessionHistoryCoordinatorServiceComponent.DefaultSessionHistoryCoordinatorService.askExpired DefaultSessionHistoryCoordinatorService.this.askExpired[Req, Res](ref, replyTo)(newSessionId)
195 11194 9199 - 9223 Apply scala.concurrent.Future.successful scala.concurrent.Future.successful[Res](other)