annotate src/main/java/christie/test/topology/paxos/acceptor/AcceptCodeGear.java @ 190:2d0d41b648fa

add PromiseProposal and refactor acceptor
author akahori
date Tue, 12 Feb 2019 16:10:15 +0900
parents 1bffd8151c6a
children f4343de364da
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
159
a0391cfdcef6 update topologymanager
akahori
parents: 157
diff changeset
1 package christie.test.topology.paxos.acceptor;
37
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
2
148
301c1633745e update paxos
akahori
parents: 37
diff changeset
3 import christie.annotation.Peek;
301c1633745e update paxos
akahori
parents: 37
diff changeset
4 import christie.annotation.Take;
37
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
5 import christie.codegear.CodeGear;
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
6 import christie.codegear.CodeGearManager;
159
a0391cfdcef6 update topologymanager
akahori
parents: 157
diff changeset
7 import christie.test.topology.paxos.Proposal;
164
c6250ad544e0 fix paxos
akahori
parents: 159
diff changeset
8 import christie.topology.TopologyDataGear;
181
33b4966d4d24 update paxos
akahori
parents: 174
diff changeset
9 import org.apache.logging.log4j.LogManager;
33b4966d4d24 update paxos
akahori
parents: 174
diff changeset
10 import org.apache.logging.log4j.Logger;
157
7a2108775da7 update paxos done
akahori
parents: 148
diff changeset
11
7a2108775da7 update paxos done
akahori
parents: 148
diff changeset
12 import java.util.List;
37
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
13
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
14 public class AcceptCodeGear extends CodeGear {
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
15
157
7a2108775da7 update paxos done
akahori
parents: 148
diff changeset
16 @Peek
164
c6250ad544e0 fix paxos
akahori
parents: 159
diff changeset
17 TopologyDataGear topoDG;
157
7a2108775da7 update paxos done
akahori
parents: 148
diff changeset
18
148
301c1633745e update paxos
akahori
parents: 37
diff changeset
19 @Take
301c1633745e update paxos
akahori
parents: 37
diff changeset
20 Proposal acceptProposal;
301c1633745e update paxos
akahori
parents: 37
diff changeset
21
190
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
22
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
23 //PromiseProposal promiseProposal;
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
24
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
25 //@Take
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
26 //Proposal promisedProposal;
148
301c1633745e update paxos
akahori
parents: 37
diff changeset
27
181
33b4966d4d24 update paxos
akahori
parents: 174
diff changeset
28 Logger logger = LogManager.getLogger(AcceptCodeGear.class);
33b4966d4d24 update paxos
akahori
parents: 174
diff changeset
29
190
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
30
37
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
31 @Override
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
32 protected void run(CodeGearManager cgm) {
164
c6250ad544e0 fix paxos
akahori
parents: 159
diff changeset
33 List<String> _CLIST = topoDG.getConnectionList();
37
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
34
190
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
35 // promise codegearでも使うので, lock
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
36 PromiseProposal.getInstance().lock();
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
37 PromiseProposal promiseProposal = PromiseProposal.getInstance();
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
38 Proposal promisedProposal = promiseProposal.getPromiseProposal();
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
39
172
2068aa841a4d fix paxos
akahori
parents: 164
diff changeset
40 if(acceptProposal.getNumber() >= promisedProposal.getNumber()) {
190
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
41 logger.debug(acceptProposal + " >= " + promisedProposal);
157
7a2108775da7 update paxos done
akahori
parents: 148
diff changeset
42 acceptProposal.setAccepted(true);
164
c6250ad544e0 fix paxos
akahori
parents: 159
diff changeset
43 acceptProposal.setAcceptorName(topoDG.getNodeName());
157
7a2108775da7 update paxos done
akahori
parents: 148
diff changeset
44
181
33b4966d4d24 update paxos
akahori
parents: 174
diff changeset
45 promisedProposal = acceptProposal;
33b4966d4d24 update paxos
akahori
parents: 174
diff changeset
46
172
2068aa841a4d fix paxos
akahori
parents: 164
diff changeset
47 for (String connectionNodeName : _CLIST){
183
1bffd8151c6a fix paxos
akahori
parents: 181
diff changeset
48 if(connectionNodeName.matches("learner" + ".*")) {
190
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
49 //logger.debug("send " + topoDG.getNodeName() + " to "
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
50 // + connectionNodeName + " " + promisedProposal);
183
1bffd8151c6a fix paxos
akahori
parents: 181
diff changeset
51 getDGM(connectionNodeName).put("acceptedProposal", promisedProposal);
172
2068aa841a4d fix paxos
akahori
parents: 164
diff changeset
52 }
2068aa841a4d fix paxos
akahori
parents: 164
diff changeset
53 }
181
33b4966d4d24 update paxos
akahori
parents: 174
diff changeset
54 }
190
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
55 promiseProposal.setPromiseProposal(promisedProposal);
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
56 promiseProposal.unLock();
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
57 logger.debug("accept " + topoDG.getNodeName() + " " + promisedProposal);
181
33b4966d4d24 update paxos
akahori
parents: 174
diff changeset
58 put(acceptProposal.getProposerName(), "acceptedProposal", promisedProposal);
33b4966d4d24 update paxos
akahori
parents: 174
diff changeset
59 put("promisedProposal", promisedProposal);
37
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
60
157
7a2108775da7 update paxos done
akahori
parents: 148
diff changeset
61 cgm.setup(new AcceptCodeGear());
190
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
62 }
157
7a2108775da7 update paxos done
akahori
parents: 148
diff changeset
63
190
2d0d41b648fa add PromiseProposal and refactor acceptor
akahori
parents: 183
diff changeset
64
37
b9dd655a54b9 add paxos Code
akahori
parents:
diff changeset
65 }