diff options
-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. */ |