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

  1. Retry shortly; transient CDN/rate-limit failures often clear.
  2. Switch to the stable channel (cloud JSON checksums) to avoid the GitHub download CDN.
  3. 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

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


AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12). Data as JSON: /api/errors/98e21c6b60c02fff. Report an issue: GitHub.