diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2022-01-27 18:45:04 +0100 |
---|---|---|
committer | Ola Aunrønning <olaa@verizonmedia.com> | 2022-01-27 19:09:46 +0100 |
commit | 68c1ce17f179e428d41de19e8a9b160d6f2288bc (patch) | |
tree | 0cded612b3f16717d447aad5a366f5d10974189d /controller-server/src/main | |
parent | 72e7534a3fdc7d4a535302ed77af37c7a0708086 (diff) |
Keep one old version. Don't keep hash of entire package.
Diffstat (limited to 'controller-server/src/main')
5 files changed, 14 insertions, 13 deletions
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 f0c85e7eeb8..54027d93d77 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 @@ -453,9 +453,15 @@ public class ApplicationController { .map(Deployment::applicationVersion) .collect(Collectors.toSet()); - // Remove any version not deployed anywhere - for (ApplicationVersion version : application.get().versions()) { - if (!existingVersions.contains(version)) application = application.withoutVersion(version); + var oldVersions = application.get().versions() + .stream() + .filter(version -> !existingVersions.contains(version)) + .sorted() + .collect(Collectors.toList()); + + // Remove any version not deployed anywhere - but keep one + for (int i = 0; i < oldVersions.size() - 1; i++) { + application = application.withoutVersion(oldVersions.get(i)); } store(application); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java index 2ffe7e3ddee..f5910f2a98e 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java @@ -221,9 +221,9 @@ public class ApplicationPackage { // Hashes all files that require a deployment to be forwarded to configservers private String calculateBundleHash() { - Predicate<String> entryMatcher = name -> !name.contains(deploymentFile) && !name.contains(buildMetaFile); + Predicate<String> entryMatcher = name -> !name.endsWith(deploymentFile) && !name.endsWith(buildMetaFile); SortedMap<String, Long> entryCRCs = ZipStreamReader.getEntryCRCs(new ByteArrayInputStream(zippedContent), entryMatcher); - return Hashing.sha1().hashInt(entryCRCs.hashCode()).toString(); + return String.valueOf(entryCRCs.hashCode()); } 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 fb722ab7193..1051df2cd1c 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 @@ -440,7 +440,6 @@ public class JobController { sourceUrl, revision.map(SourceRevision::commit), false, - Optional.of(applicationPackage.hash()), Optional.of(applicationPackage.bundleHash()))); byte[] diff = application.get().latestVersion() .map(v -> v.buildNumber().getAsLong()) @@ -514,7 +513,7 @@ public class JobController { long build = 1 + lastRun.map(run -> run.versions().targetApplication().buildNumber().orElse(0)).orElse(0L); ApplicationVersion version = ApplicationVersion.from(Optional.empty(), build, Optional.empty(), Optional.empty(), - Optional.empty(), Optional.empty(), Optional.empty(), true, Optional.empty(), Optional.empty()); + Optional.empty(), Optional.empty(), Optional.empty(), true, Optional.empty()); byte[] diff = lastRun.map(run -> run.versions().targetApplication()) .map(prevVersion -> ApplicationPackageDiff.diff(new ApplicationPackage(controller.applications().applicationStore().get(deploymentId, prevVersion)), applicationPackage)) diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java index 8e117876b5a..8fc28588662 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java @@ -113,7 +113,6 @@ public class ApplicationSerializer { private static final String compileVersionField = "compileVersion"; private static final String buildTimeField = "buildTime"; private static final String sourceUrlField = "sourceUrl"; - private static final String applicationHashField = "applicationHash"; private static final String bundleHashField = "bundleHash"; private static final String lastQueriedField = "lastQueried"; private static final String lastWrittenField = "lastWritten"; @@ -443,10 +442,9 @@ public class ApplicationSerializer { Optional<String> sourceUrl = SlimeUtils.optionalString(object.field(sourceUrlField)); Optional<String> commit = SlimeUtils.optionalString(object.field(commitField)); boolean deployedDirectly = object.field(deployedDirectlyField).asBool(); - Optional<String> applicationPackageHash = SlimeUtils.optionalString(object.field(applicationHashField)); Optional<String> bundleHash = SlimeUtils.optionalString(object.field(bundleHashField)); - return new ApplicationVersion(sourceRevision, applicationBuildNumber, authorEmail, compileVersion, buildTime, sourceUrl, commit, deployedDirectly, applicationPackageHash, bundleHash); + return new ApplicationVersion(sourceRevision, applicationBuildNumber, authorEmail, compileVersion, buildTime, sourceUrl, commit, deployedDirectly, bundleHash); } private Optional<SourceRevision> sourceRevisionFromSlime(Inspector object) { diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java index 657625c812c..cd55b689c3c 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RunSerializer.java @@ -96,7 +96,6 @@ class RunSerializer { private static final String sourceUrlField = "sourceUrl"; private static final String buildField = "build"; private static final String sourceField = "source"; - private static final String applicationHashField = "applicationHash"; private static final String bundleHashField = "bundleHash"; private static final String lastTestRecordField = "lastTestRecord"; private static final String lastVespaLogTimestampField = "lastVespaLogTimestamp"; @@ -181,11 +180,10 @@ class RunSerializer { Optional<String> sourceUrl = SlimeUtils.optionalString(versionObject.field(sourceUrlField)); Optional<String> commit = SlimeUtils.optionalString(versionObject.field(commitField)); boolean deployedDirectly = versionObject.field(deployedDirectlyField).asBool(); - Optional<String> applicationPackageHash = SlimeUtils.optionalString(versionObject.field(applicationHashField)); Optional<String> bundleHash = SlimeUtils.optionalString(versionObject.field(bundleHashField)); return new ApplicationVersion(source, OptionalLong.of(buildNumber), authorEmail, - compileVersion, buildTime, sourceUrl, commit, deployedDirectly, applicationPackageHash, bundleHash); + compileVersion, buildTime, sourceUrl, commit, deployedDirectly, bundleHash); } // Don't change this — introduce a separate array instead. |