# HG changeset patch # User sugi # Date 1396272532 -32400 # Node ID d35ff0f588e876c63ad87d0559aa91912e3d65fd # Parent 35b4e24e3e021dba2d98f5f948b9f874e554c877 keep alive may work... but bug exist. diff -r 35b4e24e3e02 -r d35ff0f588e8 src/alice/topology/manager/keeparive/CheckExistTask.java --- a/src/alice/topology/manager/keeparive/CheckExistTask.java Mon Mar 24 23:52:20 2014 +0900 +++ b/src/alice/topology/manager/keeparive/CheckExistTask.java Mon Mar 31 22:28:52 2014 +0900 @@ -14,6 +14,7 @@ @Override public void run() { new CreateSchedule(); + } } diff -r 35b4e24e3e02 -r d35ff0f588e8 src/alice/topology/manager/keeparive/ListManager.java --- a/src/alice/topology/manager/keeparive/ListManager.java Mon Mar 24 23:52:20 2014 +0900 +++ b/src/alice/topology/manager/keeparive/ListManager.java Mon Mar 31 22:28:52 2014 +0900 @@ -13,9 +13,6 @@ TaskExecuter exec = TaskExecuter.getInstance(); TaskInfo nowTask = exec.getNowTask(); if (nowTask == null) { // active task is nothing - long remainingTime = exec.initRemainingTime(); - TaskInfo task = list.getFirst(); - task.setSleepTime(task.getSleepTime() + remainingTime); add(newInfo); } else { long remainingTime = exec.getRemainingTime(); @@ -32,6 +29,7 @@ add(newInfo); } } + show(); } private void add(TaskInfo newInfo){ @@ -52,8 +50,12 @@ } list.add(cnt, newInfo); } - - public void showList(){ + + public void deleteTask(TaskInfo task){ + // delete task + } + + public void show(){ if (TaskExecuter.getInstance().getNowTask()!=null){ System.out.print("NOW | "); System.out.print(TaskExecuter.getInstance().getNowTask().getSleepTime()); diff -r 35b4e24e3e02 -r d35ff0f588e8 src/alice/topology/manager/keeparive/ListManagerTest.java --- a/src/alice/topology/manager/keeparive/ListManagerTest.java Mon Mar 24 23:52:20 2014 +0900 +++ b/src/alice/topology/manager/keeparive/ListManagerTest.java Mon Mar 31 22:28:52 2014 +0900 @@ -22,7 +22,7 @@ task.setInfo(name, "_TEST", i * 1000); System.out.println(task.getSleepTime()); manager.addTask(task); - manager.showList(); + manager.show(); i +=1; } TaskExecuter.getInstance().skip(); @@ -32,7 +32,7 @@ task.setInfo(name, "_TEST", i * 1000); System.out.println(task.getSleepTime()); manager.addTask(task); - manager.showList(); + manager.show(); i +=1; } diff -r 35b4e24e3e02 -r d35ff0f588e8 src/alice/topology/manager/keeparive/RemoveTask.java --- a/src/alice/topology/manager/keeparive/RemoveTask.java Mon Mar 24 23:52:20 2014 +0900 +++ b/src/alice/topology/manager/keeparive/RemoveTask.java Mon Mar 31 22:28:52 2014 +0900 @@ -15,20 +15,28 @@ @Override public void run() { + System.out.println("cccc"); ListManager list = info1.asClass(ListManager.class); // explicit cast TaskInfo task = info2.asClass(TaskInfo.class); TaskExecuter exec = TaskExecuter.getInstance(); if (exec.compareNowTask(task)){ // case: remove task is state countdown. + System.out.println("delete task"); exec.skip(); } else { + boolean removeFlag = false; // case: remove task is still in the waiting queue. for (TaskInfo t: list.getTaskList()){ if (t.getType().equals(task.getType())){ list.getTaskList().remove(t); + System.out.println("delete task"); + removeFlag = true; break; } } + if (!removeFlag){ + ods.put("_REMOVETASK", task); + } } ods.update("_WAITINGLIST", list); } diff -r 35b4e24e3e02 -r d35ff0f588e8 src/alice/topology/manager/keeparive/RespondPing.java --- a/src/alice/topology/manager/keeparive/RespondPing.java Mon Mar 24 23:52:20 2014 +0900 +++ b/src/alice/topology/manager/keeparive/RespondPing.java Mon Mar 31 22:28:52 2014 +0900 @@ -17,8 +17,8 @@ public void run() { RespondData d = respond.asClass(RespondData.class); System.out.print("ping from "+d.from); - System.out.println(" Recieved time "+d.time); - if (pingedTime - d.time > 60 * 1000){ + System.out.println(" Recieved time "+(d.time - pingedTime)); + if (d.time - pingedTime > 60 * 1000){ // need check, this connection is alive. may be close DataSegment.get(d.from).close(); } else { @@ -29,15 +29,16 @@ task.setInfo(d.from, null, 0); if (exec.compareNowTask(task)){ // case: remove task is state countdown. - exec.skip(); // countdown + exec.skip(); // countdown + System.out.println("delete task"); } else { // case: remove task is still in the waiting queue. ods.put("_REMOVETASK",task); new RemoveTask(); } - TaskInfo task2 = new TaskInfo(TaskType.PING); - task2.setInfo(d.from, "_FORM_"+d.from, 5 * 1000); - ods.put("_TASKINFO", task2); + //TaskInfo task2 = new TaskInfo(TaskType.PING); + //task2.setInfo(d.from, "_FORM_"+d.from, 5 * 1000); + //ods.put("_TASKINFO", task2); } } } diff -r 35b4e24e3e02 -r d35ff0f588e8 src/alice/topology/manager/keeparive/TaskExecuter.java --- a/src/alice/topology/manager/keeparive/TaskExecuter.java Mon Mar 24 23:52:20 2014 +0900 +++ b/src/alice/topology/manager/keeparive/TaskExecuter.java Mon Mar 31 22:28:52 2014 +0900 @@ -25,7 +25,7 @@ @Override public synchronized void run() { - ListManager list = info.asClass(ListManager.class); + ListManager list = info.asClass(ListManager.class); if (list.getTaskList().size() == 0){ if (remainingTime !=0){ TaskInfo info = new TaskInfo(TaskType.SKIP); @@ -53,28 +53,37 @@ e.printStackTrace(); } } - setNowTask(null); - startTime = 0; + if (!skipFlag){ - // ping or close - /* - if (nowTask.getType() == TaskType.PING) { - ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey()); - TaskInfo task = new TaskInfo(TaskType.CLOSE); - task.setInfo(nowTask.getManagerKey(), 60 * 1000); - ods.put("_TASKINFO", task); - new RespondPing(nowTask.getReturnKey()); - } else { - // no response from the Remote DataSegment. So close this connection. - DataSegment.get(nowTask.getManagerKey()).close(); - } - */ + execTask(); } + setNowTask(null); + startTime = 0; } setKey(); } + private synchronized void execTask(){ + // ping or close + System.out.println("aaaa"); + if (nowTask.getType() == TaskType.PING) { + System.out.println("bbb"); + ods.ping(nowTask.getManagerKey(), nowTask.getReturnKey()); + TaskInfo task = new TaskInfo(TaskType.CLOSE); + task.setInfo(nowTask.getManagerKey(), 10 * 1000); + ods.put("_TASKINFO", task); + new RespondPing(nowTask.getReturnKey()); + } else if (nowTask.getType() == TaskType.CLOSE) { + // no response from the Remote DataSegment. So close this connection. + //DataSegment.get(nowTask.getManagerKey()).close(); + System.out.println("CLOSE"); + + nowTask.show(); + System.exit(0); + } + } + public synchronized void skip() { skipFlag = true; if (startTime == 0){ @@ -82,8 +91,10 @@ } else { remainingTime = nowTask.getSleepTime() - (System.currentTimeMillis() - startTime); } + System.out.println(remainingTime); nowTask = null; notify(); + System.out.println(nowTask); } public synchronized void ignore() { @@ -93,7 +104,7 @@ notify(); } - public TaskInfo getNowTask() { + public synchronized TaskInfo getNowTask() { return nowTask; } @@ -113,12 +124,6 @@ } } - public long initRemainingTime() { - long time = remainingTime; - remainingTime = 0; - return time; - } - public boolean compareNowTask(TaskInfo task) { if (nowTask != null){ if (nowTask.getType().equals(task.getType()) diff -r 35b4e24e3e02 -r d35ff0f588e8 src/alice/topology/manager/keeparive/TaskInfo.java --- a/src/alice/topology/manager/keeparive/TaskInfo.java Mon Mar 24 23:52:20 2014 +0900 +++ b/src/alice/topology/manager/keeparive/TaskInfo.java Mon Mar 31 22:28:52 2014 +0900 @@ -46,4 +46,11 @@ task.setInfo(managerKey, returnKey, sleepTime); return task; } + + public void show(){ + System.out.print(type); + System.out.print(" "+ this.sleepTime); + System.out.print(" "+ this.managerKey); + System.out.println(" "+ this.returnKey); + } }