diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2022-03-07 21:19:32 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2022-03-07 21:19:32 +0100 |
commit | 176516af5d1c65cb87cab6d3c6b868b5318e6112 (patch) | |
tree | d0c8f4196c65612a082003dda5ea9408cb13a221 | |
parent | 4948c924d6430463538ed86dba084f6bf9d9a8df (diff) |
Prune packages and versions the same way
3 files changed, 11 insertions, 18 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java index ad63dd5b481..225ffacb1ad 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/Application.java @@ -216,6 +216,7 @@ public class Application { public Optional<ApplicationVersion> oldestDeployedApplication() { return productionDeployments().values().stream().flatMap(List::stream) .map(Deployment::applicationVersion) + .filter(version -> ! version.isUnknown() && ! version.isDeployedDirectly()) .min(Comparator.naturalOrder()); } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java index 88df49ad3ab..5c3c43461dc 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java @@ -446,21 +446,17 @@ public class ApplicationController { controller.notificationsDb().removeNotifications(notification.source()); } - var oldestDeployedVersion = application.get().productionDeployments().values().stream() - .flatMap(List::stream) - .map(Deployment::applicationVersion) - .filter(version -> ! version.isDeployedDirectly()) - .min(naturalOrder()) - .orElse(ApplicationVersion.unknown); - - var olderVersions = application.get().versions().stream() - .filter(version -> version.compareTo(oldestDeployedVersion) < 0) - .sorted() - .collect(Collectors.toList()); + ApplicationVersion oldestDeployedVersion = application.get().oldestDeployedApplication() + .orElse(ApplicationVersion.unknown); + + List<ApplicationVersion> olderVersions = application.get().versions().stream() + .filter(version -> version.compareTo(oldestDeployedVersion) < 0) + .sorted() + .collect(Collectors.toList()); // Remove any version not deployed anywhere - but keep one - for (int i = 0; i < olderVersions.size() - 1; i++) { - application = application.withoutVersion(olderVersions.get(i)); + for (ApplicationVersion version : olderVersions) { + application = application.withoutVersion(version); } store(application); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java index 66a30050f7a..647b52f7d51 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java @@ -607,11 +607,7 @@ public class JobController { private void prunePackages(TenantAndApplicationId id) { controller.applications().lockApplicationIfPresent(id, application -> { - application.get().productionDeployments().values().stream() - .flatMap(List::stream) - .map(Deployment::applicationVersion) - .filter(version -> ! version.isUnknown() && ! version.isDeployedDirectly()) - .min(naturalOrder()) + application.get().oldestDeployedApplication() .ifPresent(oldestDeployed -> { controller.applications().applicationStore().prune(id.tenant(), id.application(), oldestDeployed); controller.applications().applicationStore().pruneTesters(id.tenant(), id.application(), oldestDeployed); |