siyuan-note/siyuan · error
invalid user rating returned by cloud server
Error message
invalid user rating returned by cloud server
What it means
Error returned by model.GetBazaarPackageRating (kernel/model/bazaar_rating.go:127) when the cloud's getBazaarPackageRating response carries a user rating outside the valid 0..5 range. The kernel validates the echoed data.Rating after a successful (HTTP 200, code 0) request; a negative or >5 value means the server violated its contract, and the kernel refuses to propagate garbage to callers.
Source
Thrown at kernel/model/bazaar_rating.go:127
// GetBazaarPackageRating 获取已安装官方包的公开评分和当前用户评分。
func GetBazaarPackageRating(ctx context.Context, pkgType, packageName string) (rating *bazaar.PackageRating,
ratingAvailable bool, userRating int, err error) {
token, err := bazaarRatingValidatePackage(ctx, pkgType, packageName)
if nil != err {
return nil, false, 0, err
}
data := bazaarPackageUserRatingData{}
err = requestBazaarPackageRating(ctx, "/apis/siyuan/bazaar/getBazaarPackageRating", map[string]any{
"token": token,
"packageName": packageName,
}, &data)
if nil != err {
return nil, false, 0, err
}
if 0 > data.Rating || 5 < data.Rating {
return nil, false, 0, errors.New("invalid user rating returned by cloud server")
}
rating, ratingAvailable = bazaar.GetBazaarPackageRating(ctx, packageName)
return rating, ratingAvailable, data.Rating, nil
}
// SetBazaarPackageRating 设置或取消已安装官方包的当前用户评分。
func SetBazaarPackageRating(ctx context.Context, pkgType, packageName string, userRating int) (rating *bazaar.PackageRating,
ratingAvailable bool, retUserRating int, err error) {
if 0 > userRating || 5 < userRating {
return nil, false, 0, errors.New("rating must be an integer from 0 to 5")
}
bazaarRatingSetMu.Lock()
defer bazaarRatingSetMu.Unlock()
token, err := bazaarRatingValidatePackage(ctx, pkgType, packageName)
if nil != err {
return nil, false, 0, errView on GitHub (pinned to afa823b6b4)
Solutions
- Retry after a short wait to rule out a transient bad payload
- Update SiYuan so the kernel's response schema matches the current cloud API
- If it persists on the latest version, report it as a backend bug; there is no local workaround
Defensive patterns
Strategy: retry
Try / catch
_, _, _, err := model.GetBazaarPackageRating(ctx, pkgType, name)
if err != nil && strings.Contains(err.Error(), "invalid user rating returned by cloud server") {
// transient backend issue: single delayed retry, else hide the rating UI
} Prevention
- Do not attempt to 'fix' the value locally; the kernel already rejects the bad payload
- Keep the kernel updated so response-schema validation matches the live backend
When it happens
Trigger: A successful call to /api/bazaar/getBazaarPackageRating where the cloud payload's rating field is malformed (e.g. -1, 6, or a parsing artifact from a changed response schema). Purely server-side; no local input can cause it.
Common situations: Cloud schema changes deployed ahead of the kernel; corrupted account state server-side returning sentinel values like -1 for 'no rating yet' in an old format; API version skew between an outdated kernel and a newer backend.
Related errors
- invalid public rating returned by cloud server
- bazaarRatingRateLimited
- marketplace package ratings are unavailable
- bazaar hash not available
- invalid package type
AI-assisted analysis of siyuan-note/siyuan@afa823b6b4 (2026-08-18).
Data as JSON: /api/errors/6bd1b2f68e53fafd.
Report an issue: GitHub.