# HG changeset patch # User sugi # Date 1418641444 -32400 # Node ID d3442b23e3df259662d2054b25217acfa56e0ab7 # Parent e5d2141af6c2057e3d819eb843d05fab5ecd422c bug fix scheduler diff -r e5d2141af6c2 -r d3442b23e3df src/main/java/alice/topology/manager/keeparive/CheckExistTask.java --- a/src/main/java/alice/topology/manager/keeparive/CheckExistTask.java Mon Dec 15 19:16:20 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -package alice.topology.manager.keeparive; - -import alice.codesegment.CodeSegment; -import alice.datasegment.CommandType; -import alice.datasegment.Receiver; - -public class CheckExistTask extends CodeSegment{ - private Receiver info = ids.create(CommandType.PEEK); // TaskInfo - - public CheckExistTask(){ - info.setKey("_TASKINFO"); - } - - @Override - public void run() { - new CreateSchedule(); - - } - -} diff -r e5d2141af6c2 -r d3442b23e3df src/main/java/alice/topology/manager/keeparive/CreateSchedule.java --- a/src/main/java/alice/topology/manager/keeparive/CreateSchedule.java Mon Dec 15 19:16:20 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -package alice.topology.manager.keeparive; - -import alice.codesegment.CodeSegment; -import alice.datasegment.CommandType; -import alice.datasegment.Receiver; - -public class CreateSchedule extends CodeSegment{ - private Receiver info1 = ids.create(CommandType.TAKE); // WaitingList - private Receiver info2 = ids.create(CommandType.TAKE); // TaskInfo - - public CreateSchedule(){ - info1.setKey("_WAITINGLIST"); - info2.setKey("_TASKINFO"); - } - - @Override - public void run() { - ListManager manager = info1.asClass(ListManager.class); - TaskInfo newTask = info2.asClass(TaskInfo.class); - manager.addTask(newTask); - ods.update("_WAITINGLIST", manager); - new CheckExistTask(); - } -} diff -r e5d2141af6c2 -r d3442b23e3df src/main/java/alice/topology/manager/keeparive/CreateTask.java --- a/src/main/java/alice/topology/manager/keeparive/CreateTask.java Mon Dec 15 19:16:20 2014 +0900 +++ b/src/main/java/alice/topology/manager/keeparive/CreateTask.java Mon Dec 15 20:04:04 2014 +0900 @@ -1,33 +1,34 @@ package alice.topology.manager.keeparive; import java.util.List; + import alice.codesegment.CodeSegment; import alice.datasegment.CommandType; import alice.datasegment.Receiver; public class CreateTask extends CodeSegment{ private Receiver info = ids.create(CommandType.PEEK); + private Receiver info1 = ids.create(CommandType.TAKE); public CreateTask(){ info.setKey("_CLIST"); + info1.setKey("_WAITINGLIST"); } @Override public void run(){ @SuppressWarnings("unchecked") - List list = info.asClass(List.class); + List clist = info.asClass(List.class); + ListManager list = info1.asClass(ListManager.class); int i = 5; - for (String manager : list){ + for (String manager : clist){ TaskInfo task = new TaskInfo(TaskType.PING); task.setInfo(manager, "_FORM_"+manager, i * 1000); - ods.put("_TASKINFO", task); + list.addTask(task); i +=5; } - - TaskInfo task = new TaskInfo(TaskType.CREATE); - task.setSleepTime((i + 15) * 1000); - ods.put("_TASKINFO", task); + ods.update(info1.key, list); } } diff -r e5d2141af6c2 -r d3442b23e3df src/main/java/alice/topology/manager/keeparive/StartKeepAlive.java --- a/src/main/java/alice/topology/manager/keeparive/StartKeepAlive.java Mon Dec 15 19:16:20 2014 +0900 +++ b/src/main/java/alice/topology/manager/keeparive/StartKeepAlive.java Mon Dec 15 20:04:04 2014 +0900 @@ -8,10 +8,8 @@ public void run() { ods.put("_WAITINGLIST", new ListManager()); TaskExecuter.getInstance().setKey(); - TaskInfo task = new TaskInfo(TaskType.CREATE); - task.setSleepTime(0); - ods.put("_TASKINFO", task); - new CheckExistTask(); + + //new CheckExistTask(); } diff -r e5d2141af6c2 -r d3442b23e3df src/main/java/alice/topology/manager/keeparive/TaskExecuter.java --- a/src/main/java/alice/topology/manager/keeparive/TaskExecuter.java Mon Dec 15 19:16:20 2014 +0900 +++ b/src/main/java/alice/topology/manager/keeparive/TaskExecuter.java Mon Dec 15 20:04:04 2014 +0900 @@ -28,18 +28,21 @@ public synchronized void run() { ListManager list = info.asClass(ListManager.class); if (list.getTaskList().size() == 0){ + TaskInfo task = new TaskInfo(TaskType.CREATE); + task.setSleepTime(3000 + remainingTime); + list.addTask(task); + ods.update("_WAITINGLIST", list); remainingTime = 0; - ods.update("_WAITINGLIST", list); } else { + list.show(); nowTask = list.getTaskList().poll(); - ods.update("_WAITINGLIST", list); - + if (nowTask.getType() !=TaskType.PING) + ods.update("_WAITINGLIST", list); if (skipFlag) { skipFlag = false; nowTask.setSleepTime(remainingTime + nowTask.getSleepTime()); remainingTime = 0; } - list.show(); startTime = System.currentTimeMillis(); if (nowTask.getSleepTime() != 0){ sleepFlag = true; @@ -57,7 +60,8 @@ ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey()); TaskInfo task = new TaskInfo(TaskType.CLOSE); task.setInfo(nowTask.getManagerKey(), 10 * 1000); - ods.put("_TASKINFO", task); + list.addTask(task); + ods.update("_WAITINGLIST", list); new RespondPing(nowTask.getReturnKey()); } else if (nowTask.getType() == TaskType.CLOSE) { // no response from the Remote DataSegment. So close this connection.