siyuan-note/siyuan · error
get checksum manifest failed: %d
Error message
get checksum manifest failed: %d
What it means
Returned by getGitHubManifestChecksum when the manifest asset download responds with a non-200 status code. The status is embedded. This fetches SHA256SUMS.txt from github.com/.../releases/download/...; failures are usually 404 (asset gone), 403 (rate limit on the download CDN), or 5xx (GitHub outage).
Source
Thrown at kernel/model/updater_release.go:392
cached, ok := githubManifestCache.Load(manifestCacheKey)
if ok {
if checksum := parseChecksumManifest(cached.(string), pkgName); "" != checksum {
return checksum, nil
}
return "", errors.New("package checksum is unavailable")
}
}
response, err := httpclient.NewCloudRequest30s().SetContext(ctx).Get(manifestAsset.BrowserDownloadURL)
if err != nil {
return "", err
}
if nil == response || nil == response.Response {
return "", errors.New("checksum manifest response is empty")
}
defer response.Body.Close()
if 200 != response.StatusCode {
return "", fmt.Errorf("get checksum manifest failed: %d", response.StatusCode)
}
data, err := io.ReadAll(io.LimitReader(response.Body, maxChecksumManifestSize+1))
if err != nil {
return "", err
}
if maxChecksumManifestSize < int64(len(data)) {
return "", errors.New("checksum manifest is too large")
}
if "" != manifestDigest {
actualDigest := fmt.Sprintf("%x", sha256.Sum256(data))
if manifestDigest != actualDigest {
return "", errors.New("checksum manifest digest mismatch")
}
}
manifest := string(data)
if "" != manifestCacheKey {
githubManifestCache.Store(manifestCacheKey, manifest)
}View on GitHub (pinned to 251596fc0d)
Solutions
- Retry shortly; transient CDN/rate-limit failures often clear.
- Switch to the stable channel (cloud JSON checksums) to avoid the GitHub download CDN.
- Verify the manifest asset URL is still valid on the GitHub release page.
Defensive patterns
Strategy: retry
Try / catch
// Retry across calls; fall back to stable channel on persistent failure.
checksum, err := getGitHubManifestChecksum(ctx, release, pkgName)
if err != nil && strings.Contains(err.Error(), "get checksum manifest failed") {
// CDN/rate-limit; wait and retry once, else use cloud JSON
time.Sleep(30 * time.Second)
checksum, err = getGitHubManifestChecksum(ctx, release, pkgName)
} Prevention
- Retry after a short backoff for transient CDN failures.
- Fall back to the stable channel's cloud JSON checksums on persistent failure.
- Don't burn the GitHub download CDN with tight retry loops.
When it happens
Trigger: Asset URL returns 404 because the asset was renamed or removed after the release metadata was fetched. 403 from GitHub's download CDN under heavy rate limiting. 5xx during a GitHub outage. A mirror/proxy returning an error page.
Common situations: Checking an older release whose manifest asset was later removed. GitHub download CDN rate limiting. Corporate proxy blocking github.com release downloads while allowing the API.
Related errors
- checksum manifest is unavailable
- checksum manifest response is empty
- checksum manifest is too large
- update package is unavailable: [%s] checksum is unavailable
- get GitHub releases failed: %d
AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12).
Data as JSON: /api/errors/98e21c6b60c02fff.
Report an issue: GitHub.