add ActorRefProvider.getDefaultAddress, see #2732
- use it in ConsistentHashingRouter instead of relying on provider.rootPath.address - remove transport.address from RemoteActorRefProvider.rootPath
This commit is contained in:
parent
6a348e3c76
commit
fbd96162a0
3 changed files with 13 additions and 8 deletions
|
|
@ -146,6 +146,11 @@ trait ActorRefProvider {
|
||||||
* attempt is made to verify actual reachability).
|
* attempt is made to verify actual reachability).
|
||||||
*/
|
*/
|
||||||
def getExternalAddressFor(addr: Address): Option[Address]
|
def getExternalAddressFor(addr: Address): Option[Address]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obtain the external address of the default transport.
|
||||||
|
*/
|
||||||
|
def getDefaultAddress: Address
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -597,4 +602,6 @@ class LocalActorRefProvider(
|
||||||
}
|
}
|
||||||
|
|
||||||
def getExternalAddressFor(addr: Address): Option[Address] = if (addr == rootPath.address) Some(addr) else None
|
def getExternalAddressFor(addr: Address): Option[Address] = if (addr == rootPath.address) Some(addr) else None
|
||||||
|
|
||||||
|
def getDefaultAddress: Address = rootPath.address
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -237,7 +237,7 @@ trait ConsistentHashingLike { this: RouterConfig ⇒
|
||||||
}
|
}
|
||||||
|
|
||||||
val log = Logging(routeeProvider.context.system, routeeProvider.context.self)
|
val log = Logging(routeeProvider.context.system, routeeProvider.context.self)
|
||||||
val selfAddress = routeeProvider.context.system.asInstanceOf[ExtendedActorSystem].provider.rootPath.address
|
val selfAddress = routeeProvider.context.system.asInstanceOf[ExtendedActorSystem].provider.getDefaultAddress
|
||||||
val vnodes =
|
val vnodes =
|
||||||
if (virtualNodesFactor == 0) routeeProvider.context.system.settings.DefaultVirtualNodesFactor
|
if (virtualNodesFactor == 0) routeeProvider.context.system.settings.DefaultVirtualNodesFactor
|
||||||
else virtualNodesFactor
|
else virtualNodesFactor
|
||||||
|
|
|
||||||
|
|
@ -32,9 +32,7 @@ class RemoteActorRefProvider(
|
||||||
private var _log = local.log
|
private var _log = local.log
|
||||||
def log: LoggingAdapter = _log
|
def log: LoggingAdapter = _log
|
||||||
|
|
||||||
@volatile
|
override def rootPath: ActorPath = local.rootPath
|
||||||
private var _rootPath = local.rootPath
|
|
||||||
override def rootPath: ActorPath = _rootPath
|
|
||||||
override def deadLetters: InternalActorRef = local.deadLetters
|
override def deadLetters: InternalActorRef = local.deadLetters
|
||||||
|
|
||||||
// these are only available after init()
|
// these are only available after init()
|
||||||
|
|
@ -63,7 +61,7 @@ class RemoteActorRefProvider(
|
||||||
def init(system: ActorSystemImpl): Unit = {
|
def init(system: ActorSystemImpl): Unit = {
|
||||||
local.init(system)
|
local.init(system)
|
||||||
|
|
||||||
_remoteDaemon = new RemoteSystemDaemon(system, local.rootPath / "remote", rootGuardian, log, untrustedMode = remoteSettings.UntrustedMode)
|
_remoteDaemon = new RemoteSystemDaemon(system, rootPath / "remote", rootGuardian, log, untrustedMode = remoteSettings.UntrustedMode)
|
||||||
local.registerExtraNames(Map(("remote", remoteDaemon)))
|
local.registerExtraNames(Map(("remote", remoteDaemon)))
|
||||||
|
|
||||||
_serialization = SerializationExtension(system)
|
_serialization = SerializationExtension(system)
|
||||||
|
|
@ -84,8 +82,6 @@ class RemoteActorRefProvider(
|
||||||
// this enables reception of remote requests
|
// this enables reception of remote requests
|
||||||
_transport.start()
|
_transport.start()
|
||||||
|
|
||||||
_rootPath = RootActorPath(local.rootPath.address.copy(host = transport.address.host, port = transport.address.port))
|
|
||||||
|
|
||||||
val remoteClientLifeCycleHandler = system.systemActorOf(Props(new Actor {
|
val remoteClientLifeCycleHandler = system.systemActorOf(Props(new Actor {
|
||||||
def receive = {
|
def receive = {
|
||||||
case RemoteClientError(cause, remote, address) ⇒ remote.shutdownClientConnection(address)
|
case RemoteClientError(cause, remote, address) ⇒ remote.shutdownClientConnection(address)
|
||||||
|
|
@ -201,8 +197,10 @@ class RemoteActorRefProvider(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def getDefaultAddress: Address = transport.address
|
||||||
|
|
||||||
private def isSelfAddress(address: Address): Boolean =
|
private def isSelfAddress(address: Address): Boolean =
|
||||||
address == local.rootPath.address || address == rootPath.address || address == transport.address
|
address == rootPath.address || address == transport.address
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue