# HG changeset patch # User akahori # Date 1549955457 -32400 # Node ID 3a4f77778d90d53a1ac4e5a713e16276484d4167 # Parent 2d0d41b648faa48834845d2fa50c7ff56e05356b fix receivepromisecg diff -r 2d0d41b648fa -r 3a4f77778d90 src/main/java/christie/test/topology/paxos/proposer/ReceivePromiseCodeGear.java --- a/src/main/java/christie/test/topology/paxos/proposer/ReceivePromiseCodeGear.java Tue Feb 12 16:10:15 2019 +0900 +++ b/src/main/java/christie/test/topology/paxos/proposer/ReceivePromiseCodeGear.java Tue Feb 12 16:10:57 2019 +0900 @@ -17,16 +17,19 @@ //@Take int promiseCount; + int maxRecvProposalNumber; + Logger logger = LogManager.getLogger(RecieveAcceptedCodeGear.class); public ReceivePromiseCodeGear(Proposal sendedProposal){ - this(0, sendedProposal); + this(0, sendedProposal, 0); } - public ReceivePromiseCodeGear(int promiseCount, Proposal sendedProposal){ + public ReceivePromiseCodeGear(int promiseCount, Proposal sendedProposal, int maxRecvProposalNumber){ this.promiseCount = promiseCount; this.sendedProposal = sendedProposal; + this.maxRecvProposalNumber = maxRecvProposalNumber; } @@ -35,27 +38,22 @@ promiseCount++; if(receivePromise.getNumber() > sendedProposal.getNumber()){ - //logger.debug("increment : ", sendedProposal); - //put("sendProposal", sendedProposal); - cgm.setup(new SendPrepareRequestCodeGear(sendedProposal)); - return; }else{ if(receivePromise.isAccepted()){ - if(!sendedProposal.isAccepted()){ + int recvProposalNumber = receivePromise.getNumber(); + if(maxRecvProposalNumber < recvProposalNumber) { + maxRecvProposalNumber = recvProposalNumber; sendedProposal.setValue(receivePromise.getValue()); } } } - //put("sendedProposal", sendedProposal); - //put("promiseCount", promiseCount); + if(promiseCount > sendedProposal.getAcceptorNum()/2){ - if(promiseCount > sendedProposal.getAcceptorNum()/2){ - //put("acceptProposal", sendedProposal); cgm.setup(new SendAcceptRequestCodeGear(sendedProposal)); }else { - cgm.setup(new ReceivePromiseCodeGear(promiseCount, sendedProposal)); + cgm.setup(new ReceivePromiseCodeGear(promiseCount, sendedProposal, maxRecvProposalNumber)); } } }