Remove the default reschedule=true arg to internal checkReceiveTimeout (#28399)
This commit is contained in:
parent
2c15c8d753
commit
7f733b4504
4 changed files with 9 additions and 4 deletions
|
|
@ -0,0 +1,5 @@
|
|||
# Remove the default reschedule=true arg to internal checkReceiveTimeout #28399
|
||||
# class akka.actor.ActorCell does not have a correspondent in current version
|
||||
ProblemFilters.exclude[DirectMissingMethodProblem]("akka.actor.ActorCell.checkReceiveTimeout$default$1")
|
||||
# interface akka.actor.dungeon.ReceiveTimeout does not have a correspondent in current version
|
||||
ProblemFilters.exclude[DirectMissingMethodProblem]("akka.actor.dungeon.ReceiveTimeout.checkReceiveTimeout$default$1")
|
||||
|
|
@ -635,7 +635,7 @@ private[akka] class ActorCell(
|
|||
val created = newActor()
|
||||
actor = created
|
||||
created.aroundPreStart()
|
||||
checkReceiveTimeout()
|
||||
checkReceiveTimeout(reschedule = true)
|
||||
if (system.settings.DebugLifecycle)
|
||||
publish(Debug(self.path.toString, clazz(created), "started (" + created + ")"))
|
||||
} catch {
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ private[akka] trait FaultHandling { this: ActorCell =>
|
|||
if (freshActor eq failedActor) setActorFields(freshActor, this, self) // If the creator returns the same instance, we need to restore our nulled out fields.
|
||||
|
||||
freshActor.aroundPostRestart(cause)
|
||||
checkReceiveTimeout() // user may have set a receive timeout in preStart which is called from postRestart
|
||||
checkReceiveTimeout(reschedule = true) // user may have set a receive timeout in preStart which is called from postRestart
|
||||
if (system.settings.DebugLifecycle) publish(Debug(self.path.toString, clazz(freshActor), "restarted"))
|
||||
|
||||
// only after parent is up and running again do restart the children which were not stopped
|
||||
|
|
|
|||
|
|
@ -31,11 +31,11 @@ private[akka] trait ReceiveTimeout { this: ActorCell =>
|
|||
if (hasTimeoutData || receiveTimeoutChanged(beforeReceive))
|
||||
checkReceiveTimeout(!message.isInstanceOf[NotInfluenceReceiveTimeout] || receiveTimeoutChanged(beforeReceive))
|
||||
|
||||
final def checkReceiveTimeout(reschedule: Boolean = true): Unit = {
|
||||
final def checkReceiveTimeout(reschedule: Boolean): Unit = {
|
||||
val (recvTimeout, task) = receiveTimeoutData
|
||||
recvTimeout match {
|
||||
case f: FiniteDuration =>
|
||||
// The fact that timeout is FiniteDuration and task is emptyCancellable
|
||||
// The fact that recvTimeout is FiniteDuration and task is emptyCancellable
|
||||
// means that a user called `context.setReceiveTimeout(...)`
|
||||
// while sending the ReceiveTimeout message is not scheduled yet.
|
||||
// We have to handle the case and schedule sending the ReceiveTimeout message
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue