# HG changeset patch # User one # Date 1387877413 -32400 # Node ID 806cc010a5bd22512c5d570e96c50744dcf8e651 # Parent d746c4486287bcf369eb73bd7ea6d418fcc53267 remove enqueue bug. diff -r d746c4486287 -r 806cc010a5bd src/alice/topology/manager/keeparive/CreateSchedule.java --- a/src/alice/topology/manager/keeparive/CreateSchedule.java Mon Dec 23 17:13:16 2013 +0900 +++ b/src/alice/topology/manager/keeparive/CreateSchedule.java Tue Dec 24 18:30:13 2013 +0900 @@ -17,6 +17,7 @@ public void run() { ListManager manager = info1.asClass(ListManager.class); TaskInfo newTask = info2.asClass(TaskInfo.class); + System.out.println("addTask"); manager.addTask(newTask); ods.update("_WAITINGLIST", manager); new CheckExistTask(); diff -r d746c4486287 -r 806cc010a5bd src/alice/topology/manager/keeparive/ListManager.java --- a/src/alice/topology/manager/keeparive/ListManager.java Mon Dec 23 17:13:16 2013 +0900 +++ b/src/alice/topology/manager/keeparive/ListManager.java Tue Dec 24 18:30:13 2013 +0900 @@ -10,8 +10,24 @@ } public void addTask(TaskInfo newInfo){ + TaskExecuter exec = TaskExecuter.getInstance(); + if (list.isEmpty()) { - list.add(newInfo); + if (exec.getNowTask() == null){ // active task is nothing + list.add(newInfo); + } else { + TaskInfo nowTask = exec.getNowTask(); + long remainingTime = nowTask.getSleepTime() - (System.currentTimeMillis() - exec.getTime()); + if (remainingTime < newInfo.getSleepTime()){ + // newTask is longer than active task. + newInfo.setSleepTime(remainingTime - newInfo.getSleepTime()); + list.add(newInfo); + } else { + // active task is longer than newTask. + list.add(nowTask); + addTask(newInfo); + } + } } else { int cnt = 0; for (TaskInfo info : list){ @@ -28,9 +44,7 @@ } cnt++; } - list.add(cnt, newInfo); - } } diff -r d746c4486287 -r 806cc010a5bd src/alice/topology/manager/keeparive/RemoveTask.java --- a/src/alice/topology/manager/keeparive/RemoveTask.java Mon Dec 23 17:13:16 2013 +0900 +++ b/src/alice/topology/manager/keeparive/RemoveTask.java Tue Dec 24 18:30:13 2013 +0900 @@ -15,7 +15,6 @@ @Override public void run() { - System.out.println(); ListManager list = info1.asClass(ListManager.class); // explicit cast TaskInfo task = info2.asClass(TaskInfo.class); TaskExecuter exec = TaskExecuter.getInstance(); diff -r d746c4486287 -r 806cc010a5bd src/alice/topology/manager/keeparive/RespondPing.java --- a/src/alice/topology/manager/keeparive/RespondPing.java Mon Dec 23 17:13:16 2013 +0900 +++ b/src/alice/topology/manager/keeparive/RespondPing.java Tue Dec 24 18:30:13 2013 +0900 @@ -22,7 +22,6 @@ // need check, this connection is alive. may be close DataSegment.get(d.from).close(); } else { - System.out.println("alive"); // if nowTask is close d.from's socket cancel. // if not remove close task in the Queue. TaskExecuter exec = TaskExecuter.getInstance(); diff -r d746c4486287 -r 806cc010a5bd src/alice/topology/manager/keeparive/TaskExecuter.java --- a/src/alice/topology/manager/keeparive/TaskExecuter.java Mon Dec 23 17:13:16 2013 +0900 +++ b/src/alice/topology/manager/keeparive/TaskExecuter.java Tue Dec 24 18:30:13 2013 +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){ remainingTime = 0; ods.update("_WAITINGLIST", list); @@ -36,8 +36,10 @@ ods.update("_WAITINGLIST", list); if (skipFlag){ nowTask.setSleepTime(nowTask.getSleepTime() + remainingTime); + skipFlag = false; } startTime = System.currentTimeMillis(); + System.out.println(nowTask.getSleepTime()+" "+nowTask.getType()); if (nowTask.getSleepTime()!=0){ try { this.wait(nowTask.getSleepTime());