summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-05-22 16:22:20 +0200
committerjonmv <venstad@gmail.com>2023-05-22 16:22:20 +0200
commit00bd5f707efe05469890ab7cc5389883628d5641 (patch)
tree2f375f3a1118fff3d02bc3553f8e0e2a00cfebf4 /controller-server
parent77899fda9ea5cc8a3f08d3c61d5ce2047205b123 (diff)
Only prune revision meta data after packages are deleted
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RevisionHistory.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RevisionHistory.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RevisionHistory.java
index 72fff51d6b2..149d6abfbb8 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RevisionHistory.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/RevisionHistory.java
@@ -16,9 +16,11 @@ import java.util.NavigableMap;
import java.util.Optional;
import java.util.OptionalLong;
import java.util.TreeMap;
+import java.util.function.Predicate;
import static ai.vespa.validation.Validation.require;
import static java.util.Collections.emptyNavigableMap;
+import static java.util.function.Predicate.not;
/**
* History of application revisions for an {@link com.yahoo.vespa.hosted.controller.Application}.
@@ -58,10 +60,12 @@ public class RevisionHistory {
return new RevisionHistory(production, development);
}
- /** Returns a copy of this without any production revisions older than the given. */
+ /** Returns a copy of this where any obsolete production revisions older than the given one are removed. */
public RevisionHistory withoutOlderThan(RevisionId id) {
if (production.headMap(id).isEmpty()) return this;
- return new RevisionHistory(production.tailMap(id, true), development);
+ NavigableMap<RevisionId, ApplicationVersion> production = new TreeMap<>(this.production);
+ production.headMap(id).values().removeIf(not(ApplicationVersion::hasPackage));
+ return new RevisionHistory(production, development);
}
/** Returns a copy of this without any development revisions older than the given. */