in src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java [245:262]
private void pruneNoLongerPending(Set<String> prunableTaskNames) {
// Queue tasks have wrappers around them so workQueue.getTasks() does not return the PushOnes.
// We also cannot access them by taskId since PushOnes don't have a taskId, they do have
// an Id, but it is not the id assigned to the task in the queues. The tasks in the queue
// do use the same name as returned by toString() though, so that can be used to correlate
// PushOnes with queue tasks despite their wrappers.
for (WorkQueue.Task<?> task : workQueue.getTasks()) {
WorkQueue.Task.State state = task.getState();
if (state == WorkQueue.Task.State.SLEEPING || state == WorkQueue.Task.State.READY) {
if (task instanceof WorkQueue.ProjectTask) {
if (prunableTaskNames.contains(task.toString())) {
repLog.atFine().log("Pruning externally completed task: %s", task);
task.cancel(false);
}
}
}
}
}