# HG changeset patch # User oc # Date 1403263176 -32400 # Node ID 73c42f9d04a84dacc7806eaad534b961aca23a04 # Parent fab76dd9c3cd04a34f10b0674db3d5a567c021ce fix send connectTo command when lostNodeConnection. diff -r fab76dd9c3cd -r 73c42f9d04a8 src/main/java/jp/ac/u_ryukyu/treevnc/client/TreeVncProtocol.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/TreeVncProtocol.java Fri Jun 20 18:29:50 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/TreeVncProtocol.java Fri Jun 20 20:19:36 2014 +0900 @@ -130,7 +130,7 @@ throws IOException { this.leaderFlag = leader; this.myAddress = myHostName; - client.setTeminationType(true); + client.setTeminationType(false); client.closeApp(); client.setConnectionParam(hostname, port); client.run(); diff -r fab76dd9c3cd -r 73c42f9d04a8 src/main/java/jp/ac/u_ryukyu/treevnc/server/TreeManagement.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/TreeManagement.java Fri Jun 20 18:29:50 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/TreeManagement.java Fri Jun 20 20:19:36 2014 +0900 @@ -67,10 +67,9 @@ TreeVNCNode lostParentNode = lookup(nodeList,hostname,port); if (lostParentNode == null ) return; // some thing wrong int treeNumber = lostParentNode.getTreeNum(); - TreeVNCNode newparent = getParentNode(treeNumber); - moveLastNodeToLostNodePosition(treeNumber); - if(nodeList.size() > treeNumber +1) - lostNodeConnection(newparent); + TreeVNCNode deadParent = getParentNode(treeNumber); + moveLastNodeToLostNodePosition(deadParent.getTreeNum()); + lostNodeConnection(deadParent); // if lostParentNode is the last one, we don't need reconnection // Thread.sleep(intv_time); } @@ -79,14 +78,25 @@ * send reconnect to all children * @param newparent */ - private void lostNodeConnection(TreeVNCNode newparent) { + private void lostNodeConnection(TreeVNCNode oldParent) { + TreeVNCNode newparent = nodeList.get(oldParent.getTreeNum()); + TreeVNCNode grandfather = getParentNode(newparent.getTreeNum()); + + TreeVncProtocol vc = new TreeVncProtocol(newparent.getHostname(),newparent.getPort()); + try { + short nodeId = (short) newparent.getTreeNum(); + vc.connectTo(grandfather.getHostname(), grandfather.getPort(), isLeader(newparent), nodeId); + } catch (IOException e) { + // log + } + for(int i=1; i < treebranch; i++ ) { if (newparent.getTreeNum() + i <=nodeList.size() ) { TreeVNCNode n = nodeList.get(newparent.getTreeNum()+i) ; - TreeVncProtocol vc = new TreeVncProtocol(n.getHostname(),n.getPort()); + TreeVncProtocol vc1 = new TreeVncProtocol(n.getHostname(),n.getPort()); try { short nodeId = (short) n.getTreeNum(); - vc.connectTo(newparent.getHostname(), newparent.getPort(), isLeader(newparent), nodeId); + vc1.connectTo(newparent.getHostname(), newparent.getPort(), isLeader(n), nodeId); } catch (IOException e) { // log } @@ -135,9 +145,18 @@ * show Tree Node. */ public void showTreeNode() { + int nl = 0, pow = 2; for (int i=0; i