# HG changeset patch # User sugi # Date 1417782277 -32400 # Node ID 86c45738dd9e5563d697068d088378d380eb0b15 # Parent 8227a2fd5a5549cb457c4e34a2c476bad68a37b3 success fix topology ..... may be diff -r 8227a2fd5a55 -r 86c45738dd9e src/main/java/alice/datasegment/DataSegmentManager.java --- a/src/main/java/alice/datasegment/DataSegmentManager.java Fri Dec 05 17:22:33 2014 +0900 +++ b/src/main/java/alice/datasegment/DataSegmentManager.java Fri Dec 05 21:24:37 2014 +0900 @@ -62,5 +62,6 @@ public abstract void ping(String returnKey); public abstract void response(String returnKey); + public abstract void setSendError(boolean b); } diff -r 8227a2fd5a55 -r 86c45738dd9e src/main/java/alice/datasegment/LocalDataSegmentManager.java --- a/src/main/java/alice/datasegment/LocalDataSegmentManager.java Fri Dec 05 17:22:33 2014 +0900 +++ b/src/main/java/alice/datasegment/LocalDataSegmentManager.java Fri Dec 05 21:24:37 2014 +0900 @@ -149,4 +149,9 @@ } + @Override + public void setSendError(boolean b) { + + } + } diff -r 8227a2fd5a55 -r 86c45738dd9e src/main/java/alice/datasegment/RemoteDataSegmentManager.java --- a/src/main/java/alice/datasegment/RemoteDataSegmentManager.java Fri Dec 05 17:22:33 2014 +0900 +++ b/src/main/java/alice/datasegment/RemoteDataSegmentManager.java Fri Dec 05 21:24:37 2014 +0900 @@ -150,13 +150,15 @@ public void shutdown() { connection.close(); LinkedBlockingQueue queue = connection.sendQueue; - if (!queue.isEmpty()) { - queue.clear(); - } + if (!queue.isEmpty()) queue.clear(); + if (DataSegment.contains(connection.name)) + DataSegment.remove(connection.name); + } - if (DataSegment.contains(connection.name)) { - DataSegment.remove(connection.name); - } + @Override + public void setSendError(boolean b) { + connection.sendManager = b; + } } diff -r 8227a2fd5a55 -r 86c45738dd9e src/main/java/alice/topology/manager/keeparive/ListManager.java --- a/src/main/java/alice/topology/manager/keeparive/ListManager.java Fri Dec 05 17:22:33 2014 +0900 +++ b/src/main/java/alice/topology/manager/keeparive/ListManager.java Fri Dec 05 21:24:37 2014 +0900 @@ -83,4 +83,10 @@ } System.out.println(); } + + public void deleteAll(String name) { + TaskInfo task = new TaskInfo(TaskType.CLOSE); + task.setInfo(name, 0); + while(deleteTask(task)); + } } diff -r 8227a2fd5a55 -r 86c45738dd9e src/main/java/alice/topology/node/DeleteConnection.java --- a/src/main/java/alice/topology/node/DeleteConnection.java Fri Dec 05 17:22:33 2014 +0900 +++ b/src/main/java/alice/topology/node/DeleteConnection.java Fri Dec 05 21:24:37 2014 +0900 @@ -6,13 +6,16 @@ import alice.datasegment.CommandType; import alice.datasegment.DataSegment; import alice.datasegment.Receiver; +import alice.topology.manager.keeparive.ListManager; public class DeleteConnection extends CloseEventCodeSegment { private Receiver info = ids.create(CommandType.TAKE); + private Receiver info1 = ids.create(CommandType.TAKE); public DeleteConnection() { info.setKey("_CLIST"); + info1.setKey("_WAITINGLIST"); } @Override @@ -26,7 +29,10 @@ if (DataSegment.contains(name)) DataSegment.get(name).shutdown(); } + ListManager manager = info1.asClass(ListManager.class); + manager.deleteAll(name); ods.update(info.key, list); + ods.update(info1.key, manager); } } diff -r 8227a2fd5a55 -r 86c45738dd9e src/main/java/alice/topology/node/ReceiveCloseMessage.java --- a/src/main/java/alice/topology/node/ReceiveCloseMessage.java Fri Dec 05 17:22:33 2014 +0900 +++ b/src/main/java/alice/topology/node/ReceiveCloseMessage.java Fri Dec 05 21:24:37 2014 +0900 @@ -16,8 +16,14 @@ @Override public void run() { String managerKey = info.asString(); - if (DataSegment.contains(managerKey)) - DataSegment.get(managerKey).close(); + if (DataSegment.contains(managerKey)) { + DataSegment.get(managerKey).setSendError(false); + DataSegment.get(managerKey).shutdown(); + } else { + + } + + new ReceiveCloseMessage(); }