diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2023-05-22 18:08:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-22 18:08:38 +0200 |
commit | 7523c73caae4139d64311333326bcbb0fb7b984f (patch) | |
tree | df973ca2e005e6a1ef5f2dee5241295cc672d97a /controller-server | |
parent | e958dd0795d498ba7b39fc166eaf228b8713dadd (diff) | |
parent | 59596dbdc4ef864056a865468d9f3d27c212ea09 (diff) |
Merge pull request #27174 from vespa-engine/jonmv/keep-revision-history-while-we-have-packages
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..a8dd1c442fe 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 production revisions without packages, and 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. */ |