changeset 269:9982e1c4f099

debugging reconnectManager
author sugi
date Tue, 20 Aug 2013 17:35:03 +0900
parents 709936c00c89
children 23e53aaa8720
files .settings/org.eclipse.core.resources.prefs src/alice/datasegment/DataSegment.java src/alice/topology/manager/StartTopologyManager.java src/alice/topology/manager/TopologyFinish.java src/alice/topology/manager/createABSIPList.java src/alice/topology/manager/reconnection/CheckABSName.java src/alice/topology/manager/reconnection/CheckConnectionList.java src/alice/topology/manager/reconnection/ReceiveError.java src/alice/topology/manager/reconnection/ReceiveReconnectData.java src/alice/topology/node/ConfigurationFinish.java src/alice/topology/node/IncomingAbstractHostName.java src/alice/topology/node/StartTopologyNode.java
diffstat 12 files changed, 159 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/.settings/org.eclipse.core.resources.prefs	Sun Aug 18 02:13:52 2013 +0900
+++ b/.settings/org.eclipse.core.resources.prefs	Tue Aug 20 17:35:03 2013 +0900
@@ -3,3 +3,4 @@
 encoding//src/alice/test/codesegment/local/wordcount/SeparateArray.java=UTF-8
 encoding//src/alice/test/codesegment/local/wordcount/WordCount.java=UTF-8
 encoding//src/alice/topology/manager/IncomingHosts.java=UTF-8
+encoding//src/alice/topology/manager/createABSIPList.java=UTF-8
--- a/src/alice/datasegment/DataSegment.java	Sun Aug 18 02:13:52 2013 +0900
+++ b/src/alice/datasegment/DataSegment.java	Tue Aug 20 17:35:03 2013 +0900
@@ -41,4 +41,8 @@
 		return dataSegment.acceptHash.get(key);
 	}
 	
+	public static void remove(String key){
+		dataSegment.dataSegmentManageres.remove(key);
+	}
+	
 }
--- a/src/alice/topology/manager/StartTopologyManager.java	Sun Aug 18 02:13:52 2013 +0900
+++ b/src/alice/topology/manager/StartTopologyManager.java	Tue Aug 20 17:35:03 2013 +0900
@@ -75,8 +75,11 @@
 			e.printStackTrace();
 		}
 		HashMap<String, ArrayList<HostMessage>> connectionList = new HashMap<String, ArrayList<HostMessage>>();
-		ods.put("local", "connection", connectionList);
-
+		ods.put("connection", connectionList);
+		ods.put("_ABSIPTABLE" ,new ArrayList<HostMessage>());
+		
+		new createABSIPList();
+		
 		IncomingHosts cs1 = new IncomingHosts(topology, nodeNames);
 		cs1.host.setKey("local", "host");
 		cs1.connection.setKey("local", "connection");
@@ -86,6 +89,8 @@
 		
 		ConfigWaiter cs3 = new ConfigWaiter(nodeNum);
 		cs3.done.setKey("local", "done");
+		
+		
 	}
 
 }
