annotate src/main/java/alice/topology/manager/CreateTreeTopology.java @ 647:e321c5ec9b58

fix toplogy manager; ring worked
author suruga
date Sun, 31 Dec 2017 19:32:27 +0900
parents 8d9f35701fdb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
1 package alice.topology.manager;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
2
116e0fde9233 change algotherm
sugi
parents:
diff changeset
3 import java.util.HashMap;
647
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
4
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
5 import alice.datasegment.DataSegmentManager;
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
6 import org.msgpack.type.ValueFactory;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
7
116e0fde9233 change algotherm
sugi
parents:
diff changeset
8 import alice.codesegment.CodeSegment;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
9 import alice.datasegment.CommandType;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
10 import alice.datasegment.DataSegment;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
11 import alice.datasegment.Receiver;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
12 import alice.topology.HostMessage;
116e0fde9233 change algotherm
sugi
parents:
diff changeset
13
514
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 482
diff changeset
14 public class CreateTreeTopology extends CodeSegment{
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
15
116e0fde9233 change algotherm
sugi
parents:
diff changeset
16 private Receiver info = ids.create(CommandType.TAKE);
116e0fde9233 change algotherm
sugi
parents:
diff changeset
17 private Receiver info1 = ids.create(CommandType.TAKE);
116e0fde9233 change algotherm
sugi
parents:
diff changeset
18 private Receiver info2 = ids.create(CommandType.TAKE); // HashMap
116e0fde9233 change algotherm
sugi
parents:
diff changeset
19 private Receiver info3 = ids.create(CommandType.TAKE); // MD5
116e0fde9233 change algotherm
sugi
parents:
diff changeset
20 private Receiver info4 = ids.create(CommandType.TAKE);
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
21 private Receiver info6 = ids.create(CommandType.TAKE);
647
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
22 private Receiver info7 = ids.create(CommandType.PEEK);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
23
514
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 482
diff changeset
24 public CreateTreeTopology(){
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
25 info.setKey("newHost");
116e0fde9233 change algotherm
sugi
parents:
diff changeset
26 info1.setKey("hostCount");
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
27 info2.setKey("nameTable");
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
28 info3.setKey("MD5");
116e0fde9233 change algotherm
sugi
parents:
diff changeset
29 info4.setKey("absCookieTable");
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
30 info6.setKey("parentManager");
647
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
31 info7.setKey("config");
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
32 }
116e0fde9233 change algotherm
sugi
parents:
diff changeset
33
116e0fde9233 change algotherm
sugi
parents:
diff changeset
34 @SuppressWarnings("unchecked")
116e0fde9233 change algotherm
sugi
parents:
diff changeset
35 @Override
116e0fde9233 change algotherm
sugi
parents:
diff changeset
36 public void run() {
116e0fde9233 change algotherm
sugi
parents:
diff changeset
37 String cookie = info3.asString();
576
2df12c110ebc change print log
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
38 System.out.println("cookie:" + cookie);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
39 HostMessage host = info.asClass(HostMessage.class);
116e0fde9233 change algotherm
sugi
parents:
diff changeset
40 int comingHostCount = info1.asInteger();
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
41 ParentManager manager = info6.asClass(ParentManager.class);
647
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
42 TopologyManagerConfig topologyManagerConfig = info7.asClass(TopologyManagerConfig.class);
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
43 HashMap<String, HostMessage> nameTable = info2.asClass(HashMap.class);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
44 HashMap<String, String> absCookieTable = info4.asClass(HashMap.class);
116e0fde9233 change algotherm
sugi
parents:
diff changeset
45
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 518
diff changeset
46 String nodeName = "node"+comingHostCount;
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
47 // Manager connect to Node
647
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
48 if (host.port == 0) {
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
49 // local test mode
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
50 DataSegmentManager dsm = DataSegment.get(host.name);
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
51 DataSegment.register(nodeName, dsm);
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
52 } else {
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
53 DataSegment.connect(nodeName, nodeName, host.name, host.port);
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
54 }
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
55 ods.put(nodeName, "host", nodeName);
116e0fde9233 change algotherm
sugi
parents:
diff changeset
56 ods.put(nodeName, "cookie", cookie);
116e0fde9233 change algotherm
sugi
parents:
diff changeset
57
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 518
diff changeset
58 absCookieTable.put(cookie, nodeName);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
59 ods.put(info4.key, absCookieTable);
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 518
diff changeset
60 ods.put(info1.key, comingHostCount+1);
482
8227a2fd5a55 bug fix
sugi
parents: 480
diff changeset
61 host.alive = true;
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
62 nameTable.put(nodeName, host);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
63 manager.register(nodeName);
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
64
116e0fde9233 change algotherm
sugi
parents:
diff changeset
65 if (comingHostCount!=0) {
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
66 // put parent information own
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
67 String parentAbsName = manager.getMyParent();
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
68 HostMessage parent = nameTable.get(parentAbsName);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
69 int num = manager.getMyNumber();
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
70
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
71 HostMessage newHost = new HostMessage(parent.name, parent.port, "parent", "child"+num);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
72 newHost.absName = parentAbsName;
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
73 newHost.remoteAbsName = nodeName; // address
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
74 ods.put(newHost.remoteAbsName, newHost);
523
145c425db88d add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 518
diff changeset
75
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
76 ods.put("nodeInfo", newHost);
639
8d9f35701fdb fix RecordTopology
suruga
parents: 576
diff changeset
77 new RecordTopology();
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
78
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
79 // put own information parent
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
80 newHost = new HostMessage(host.name, host.port, "child"+num, "parent");
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
81 newHost.absName = nodeName;
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
82 newHost.remoteAbsName = parentAbsName;
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
83
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
84 ods.put(newHost.remoteAbsName, newHost);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
85 ods.put("nodeInfo", newHost);
639
8d9f35701fdb fix RecordTopology
suruga
parents: 576
diff changeset
86 new RecordTopology();
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
87
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
88 }
116e0fde9233 change algotherm
sugi
parents:
diff changeset
89
475
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
90 ods.put(info2.key, nameTable);
fac27e395930 change decide children algorithm
sugi
parents: 473
diff changeset
91 ods.put(info6.key, manager);
647
e321c5ec9b58 fix toplogy manager; ring worked
suruga
parents: 639
diff changeset
92 ods.put(nodeName, new HostMessage("",0,"","") );
472
116e0fde9233 change algotherm
sugi
parents:
diff changeset
93 if (comingHostCount==0)
116e0fde9233 change algotherm
sugi
parents:
diff changeset
94 ods.put("start", ValueFactory.createNilValue());
116e0fde9233 change algotherm
sugi
parents:
diff changeset
95 }
116e0fde9233 change algotherm
sugi
parents:
diff changeset
96 }