aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2023-05-22 18:08:38 +0200
committerGitHub <noreply@github.com>2023-05-22 18:08:38 +0200
commit7523c73caae4139d64311333326bcbb0fb7b984f (patch)
treedf973ca2e005e6a1ef5f2dee5241295cc672d97a /controller-server
parente958dd0795d498ba7b39fc166eaf228b8713dadd (diff)
parent59596dbdc4ef864056a865468d9f3d27c212ea09 (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.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..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. */