--- a/src/alice/topology/manager/TopologyFinish.java	Sun Aug 18 02:13:52 2013 +0900
+++ b/src/alice/topology/manager/TopologyFinish.java	Tue Aug 20 17:35:03 2013 +0900
@@ -9,6 +9,7 @@
 	public Receiver finish = ids.create(CommandType.TAKE);
 	@Override
 	public void run() {
+		//System.exit(0);
 		new ReceiveError();
 	}
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/topology/manager/createABSIPList.java	Tue Aug 20 17:35:03 2013 +0900
@@ -0,0 +1,31 @@
+package alice.topology.manager;
+
+import java.util.List;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+import alice.topology.HostMessage;
+
+public class createABSIPList extends CodeSegment{
+	private Receiver rData = ids.create(CommandType.TAKE);
+	private Receiver hlist = ids.create(CommandType.PEEK);
+	
+	public createABSIPList(){
+		rData.setKey("_ABS_IP");
+		hlist.setKey("_ABSIPTABLE");
+	}
+	
+	@Override
+	public void run() {
+		HostMessage host = rData.asClass(HostMessage.class);
+		@SuppressWarnings("unchecked")
+		List<HostMessage> ABSIPList = hlist.asClass(List.class);
+		ABSIPList.add(host);
+		ods.update("_ABSIPTABLE", ABSIPList);
+		
+		new createABSIPList();
+		
+	}
+
+}
--- a/src/alice/topology/manager/reconnection/CheckABSName.java	Sun Aug 18 02:13:52 2013 +0900
+++ b/src/alice/topology/manager/reconnection/CheckABSName.java	Tue Aug 20 17:35:03 2013 +0900
@@ -10,28 +10,37 @@
 
 public class CheckABSName extends CodeSegment{
 	private Receiver abs = ids.create(CommandType.PEEK);
-	private Receiver host = ids.create(CommandType.TAKE); 
+	private Receiver host = ids.create(CommandType.TAKE);
 	private HostMessage message;
 	
 	public CheckABSName(HostMessage mes) {
 		message = mes;
-		abs.setKey("_ABSTABLE");
+		abs.setKey("_ABSIPTABLE");
 		host.setKey("host");
 	}
 
 	@Override
 	public void run() {
+		System.out.println("CheckABSName");
 		@SuppressWarnings("unchecked")
-		List<HostMessage> absList = abs.asClass(List.class);
-		for (HostMessage mes : absList){
+		List<HostMessage> ABSIPList = abs.asClass(List.class);
+		for (HostMessage mes : ABSIPList){
 			if (mes.name.equals(message.name)&&mes.port == message.port){
 				HostMessage hostInfo = host.asClass(HostMessage.class);
+				DataSegment.remove(mes.getABSName());
 				DataSegment.connect(mes.getABSName(), "", hostInfo.name, hostInfo.port);
 				ods.put(mes.getABSName(), "host", mes.getABSName());
-				
+				ods.put("_RECABSNAME", mes.getABSName());
+				ods.put("HMCLONE", new HostMessage(mes.name, mes.port));		
+				mes.port = hostInfo.port;
+				mes.name = hostInfo.name;
+				ods.update("_ABSIPTABLE", ABSIPList);
+				break;
 			}
-			
 		}
+		
+		new CheckConnectionList();
+		
 	}
 
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/topology/manager/reconnection/CheckConnectionList.java	Tue Aug 20 17:35:03 2013 +0900
@@ -0,0 +1,67 @@
+package alice.topology.manager.reconnection;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+import alice.topology.HostMessage;
+
+public class CheckConnectionList extends CodeSegment {
+
+	private Receiver name = ids.create(CommandType.TAKE);
+	private Receiver connection = ids.create(CommandType.TAKE);
+	private Receiver abs = ids.create(CommandType.PEEK);
+	private Receiver clone = ids.create(CommandType.TAKE);
+	
+	public CheckConnectionList(){
+		name.setKey("_RECABSNAME");
+		connection.setKey("connection");
+		abs.setKey("_ABSIPTABLE");
+		clone.setKey("HMCLONE");
+	}
+	
+	@Override
+	public void run() {
+		System.out.println("CheckConnectionList");
+		@SuppressWarnings("unchecked")
+		HashMap<String, ArrayList<HostMessage>> connectionList = connection.asClass(HashMap.class);
+		@SuppressWarnings("unchecked")
+		List<HostMessage> ABSIPList = abs.asClass(List.class);
+		String absName = name.asClass(String.class);
+		HostMessage oldInfo =  clone.asClass(HostMessage.class);
+		HostMessage newInfo = null; 
+		for (HostMessage mes : ABSIPList){
+			if (mes.absName.equals(absName)){
+				newInfo = mes;
+				break;
+			}
+		}
+		
+		List<HostMessage> clist = connectionList.get(absName);
+		for (HostMessage mes : clist){
+			ods.put(absName, mes);
+			for (HostMessage mes2 : ABSIPList){
+				if (mes.name.equals(mes2.name)&&mes.port == mes2.port){
+					String absName2 = mes2.getABSName();
+					List<HostMessage> clist2 = connectionList.get(absName2);
+					for (HostMessage mes3 : clist2){
+						if (mes3.name.equals(oldInfo.name)&&mes3.port == oldInfo.port){
+							mes3.name = newInfo.name;
+							mes3.port = newInfo.port;
+							break;
+						}
+						ods.put(absName, "_RECODATA", mes3);
+					}
+					break;
+				}			
+			}
+		}
+		
+		ods.update("connection", connectionList);
+		new ReceiveError();
+	}
+}
+			
\ No newline at end of file
--- a/src/alice/topology/manager/reconnection/ReceiveError.java	Sun Aug 18 02:13:52 2013 +0900
+++ b/src/alice/topology/manager/reconnection/ReceiveError.java	Tue Aug 20 17:35:03 2013 +0900
@@ -16,11 +16,13 @@
 	
 	@Override
 	public void run() {		
+		System.out.println("run Receive Error");
 		HostMessage message = reportInfo.asClass(HostMessage.class);
 		try {
 			Socket socket = new Socket(message.name, message.port);
 			socket.close();
 		} catch (IOException e) {
+			System.out.println("Error");
 			new CheckABSName(message);
 			return;
 		}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/alice/topology/manager/reconnection/ReceiveReconnectData.java	Tue Aug 20 17:35:03 2013 +0900
@@ -0,0 +1,27 @@
+package alice.topology.manager.reconnection;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.DataSegment;
+import alice.datasegment.Receiver;
+import alice.topology.HostMessage;
+
+public class ReceiveReconnectData extends CodeSegment{
+	private Receiver hostData = ids.create(CommandType.TAKE);
+
+	public ReceiveReconnectData(){
+		hostData.setKey("_RECODATA");
+	}
+	
+	@Override
+	public void run() {
+		System.out.println("ReceiveReconnectData");
+		HostMessage host = hostData.asClass(HostMessage.class);
+		DataSegment.remove(host.connectionName);
+		DataSegment.connect(host.connectionName, host.reverseName, host.name, host.port);
+		
+		new ReceiveReconnectData();
+	}
+	
+
+}
--- a/src/alice/topology/node/ConfigurationFinish.java	Sun Aug 18 02:13:52 2013 +0900
+++ b/src/alice/topology/node/ConfigurationFinish.java	Tue Aug 20 17:35:03 2013 +0900
@@ -5,6 +5,7 @@
 import alice.codesegment.CodeSegment;
 import alice.datasegment.CommandType;
 import alice.datasegment.Receiver;
+import alice.topology.manager.reconnection.ReceiveReconnectData;
 
 public class ConfigurationFinish extends CodeSegment {
 
@@ -19,6 +20,8 @@
 	@Override
 	public void run() {
 		if (reverseCount.getVal().equals(configNodeNum.getVal())) {
+			new ReceiveReconnectData();
+			
 			ods.put("manager", "done", ValueFactory.createNilValue());
 			Start cs = new Start(startCS);
 			cs.done.setKey("manager", "start");
--- a/src/alice/topology/node/IncomingAbstractHostName.java	Sun Aug 18 02:13:52 2013 +0900
+++ b/src/alice/topology/node/IncomingAbstractHostName.java	Tue Aug 20 17:35:03 2013 +0900
@@ -21,7 +21,6 @@
 		cs.hostInfo.setKey("manager", absName);
 		System.out.println(absName);
 		host.setABSName(absName);
-		// need create list on manager
 		ods.put("manager","_ABS_IP", host);
 	}
 
--- a/src/alice/topology/node/StartTopologyNode.java	Sun Aug 18 02:13:52 2013 +0900
+++ b/src/alice/topology/node/StartTopologyNode.java	Tue Aug 20 17:35:03 2013 +0900
@@ -45,6 +45,7 @@
 		ConfigurationFinish cs3 = new ConfigurationFinish(startCS);
 		cs3.reverseCount.setKey("local", "reverseCount");
 		cs3.configNodeNum.setKey("local", "configNodeNum");
+		
 	}
 
 	@SuppressWarnings("unused")