=clu #3676 Cache the last system name and protocol during deserialization.
This commit is contained in:
parent
ff83edea0b
commit
0fa190f0ed
1 changed files with 27 additions and 1 deletions
|
|
@ -127,8 +127,34 @@ class ClusterMessageSerializer(val system: ExtendedActorSystem) extends Serializ
|
|||
private def uniqueAddressToProto(uniqueAddress: UniqueAddress): cm.UniqueAddress.Builder =
|
||||
cm.UniqueAddress.newBuilder().setAddress(addressToProto(uniqueAddress.address)).setUid(uniqueAddress.uid)
|
||||
|
||||
// we don't care about races here since it's just a cache
|
||||
@volatile
|
||||
private var protocolCache: String = null
|
||||
@volatile
|
||||
private var systemCache: String = null
|
||||
|
||||
private def getProtocol(address: cm.Address): String = {
|
||||
val p = address.getProtocol
|
||||
val pc = protocolCache
|
||||
if (pc == p) pc
|
||||
else {
|
||||
protocolCache = p
|
||||
p
|
||||
}
|
||||
}
|
||||
|
||||
private def getSystem(address: cm.Address): String = {
|
||||
val s = address.getSystem
|
||||
val sc = systemCache
|
||||
if (sc == s) sc
|
||||
else {
|
||||
systemCache = s
|
||||
s
|
||||
}
|
||||
}
|
||||
|
||||
private def addressFromProto(address: cm.Address): Address =
|
||||
Address(address.getProtocol, address.getSystem, address.getHostname, address.getPort)
|
||||
Address(getProtocol(address), getSystem(address), address.getHostname, address.getPort)
|
||||
|
||||
private def uniqueAddressFromProto(uniqueAddress: cm.UniqueAddress): UniqueAddress =
|
||||
UniqueAddress(addressFromProto(uniqueAddress.getAddress), uniqueAddress.getUid)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue