diff options
author | jonmv <venstad@gmail.com> | 2023-05-22 16:22:20 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-05-22 16:22:20 +0200 |
commit | 00bd5f707efe05469890ab7cc5389883628d5641 (patch) | |
tree | 2f375f3a1118fff3d02bc3553f8e0e2a00cfebf4 /controller-server | |
parent | 77899fda9ea5cc8a3f08d3c61d5ce2047205b123 (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.java | 8 |
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. */ |