Skip to content

Commit 13f35d9

Browse files
authored
Update Precacher to No Longer Fatally Error by Default [2.0] (#14014)
1 parent 94f44bd commit 13f35d9

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

toolkit/Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ RPMS_DIR ?= $(OUT_DIR)/RPMS
120120
SRPMS_DIR ?= $(OUT_DIR)/SRPMS
121121
IMAGES_DIR ?= $(OUT_DIR)/images
122122

123+
# Turning on non-fatal mode by default. The precacher is not critical to the build
124+
# if the user is depending on failures from the precacher, it can be turned off with this option or with the tool directly.
125+
PRECACHER_NON_FATAL ?= y
126+
123127
# External source server
124128
SOURCE_URL ?= https://azurelinuxsrcstorage.blob.core.windows.net/sources/core
125129

toolkit/scripts/precache.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ $(STATUS_FLAGS_DIR)/precache.flag: $(go-precacher) $(chroot_worker) $(rpms_snaps
4949
$(if $(filter y,$(ENABLE_CPU_PROFILE)),--enable-cpu-prof) \
5050
$(if $(filter y,$(ENABLE_MEM_PROFILE)),--enable-mem-prof) \
5151
$(if $(filter y,$(ENABLE_TRACE)),--enable-trace) \
52+
$(if $(filter y,$(PRECACHER_NON_FATAL)),--non-fatal-mode) \
5253
--timestamp-file=$(TIMESTAMP_DIR)/precacher.jsonl && \
5354
if [ ! -f $@ ] || [ -s "$(precache_downloaded_files)" ]; then \
5455
touch $@; \

toolkit/tools/precacher/precacher.go

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ var (
6262
buildDir = app.Flag("worker-dir", "Directory to store chroot while running repo query.").Required().String()
6363

6464
concurrentNetOps = app.Flag("concurrent-net-ops", "Number of concurrent network operations to perform.").Default(defaultNetOpsCount).Uint()
65+
nonFatalMode = app.Flag("non-fatal-mode", "Run in non-fatal mode, where errors are logged but do not cause the program to exit with a non-zero code.").Bool()
6566
)
6667

6768
func main() {
@@ -80,11 +81,22 @@ func main() {
8081

8182
rpmSnapshot, err := rpmSnapshotFromFile(*snapshot)
8283
if err != nil {
83-
logger.PanicOnError(err)
84+
if *nonFatalMode {
85+
logger.Log.Errorf("%s", err)
86+
return
87+
} else {
88+
logger.PanicOnError(err)
89+
}
90+
8491
}
8592
packagesAvailableFromRepos, err := repoutils.GetAllRepoData(*repoUrls, *repoFiles, *workerTar, *buildDir, *repoUrlsFile)
8693
if err != nil {
87-
logger.PanicOnError(err)
94+
if *nonFatalMode {
95+
logger.Log.Errorf("%s", err)
96+
return
97+
} else {
98+
logger.PanicOnError(err)
99+
}
88100
}
89101

90102
logger.Log.Infof("Found %d available packages", len(packagesAvailableFromRepos))
@@ -96,13 +108,22 @@ func main() {
96108

97109
downloadedPackages, err := downloadMissingPackages(rpmSnapshot, packagesAvailableFromRepos, *outDir, *concurrentNetOps)
98110
if err != nil {
99-
logger.PanicOnError(err)
111+
logger.Log.Warnf("Package download failed")
112+
logger.Log.Warnf("Missing package download failed: %s", err)
113+
// reset the error to nil so we can still write the summary file
114+
// packages which are not able to be downloaded are not considered a failure of the tool, just a failure to download some packages
115+
err = nil
100116
}
101117

102118
logger.Log.Infof("Downloaded %d packages into the cache", len(downloadedPackages))
103119
err = writeSummaryFile(*outputSummaryFile, downloadedPackages)
104120
if err != nil {
105-
logger.PanicOnError(err)
121+
if *nonFatalMode {
122+
logger.Log.Errorf("%s", err)
123+
return
124+
} else {
125+
logger.PanicOnError(err)
126+
}
106127
}
107128
}
108129

0 commit comments

Comments
 (0)