You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit d92cbc8
Browse filesBrowse the repository at this point in the historyBrowse files
# A present-but-wrong file is not an alarm to stop on — the fresh
102
+
# copy's checksum below is fatal, so nothing unverified reaches the
103
+
# caller either way. It is worth an annotation rather than a log line,
104
+
# though, because the state is silent and does not clear itself: the
105
+
# entry was saved under the same key this job just hit, and
106
+
# `actions/cache` skips its save after an exact hit, so the download
107
+
# below cannot replace it. Every job then restores it, rejects it, and
108
+
# goes to the CDN, indefinitely, while still passing. Only evicting the
109
+
# entry ends that, so the annotation names it.
110
+
if [ -e "$ASSET_PATH" ]; then
111
+
echo "::warning title=Cached ${ASSET_NAME} failed its checksum::Evict the '${CACHE_KEY}' cache entry: it cannot be overwritten, so every job is downloading ${ASSET_NAME} from the release CDN until it is gone."
112
+
rm -f "$ASSET_PATH"
113
+
fi
114
+
115
+
# Downloaded outside the cache directory so a half-written file cannot
116
+
# be what gets saved. The retry window is four minutes, long enough to
117
+
# ride out a CDN outage that a default one-second backoff exhausts in
118
+
# eighteen seconds, inside a six-minute ceiling that bounds the step
119
+
# whatever curl does.
120
+
#
121
+
# `--max-time` resets on each retry, so it bounds one attempt rather
122
+
# than the whole loop — without it a single stalled connection would
123
+
# eat the entire window and never reach a second attempt. The stall it
124
+
# cuts short exits 28, which curl counts as transient, so the retry
125
+
# loop picks it up unaided.
126
+
#
127
+
# `--retry-all-errors` adds the connection-level failures — reset,
128
+
# refused, DNS, TLS — that curl does not count as transient; a 504 or a
129
+
# stalled transfer it would retry regardless. It retries permanent
130
+
# failures too, so a pin to a tag that does not exist spends the whole
131
+
# window below before failing, in every job that fetches it.
echo "mkcert v${MKCERT_VERSION} restored from the cache"
162
-
else
163
-
# A present-but-wrong file is not an alarm to stop on — the fresh
164
-
# copy's checksum below is fatal, so nothing unverified is
165
-
# installed either way. It is worth an annotation rather than a log
166
-
# line, though, because the state is silent and does not clear
167
-
# itself: the entry was saved under the same key this job just hit,
168
-
# and `actions/cache` skips its save after an exact hit, so the
169
-
# download below cannot replace it. Every job in the repository
170
-
# then restores it, rejects it, and goes to the CDN, indefinitely,
171
-
# while still passing. Only evicting the entry ends that, so the
172
-
# annotation names it.
173
-
if [ -e "$cached" ]; then
174
-
echo "::warning title=Cached mkcert failed its checksum::Evict the '${MKCERT_CACHE_KEY}' cache entry: it cannot be overwritten, so every job is downloading mkcert from the release CDN until it is gone."
0 commit comments