Incorparate feedback from review, see #2311

This commit is contained in:
Patrik Nordwall 2012-07-05 12:23:15 +02:00
parent 17f0ce9f89
commit 20a1e67575

View file

@ -415,9 +415,17 @@ case class Gossip(
// When that is done we check that all the entries in the 'seen' table have the same vector clock version // When that is done we check that all the entries in the 'seen' table have the same vector clock version
// and that all members exists in seen table // and that all members exists in seen table
val hasUnreachable = unreachable.nonEmpty && unreachable.exists { _.status != Down } val hasUnreachable = unreachable.nonEmpty && unreachable.exists { _.status != Down }
val allMembersInSeen = members.forall(m seen.contains(m.address)) def allMembersInSeen = members.forall(m seen.contains(m.address))
!hasUnreachable && allMembersInSeen && (seen.values.toSet.size == 1) def seenSame: Boolean =
if (seen.isEmpty) false
else {
val values = seen.values
val seenHead = values.head
values.forall(_ == seenHead)
}
!hasUnreachable && allMembersInSeen && seenSame
} }
def isLeader(address: Address): Boolean = def isLeader(address: Address): Boolean =
@ -434,17 +442,13 @@ case class Gossip(
def isUnavailable(address: Address): Boolean = { def isUnavailable(address: Address): Boolean = {
val isUnreachable = overview.unreachable exists { _.address == address } val isUnreachable = overview.unreachable exists { _.address == address }
val hasUnavailableMemberStatus = members exists { m (m.address == address) && m.status.isUnavailable } val hasUnavailableMemberStatus = members exists { m m.status.isUnavailable && m.address == address }
isUnreachable || hasUnavailableMemberStatus isUnreachable || hasUnavailableMemberStatus
} }
def member(address: Address): Member = { def member(address: Address): Member = {
members.find(_.address == address) members.find(_.address == address).orElse(overview.unreachable.find(_.address == address)).
.getOrElse { getOrElse(Member(address, Removed))
overview.unreachable
.find(_.address == address)
.getOrElse(Member(address, Removed))
}
} }
override def toString = override def toString =