Merge pull request #16595 from Arneball/master-arneball-patch
Rebased 16537 - Constant moved to val, will removed unneccesary allocation
This commit is contained in:
commit
e110cd1213
3 changed files with 8 additions and 6 deletions
|
|
@ -138,7 +138,7 @@ final class AskableActorRef(val actorRef: ActorRef) extends AnyVal {
|
|||
if (timeout.duration.length <= 0)
|
||||
Future.failed[Any](new IllegalArgumentException(s"""Timeout length must not be negative, question not sent to [$actorRef]. Sender[$sender] sent the message of type "${message.getClass.getName}"."""))
|
||||
else {
|
||||
val a = PromiseActorRef(ref.provider, timeout, targetName = actorRef.toString, message, sender)
|
||||
val a = PromiseActorRef(ref.provider, timeout, targetName = actorRef, message, sender)
|
||||
actorRef.tell(message, a)
|
||||
a.result.future
|
||||
}
|
||||
|
|
@ -159,7 +159,7 @@ final class AskableActorSelection(val actorSel: ActorSelection) extends AnyVal {
|
|||
Future.failed[Any](
|
||||
new IllegalArgumentException(s"""Timeout length must not be negative, question not sent to [$actorSel]. Sender[$sender] sent the message of type "${message.getClass.getName}"."""))
|
||||
else {
|
||||
val a = PromiseActorRef(ref.provider, timeout, targetName = actorSel.toString, message, sender)
|
||||
val a = PromiseActorRef(ref.provider, timeout, targetName = actorSel, message, sender)
|
||||
actorSel.tell(message, a)
|
||||
a.result.future
|
||||
}
|
||||
|
|
@ -299,7 +299,7 @@ private[akka] final class PromiseActorRef private (val provider: ActorRefProvide
|
|||
@tailrec
|
||||
override def stop(): Unit = {
|
||||
def ensureCompleted(): Unit = {
|
||||
result tryComplete Failure(new ActorKilledException("Stopped"))
|
||||
result tryComplete ActorStopResult
|
||||
val watchers = clearWatchers()
|
||||
if (!watchers.isEmpty) {
|
||||
watchers foreach { watcher ⇒
|
||||
|
|
@ -328,7 +328,9 @@ private[akka] object PromiseActorRef {
|
|||
private case object Stopped
|
||||
private final case class StoppedWithPath(path: ActorPath)
|
||||
|
||||
def apply(provider: ActorRefProvider, timeout: Timeout, targetName: String, message: Any, sender: ActorRef = Actor.noSender): PromiseActorRef = {
|
||||
private val ActorStopResult = Failure(new ActorKilledException("Stopped"))
|
||||
|
||||
def apply(provider: ActorRefProvider, timeout: Timeout, targetName: Any, message: Any, sender: ActorRef = Actor.noSender): PromiseActorRef = {
|
||||
val result = Promise[Any]()
|
||||
val scheduler = provider.guardian.underlying.system.scheduler
|
||||
val a = new PromiseActorRef(provider, result)
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ trait GracefulStopSupport {
|
|||
if (target.isTerminated) Future successful true
|
||||
else {
|
||||
val internalTarget = target.asInstanceOf[InternalActorRef]
|
||||
val ref = PromiseActorRef(internalTarget.provider, Timeout(timeout), targetName = target.toString, message = stopMessage)
|
||||
val ref = PromiseActorRef(internalTarget.provider, Timeout(timeout), targetName = target, message = stopMessage)
|
||||
internalTarget.sendSystemMessage(Watch(internalTarget, ref))
|
||||
target.tell(stopMessage, Actor.noSender)
|
||||
ref.result.future.transform(
|
||||
|
|
|
|||
|
|
@ -298,7 +298,7 @@ private[transport] class ThrottlerManager(wrappedTransport: Transport) extends A
|
|||
if (target.isTerminated) Future successful SetThrottleAck
|
||||
else {
|
||||
val internalTarget = target.asInstanceOf[InternalActorRef]
|
||||
val ref = PromiseActorRef(internalTarget.provider, timeout, target.toString, mode)
|
||||
val ref = PromiseActorRef(internalTarget.provider, timeout, target, mode)
|
||||
internalTarget.sendSystemMessage(Watch(internalTarget, ref))
|
||||
target.tell(mode, ref)
|
||||
ref.result.future.transform({
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue