From 084ab8939ccadf6d8cb6742c3b863a50635e1e86 Mon Sep 17 00:00:00 2001 From: Allen Bai Date: Jun 09 2020 19:41:37 +0000 Subject: coreos-download: use `parent-pkgdiff` directly from metadata Previously we need to calculate the pkg diff between releases manually from the existing build metadata. However, this will not be the case after the build metadata includes parent-pkgdiff field which already calculates the pkgdiffs between releases using coreos-assembler. In the future, we should be able to completely remove the manual calculation logic from frontend after a few releases and revert back to the same logic as fedora-coreos-browser. Reference: https://github.com/coreos/coreos-assembler/pull/1507 Signed-off-by: Allen Bai --- diff --git a/sites/static/js/coreos-release-notes.js b/sites/static/js/coreos-release-notes.js index 94c5184..7c4f235 100644 --- a/sites/static/js/coreos-release-notes.js +++ b/sites/static/js/coreos-release-notes.js @@ -93,11 +93,21 @@ function gatherMetadataBtwReleases(currentReleaseIdx, targetReleaseIdx, config) return Promise.all(metaPromiseList); } - for (let i = currentReleaseIdx; i < targetReleaseIdx; i++) { - let metaPromise = fetchBuildMeta(base, builds[i], legacy); - metaPromiseList.push(metaPromise); - } - return Promise.all(metaPromiseList); + // check if `parent-pkgdiff` field is present, if present there's no need to manually + // calculate pkgdiff here, use the field directly + // xref: https://github.com/coreos/fedora-coreos-pipeline/pull/247#event-3413080221 + let metaPromise = fetchBuildMeta(base, builds[currentReleaseIdx], legacy); + metaPromiseList.push(metaPromise); + return Promise.all(metaPromiseList) + .then(metaList => { + if (metaList[0][1]['parent-pkgdiff'] == null) { + for (let i = currentReleaseIdx + 1; i < targetReleaseIdx; i++) { + let metaPromise = fetchBuildMeta(base, builds[i], legacy); + metaPromiseList.push(metaPromise); + } + } + return Promise.all(metaPromiseList); + }); } // Get an accumulated pkgdiff given a list of metadata @@ -258,7 +268,10 @@ function fetchBuild(base, legacy, builds, fromIdx, toIdx) { return gatherMetadataBtwReleases(fromIdx, toIdx, config).then(metaList => { let build = builds[fromIdx]; let [basearch, meta] = metaList[0]; - meta.pkgdiff = getPkgDiffFromMetaList(metaList); + // check if `parent-pkgdiff` field is present, if present there's no need to manually + // calculate pkgdiff here, use the field directly + // xref: https://github.com/coreos/fedora-coreos-pipeline/pull/247#event-3413080221 + meta.pkgdiff = meta['parent-pkgdiff'] == null ? getPkgDiffFromMetaList(metaList) : meta['parent-pkgdiff']; sortPkgDiff(meta); build.meta = meta; // and fetch extra commit metadata in async