siyuan-note/siyuan · error
Conf.Language(84)
Error message
Conf.Language(84)
What it means
UploadCloudSnapshot (kernel/model/repository.go:1486-1491) maps dejavu.ErrCloudBackupCountExceeded from repo.UploadTagIndex to fmt.Errorf(Conf.Language(84), Conf.Language(154)), producing 'Backup failed: The cloud can only support backup up to 12 snapshots'. The SiYuan cloud backup service enforces a hard cap of 12 retained snapshots; the upload is rejected before new chunks are stored. This branch is specific to the SiYuan cloud provider path (the WebDAV/S3/local paths only check paid status up front).
Source
Thrown at kernel/model/repository.go:1489
switch Conf.Sync.Provider {
case conf.ProviderSiYuan:
if !IsSubscriber() {
util.PushErrMsg(Conf.Language(29), 5000)
return
}
case conf.ProviderWebDAV, conf.ProviderS3, conf.ProviderLocal:
if !IsPaidUser() {
util.PushErrMsg(Conf.Language(214), 5000)
return
}
}
util.PushEndlessProgress(Conf.Language(116))
defer util.PushClearProgress()
uploadFileCount, uploadChunkCount, uploadBytes, err := repo.UploadTagIndex(tag, id, map[string]any{eventbus.CtxPushMsg: eventbus.CtxPushMsgToStatusBarAndProgress})
if err != nil {
if errors.Is(err, dejavu.ErrCloudBackupCountExceeded) {
err = fmt.Errorf(Conf.Language(84), Conf.Language(154))
return
}
err = fmt.Errorf(Conf.Language(84), formatRepoErrorMsg(err))
return
}
msg := fmt.Sprintf(Conf.Language(152), uploadFileCount, uploadChunkCount, humanize.BytesCustomCeil(uint64(uploadBytes), 2))
util.PushMsg(msg, 5000)
util.PushStatusBar(msg)
return
}
func RemoveCloudRepoTag(tag string) (err error) {
if 1 > len(Conf.Repo.Key) {
err = errors.New(Conf.Language(26))
return
}
repo, err := newRepository()View on GitHub (pinned to afa823b6b4)
Solutions
- Delete the oldest cloud snapshots via Settings - Cloud or POST /api/repo/removeCloudRepoTagSnapshot {tag} for stale tags, then retry the upload
- Run POST /api/repo/purgeCloudRepo to purge cloud data, then re-upload the current snapshot
- Lower cloud snapshot retention (Settings - Account & Sync) so old snapshots age out automatically before hitting the 12 cap
- If more retention is genuinely needed, switch the sync provider to WebDAV or S3 (PRO), which do not enforce the 12-snapshot cloud cap
Example fix
// before
await fetchSyncPost("/api/repo/uploadCloudSnapshot", {tag, id}); // Backup failed: ... up to 12 snapshots
// after
await fetchSyncPost("/api/repo/removeCloudRepoTagSnapshot", {tag: oldestTag});
await fetchSyncPost("/api/repo/uploadCloudSnapshot", {tag, id}); Defensive patterns
Strategy: retry
Validate before calling
// pre-flight: count cloud snapshots and free a slot before uploading
const res = await fetchSyncPost("/api/repo/getCloudRepoSnapshots", {page: 1});
if (res.data.totalCount >= 12) {
await fetchSyncPost("/api/repo/removeCloudRepoTagSnapshot", {tag: oldestUnusedTag});
} Type guard
function cloudSlotsAvailable(totalCount: number, cap = 12): boolean {
return totalCount < cap;
} Try / catch
try {
await fetchSyncPost("/api/repo/uploadCloudSnapshot", { tag, id });
} catch (e: any) {
if (e.message?.includes(window.siyuan.languages[154])) {
// remove one old cloud snapshot, then retry the upload exactly once
}
} Prevention
- Prune old cloud snapshots (or lower retention) on a schedule so the 12-snapshot ceiling never triggers mid-backup
- Use tags sparingly - every tagged cloud snapshot counts toward the cap
- Monitor totalCount from getCloudRepoSnapshots and alert before it reaches 12
When it happens
Trigger: POST /api/repo/uploadCloudSnapshot {tag, id} against the SiYuan cloud provider when 12 cloud snapshots already exist and retention settings have not evicted any, or when stale tagged snapshots from old devices all count toward the cap.
Common situations: Long-lived installs backing up to SiYuan cloud daily with the default retention; multiple devices sharing the cloud account each uploading snapshots; old tag snapshots (e.g. 'clean'/'reset' tags) never deleted and consuming all 12 slots.
Related errors
- Upload failed: %s
- master password migration is pending: Master password change
- master password migration is pending: Master password change
- Conf.Language(315)
- Conf.Language(324)
AI-assisted analysis of siyuan-note/siyuan@afa823b6b4 (2026-08-18).
Data as JSON: /api/errors/42aaf8e86d8969b1.
Report an issue: GitHub.