Skip to content

Commit c56c210

Browse files
committed
add impl to delete unfinished tasks (#741)
this should be used with care though: if an unfinished task (i.e. the response did not arrive yet) is deleted prematurely and the response actually would arrive later, we would not know what to do about/with it. so, use "Delete Unfinished" only if you are sure that these tasks are just zombies.
1 parent 6e75693 commit c56c210

File tree

4 files changed

+23
-4
lines changed

4 files changed

+23
-4
lines changed

src/main/java/de/rwth/idsg/steve/repository/TaskStore.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ public interface TaskStore {
3232
CommunicationTask get(Integer taskId);
3333
Integer add(CommunicationTask task);
3434
void clearFinished();
35+
void clearUnfinished();
3536
}

src/main/java/de/rwth/idsg/steve/repository/impl/TaskStoreImpl.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@
2626
import org.springframework.stereotype.Repository;
2727

2828
import java.util.List;
29+
import java.util.Map;
2930
import java.util.concurrent.ConcurrentHashMap;
3031
import java.util.concurrent.atomic.AtomicInteger;
32+
import java.util.function.Predicate;
3133
import java.util.stream.Collectors;
3234

3335
/**
@@ -79,9 +81,18 @@ public Integer add(CommunicationTask task) {
7981

8082
@Override
8183
public void clearFinished() {
84+
removeTasks(entry -> entry.getValue().isFinished());
85+
}
86+
87+
@Override
88+
public void clearUnfinished() {
89+
removeTasks(entry -> !entry.getValue().isFinished());
90+
}
91+
92+
private void removeTasks(Predicate<Map.Entry<Integer, CommunicationTask>> filterPredicate) {
8293
lookupTable.entrySet()
8394
.stream()
84-
.filter(entry -> entry.getValue().isFinished())
95+
.filter(filterPredicate)
8596
.forEach(entry -> lookupTable.remove(entry.getKey()));
8697
}
8798
}

src/main/java/de/rwth/idsg/steve/web/controller/TaskController.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,18 @@ public String getOverview(Model model) {
5959
return "tasks";
6060
}
6161

62-
@RequestMapping(method = RequestMethod.POST)
62+
@RequestMapping(params = "finished", method = RequestMethod.POST)
6363
public String clearFinished(Model model) {
6464
taskStore.clearFinished();
6565
return getOverview(model);
6666
}
6767

68+
@RequestMapping(params = "unfinished", method = RequestMethod.POST)
69+
public String clearUnfinished(Model model) {
70+
taskStore.clearUnfinished();
71+
return getOverview(model);
72+
}
73+
6874
@RequestMapping(value = TASK_ID_PATH, method = RequestMethod.GET)
6975
public String getTaskDetails(@PathVariable("taskId") Integer taskId, Model model) {
7076
CommunicationTask r = taskStore.get(taskId);

src/main/resources/webapp/WEB-INF/views/tasks.jsp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
Request Tasks <a class="tooltip" href="#"><img src="${ctxPath}/static/images/info.png" style="vertical-align:middle"><span>Click on Task IDs for detailed task information.</span></a>
3030
</span></section>
3131
<form:form action="${ctxPath}/manager/operations/tasks">
32-
<input type="submit" value="Delete Finished"/>
32+
<input type="submit" name="finished" value="Delete Finished"/>
33+
<input type="submit" name="unfinished" value="Delete Unfinished"/>
3334
</form:form>
3435
<br>
3536
<table class="res">
@@ -54,4 +55,4 @@
5455
</tbody>
5556
</table>
5657
</div>
57-
<%@ include file="00-footer.jsp" %>
58+
<%@ include file="00-footer.jsp" %>

0 commit comments

Comments
 (0)