summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-04-30 15:58:01 +0200
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-04-30 15:58:01 +0200
commitfa96cffcbc0f9a1ace736ab72dc8b12cfcf52171 (patch)
tree9645761269421c512cc75290294576f8f8681603
parent058f9ba7650927d755cf408027dd19f78c92b7c2 (diff)
Make fields final in ResponseHandler.
-rw-r--r--same/src/main/java/com/orbekk/paxos/MasterProposer.java19
1 files changed, 9 insertions, 10 deletions
diff --git a/same/src/main/java/com/orbekk/paxos/MasterProposer.java b/same/src/main/java/com/orbekk/paxos/MasterProposer.java
index eaca410..3343988 100644
--- a/same/src/main/java/com/orbekk/paxos/MasterProposer.java
+++ b/same/src/main/java/com/orbekk/paxos/MasterProposer.java
@@ -34,14 +34,14 @@ public class MasterProposer extends Thread {
this.rpcf = rpcf;
}
- private class ResponseHandler implements RpcCallback<PaxosResponse> {
+ private static class ResponseHandler implements RpcCallback<PaxosResponse> {
final int proposalNumber;
final int numRequests;
- AtomicInteger bestPromise = new AtomicInteger();
- AtomicInteger numPromises = new AtomicInteger(0);
- AtomicInteger numResponses = new AtomicInteger(0);
- AtomicInteger result = new AtomicInteger();
- CountDownLatch done = new CountDownLatch(1);
+ final AtomicInteger bestPromise = new AtomicInteger();
+ final AtomicInteger numPromises = new AtomicInteger(0);
+ final AtomicInteger numResponses = new AtomicInteger(0);
+ final AtomicInteger result = new AtomicInteger();
+ final CountDownLatch done = new CountDownLatch(1);
public ResponseHandler(int proposalNumber, int numRequests) {
this.proposalNumber = proposalNumber;
@@ -56,12 +56,11 @@ public class MasterProposer extends Thread {
if (result == proposalNumber) {
numPromises.incrementAndGet();
}
- while (true) {
+ boolean updated = false;
+ while (!updated) {
int oldVal = bestPromise.get();
int update = Math.min(oldVal, result);
- if (bestPromise.compareAndSet(oldVal, update)) {
- break;
- }
+ updated = bestPromise.compareAndSet(oldVal, update);
}
}
checkDone();