Skip to content

Commit

Permalink
Rerun leader election for every new member
Browse files Browse the repository at this point in the history
  • Loading branch information
r0qs committed Apr 16, 2016
1 parent 3d1e0a6 commit 3dabc6a
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/main/scala/cfabcast/MembershipManager.scala
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 24,7 @@ class MembershipManager extends Actor with ActorLogging {

val cluster = Cluster(context.system)
val settings = Settings(context.system)
val waitFor = settings.MinNrOfNodes
val minNrOfNodes = settings.MinNrOfNodes
val quorumSize = settings.QuorumSize

// A Set of nodes(members) in the cluster that this node knows about
Expand Down Expand Up @@ -88,13 88,13 @@ class MembershipManager extends Actor with ActorLogging {
context watch ref
context.become(registering(actualConfig))
val refs = members.keySet
if (refs.size == waitFor) {
if (refs.size >= minNrOfNodes) {
//TODO: Remove this from here
implicit val timeout = Timeout(3 seconds)
val futOfDones = refs.map(r => r ? UpdateConfig(actualConfig))
val allDone = Future.sequence(futOfDones).onComplete {
// TODO: explicitly send to leaders ref
case Success(s) => leaderOracle ! MemberChange(actualConfig, actualConfig.proposers.values.toSet, waitFor)
case Success(s) => leaderOracle ! MemberChange(actualConfig, actualConfig.proposers.values.toSet, minNrOfNodes)
case Failure(f) => log.error("Something goes wrong: {} ", f)
}
}
Expand Down

0 comments on commit 3dabc6a

Please sign in to comment.