diff options
Diffstat (limited to 'same/src/main/java/com')
-rw-r--r-- | same/src/main/java/com/orbekk/paxos/MasterProposer.java | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/same/src/main/java/com/orbekk/paxos/MasterProposer.java b/same/src/main/java/com/orbekk/paxos/MasterProposer.java index 7bc4350..f216ff5 100644 --- a/same/src/main/java/com/orbekk/paxos/MasterProposer.java +++ b/same/src/main/java/com/orbekk/paxos/MasterProposer.java @@ -1,11 +1,13 @@ package com.orbekk.paxos; +import com.orbekk.same.ConnectionManager; import java.util.ArrayList; import java.util.List; - -import com.orbekk.same.ConnectionManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class MasterProposer { + private Logger logger = LoggerFactory.getLogger(getClass()); private String myUrl; private List<String> paxosUrls = new ArrayList<String>(); private ConnectionManager connections; @@ -64,4 +66,22 @@ public class MasterProposer { return false; } } + + public boolean proposeRetry(int proposalNumber) { + int nextProposal = proposalNumber; + int result = 0; + + while (result != nextProposal) { + result = internalPropose(nextProposal); + if (result == nextProposal) { + result = internalAcceptRequest(nextProposal); + } + logger.info("Proposed value {}, result {}", nextProposal, result); + if (result < 0) { + nextProposal = -result + 1; + } + } + + return true; + } } |