# HG changeset patch # User akahori # Date 1535594137 -32400 # Node ID f884c1bd0d36fdbbb9360b6c8b233913d7460746 # Parent c73bb6a17034f61cd420f7603c560dc82795dcce fix IncomingHosts and RecordTopology. and refactor. diff -r c73bb6a17034 -r f884c1bd0d36 src/main/java/christie/topology/HostMessage.java --- a/src/main/java/christie/topology/HostMessage.java Wed Aug 29 10:40:39 2018 +0900 +++ b/src/main/java/christie/topology/HostMessage.java Thu Aug 30 10:55:37 2018 +0900 @@ -9,10 +9,10 @@ public int port; public String connectionName; - public String absName; // this is absName which have these IP and port. + public String nodeName; // this is nodeName which have these IP and port. public String reverseName; - public String remoteAbsName; + public String remoteNodeName; public String cookie; // MD5 public boolean alive; @@ -36,7 +36,7 @@ public String toString() { return "HostMessage : name = " + hostName + ", port = " + Integer.toString(port) + " connectionName = " + - connectionName + " absName = " + absName + "reverseName = " + reverseName + " remoteAbsName = " + remoteAbsName + connectionName + " absName = " + nodeName + "reverseName = " + reverseName + " remoteAbsName = " + remoteNodeName + " cokkie = " + cookie ; } } diff -r c73bb6a17034 -r f884c1bd0d36 src/main/java/christie/topology/manager/CheckComingHost.java --- a/src/main/java/christie/topology/manager/CheckComingHost.java Wed Aug 29 10:40:39 2018 +0900 +++ b/src/main/java/christie/topology/manager/CheckComingHost.java Thu Aug 30 10:55:37 2018 +0900 @@ -25,7 +25,7 @@ // check cookie if (hostMessage.cookie != null) { if (absCookieTable.containsKey(hostMessage.cookie)) { - hostMessage.absName = absCookieTable.get(hostMessage.cookie); + hostMessage.nodeName = absCookieTable.get(hostMessage.cookie); System.out.println("match"); // coming host has ever joined this App getLocalDGM().put("reconnectHost", hostMessage); diff -r c73bb6a17034 -r f884c1bd0d36 src/main/java/christie/topology/manager/ConfigWaiter.java --- a/src/main/java/christie/topology/manager/ConfigWaiter.java Wed Aug 29 10:40:39 2018 +0900 +++ b/src/main/java/christie/topology/manager/ConfigWaiter.java Thu Aug 30 10:55:37 2018 +0900 @@ -4,16 +4,11 @@ import christie.annotation.Take; import christie.codegear.CodeGear; import christie.codegear.CodeGearManager; -import org.msgpack.type.NilValue; -import org.msgpack.type.ValueFactory; public class ConfigWaiter extends CodeGear { - - // Question: done 変数がわからない...何やっているんだろう. - // public Receiver done = ids.create(CommandType.TAKE); @Take - String done; + String nodePrepareDone; @Take int nodeNum; diff -r c73bb6a17034 -r f884c1bd0d36 src/main/java/christie/topology/manager/IncomingHosts.java --- a/src/main/java/christie/topology/manager/IncomingHosts.java Wed Aug 29 10:40:39 2018 +0900 +++ b/src/main/java/christie/topology/manager/IncomingHosts.java Thu Aug 30 10:55:37 2018 +0900 @@ -20,7 +20,6 @@ @Peek HashMap absCookieTable; - @Take // new coming host info HostMessage newHost; @Take @@ -43,19 +42,21 @@ absCookieTable.put(MD5, nodeName); - getDGM(nodeName).put( "host", nodeName); + getDGM(nodeName).put( "nodeName", nodeName); getDGM(nodeName).put("cookie", MD5); log.info( "toplology manager connected from " + nodeName); + + LinkedList nodeInfoList = resultParse.get(nodeName); for (NodeInfo nodeInfo : nodeInfoList) { HostMessage hostMessage = new HostMessage(newHost.hostName, newHost.port, - nodeInfo.connectionName, nodeInfo.reverseName); - hostMessage.absName = nodeName; - hostMessage.remoteAbsName = nodeInfo.sourceNodeName; + nodeInfo.connectionName, ""); + hostMessage.nodeName = nodeName; + hostMessage.remoteNodeName = nodeInfo.targetNodeName; getLocalDGM().put("nodeInfo", hostMessage); - getLocalDGM().put("hostInfo", hostMessage); + log.info(" write to " + nodeInfo.sourceNodeName + " config message =" + hostMessage.toString() + " remain " + Integer.toString((nodeNames.size()))); diff -r c73bb6a17034 -r f884c1bd0d36 src/main/java/christie/topology/manager/NodeInfo.java --- a/src/main/java/christie/topology/manager/NodeInfo.java Wed Aug 29 10:40:39 2018 +0900 +++ b/src/main/java/christie/topology/manager/NodeInfo.java Thu Aug 30 10:55:37 2018 +0900 @@ -1,15 +1,17 @@ package christie.topology.manager; +// edgeの情報入れてるだけだからクラス名変えたい. public class NodeInfo { public String sourceNodeName; public String connectionName; - public String reverseName; + public String targetNodeName; - public NodeInfo(String source, String connection) { + public NodeInfo(String source, String connection, String target) { this.sourceNodeName = source; this.connectionName = connection; + this.targetNodeName = target; } } diff -r c73bb6a17034 -r f884c1bd0d36 src/main/java/christie/topology/manager/RecordTopology.java --- a/src/main/java/christie/topology/manager/RecordTopology.java Wed Aug 29 10:40:39 2018 +0900 +++ b/src/main/java/christie/topology/manager/RecordTopology.java Thu Aug 30 10:55:37 2018 +0900 @@ -16,28 +16,35 @@ HostMessage nodeInfo; @Peek - HashMap> topology; + HashMap> topology; // ノード数nの全結合のデータ数 (n-1)*n + n + + //@Peek + //HashMap> topology; // ノード数nの全結合のデータ数 (n-1)*n @Override protected void run(CodeGearManager cgm) { - LinkedList connections; - if (!topology.containsKey(nodeInfo.remoteAbsName)) { - connections = new LinkedList(); + String nodeName = nodeInfo.nodeName; + String remoteNodeName = nodeInfo.remoteNodeName; + + // topologyにつながりを保存する. + if (topology.containsKey(nodeName)) { + topology.get(nodeName).put(remoteNodeName, nodeInfo); + } else { - connections = topology.get(nodeInfo.remoteAbsName); + HashMap connections = new HashMap(); + connections.put(nodeInfo.remoteNodeName, nodeInfo); + topology.put(nodeInfo.nodeName, connections); } - connections.add(nodeInfo); - topology.put(nodeInfo.remoteAbsName, connections); -// need debug option -// for (LinkedList list :topology.values()){ -// System.out.print(list.get(0).remoteAbsName+" : "); -// for (HostMessage host : list){ -// System.out.print("[ "+host.absName+" "+host.name+" "+host.port+" "+host.connectionName+" "+host.reverseName+" "+host.remoteAbsName+" ]"); -// } -// System.out.println(); -// } - //getLocalDGM().put("topology", topology); + // topologyNodeにつながる相手の情報を送る + if(topology.containsKey(remoteNodeName)){ + getDGM(nodeName).put("remoteNodeInfo", topology.get(remoteNodeName).get(nodeName)); + if(topology.get(remoteNodeName).containsKey(nodeName)){ + getDGM(remoteNodeName).put("remoteNodeInfo", nodeInfo); + } + + } + } } diff -r c73bb6a17034 -r f884c1bd0d36 src/main/java/christie/topology/manager/SearchHostName.java --- a/src/main/java/christie/topology/manager/SearchHostName.java Wed Aug 29 10:40:39 2018 +0900 +++ b/src/main/java/christie/topology/manager/SearchHostName.java Thu Aug 30 10:55:37 2018 +0900 @@ -34,24 +34,24 @@ // Question: remove処理 どうしようか. いらない気もする. // DataSegment.remove(hostInfo.absName); - cgm.createRemoteDGM(reconnectHost.absName, reconnectHost.hostName, reconnectHost.port); - getDGM(reconnectHost.absName).put("host", reconnectHost.absName); + cgm.createRemoteDGM(reconnectHost.nodeName, reconnectHost.hostName, reconnectHost.port); + getDGM(reconnectHost.nodeName).put("host", reconnectHost.nodeName); // put Host dataSegment on reconnect node - if (topology.containsKey(reconnectHost.absName)) { + if (topology.containsKey(reconnectHost.nodeName)) { // Question: これはバグ...? // ods.put(reconnectHost.absName, "dummy"); // this is bug if (running){ - getLocalDGM().put(reconnectHost.absName, ValueFactory.createNilValue()); + getLocalDGM().put(reconnectHost.nodeName, ValueFactory.createNilValue()); } - LinkedList hostList = topology.get(reconnectHost.absName); + LinkedList hostList = topology.get(reconnectHost.nodeName); for (HostMessage host : hostList){ - getLocalDGM().put(reconnectHost.absName, host); - System.out.println("put data in "+ reconnectHost.absName); + getLocalDGM().put(reconnectHost.nodeName, host); + System.out.println("put data in "+ reconnectHost.nodeName); } } @@ -60,13 +60,13 @@ for (HostMessage host : list){ // find and update old info - if (!reconnectHost.absName.equals(host.absName)) continue; + if (!reconnectHost.nodeName.equals(host.nodeName)) continue; if (!reconnectHost.hostName.equals(host.hostName) || reconnectHost.port != host.port){ host.hostName = reconnectHost.hostName; host.port = reconnectHost.port; - getLocalDGM().put(host.remoteAbsName, host); + getLocalDGM().put(host.remoteNodeName, host); } else { // nothing to do ? @@ -75,9 +75,9 @@ } for (LinkedList list :topology.values()){ - System.out.print(list.get(0).remoteAbsName+" : "); + System.out.print(list.get(0).remoteNodeName+" : "); for (HostMessage host : list){ - System.out.print("[ "+host.absName+" "+host.hostName+" "+host.port+" "+host.connectionName+" "+host.reverseName+" "+host.remoteAbsName+" ]"); + System.out.print("[ "+host.nodeName+" "+host.hostName+" "+host.port+" "+host.connectionName+" "+host.reverseName+" "+host.remoteNodeName+" ]"); } System.out.println(); } diff -r c73bb6a17034 -r f884c1bd0d36 src/main/java/christie/topology/manager/StartTopologyManager.java --- a/src/main/java/christie/topology/manager/StartTopologyManager.java Wed Aug 29 10:40:39 2018 +0900 +++ b/src/main/java/christie/topology/manager/StartTopologyManager.java Thu Aug 30 10:55:37 2018 +0900 @@ -10,11 +10,4 @@ cgm.getLocalDGM().put("topologyManagerConfig", topologyManagerConfig); cgm.setup(new TopologyManager()); } - - @Override - protected void run(CodeGearManager cgm) { - - } - - } diff -r c73bb6a17034 -r f884c1bd0d36 src/main/java/christie/topology/manager/TopologyFinish.java --- a/src/main/java/christie/topology/manager/TopologyFinish.java Wed Aug 29 10:40:39 2018 +0900 +++ b/src/main/java/christie/topology/manager/TopologyFinish.java Thu Aug 30 10:55:37 2018 +0900 @@ -13,6 +13,9 @@ //public Receiver finish = ids.create(CommandType.TAKE); //cs2.finish.setKey("local", "finish"); + @Take + String finish; + @Peek TopologyManagerConfig topologyManagerConfig; diff -r c73bb6a17034 -r f884c1bd0d36 src/main/java/christie/topology/manager/TopologyManager.java --- a/src/main/java/christie/topology/manager/TopologyManager.java Wed Aug 29 10:40:39 2018 +0900 +++ b/src/main/java/christie/topology/manager/TopologyManager.java Thu Aug 30 10:55:37 2018 +0900 @@ -1,7 +1,6 @@ package christie.topology.manager; import christie.annotation.Peek; -import christie.annotation.Take; import christie.codegear.CodeGear; import christie.codegear.CodeGearManager; @@ -38,7 +37,7 @@ // if (!conf.dynamic) は, conf.dynamic = trueの動作がわからないので, 省いた. LinkedList nodeNames = new LinkedList<>(); - HashMap> topology = new HashMap<>(); + HashMap> resultParse = new HashMap<>(); int nodeNum = 0; try { @@ -57,7 +56,7 @@ for (Node node : nodes) { String nodeName = node.getId().getId(); nodeNames.add(nodeName); - topology.put(nodeName, new LinkedList<>()); + resultParse.put(nodeName, new LinkedList<>()); } ArrayList edges = digraph.getEdges(); @@ -74,14 +73,15 @@ connection = edge.getAttribute("label"); source = edge.getSource().getNode().getId().getId(); target = edge.getTarget().getNode().getId().getId(); - nodeInfo = new NodeInfo(source, connection); + nodeInfo = new NodeInfo(source, connection, target); - topology.get(target).add(nodeInfo); + resultParse.get(source).add(nodeInfo); - hash.put(source + "," + target, nodeInfo); + //hash.put(source + "," + target, nodeInfo); } // hash.get(target + "," + source); をして, グラフを逆にたどって, reverseNameにlabelを入れてる. + /* for (Edge edge : edges) { connection = edge.getAttribute("label"); source = edge.getSource().getNode().getId().getId(); @@ -92,7 +92,7 @@ nodeInfo.reverseName = connection; } - } + }*/ } } catch (FileNotFoundException e) { @@ -106,25 +106,16 @@ // for recode topology information // cookie List getLocalDGM().put("running", false); - getLocalDGM().put("resultParse", topology); + getLocalDGM().put("resultParse", resultParse); getLocalDGM().put("nodeNames", nodeNames); getLocalDGM().put("hostInfoMap", new HashMap()); - getLocalDGM().put("topology", new HashMap>()); + getLocalDGM().put("topology", new HashMap>()); + getLocalDGM().put("nodeNum", nodeNum); + getLocalDGM().put("createdList", new LinkedList()); cgm.setup(new IncomingHosts()); - - // Question: この処理何をやっているのかわからない. 一応, その下にそれっぽいコードを書いた. - // ConfigWaiter cs3 = new ConfigWaiter(nodeNum); - // cs3.done.setKey("local", "done"); - cgm.setup(new ConfigWaiter()); - getLocalDGM().put("nodeNum", nodeNum); - - - - getLocalDGM().put("createdList", new LinkedList()); cgm.setup(new CreateHash()); - cgm.setup(new TopologyFinish()); }