siyuan-note/siyuan · error
Conf.Language(77), msg: endpoint
Error message
Conf.Language(77), msg: endpoint [%s] is parent of workspace
What it means
Error from SetSyncProviderLocal: the endpoint is a parent directory of the workspace, so syncing into it would sweep the workspace into the synced data; rejected and reported through the localized template Conf.Language(77).
Solutions
- Pick an endpoint that is not an ancestor of the workspace
- Move sync data out of the workspace's parent chain
- Reconfigure the local sync provider with a safe path
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at kernel/model/sync.go:719 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of siyuan-note/siyuan@9f775e8a12 (2026-09-19).
Data as JSON: /api/errors/b9a6c3cf3d700be6.
Report an issue: GitHub.
Appendix: source
Thrown at kernel/model/sync.go:719
return
}
if !gulu.File.IsExist(absPath) {
msg := fmt.Sprintf("endpoint [%s] not exist", local.Endpoint)
logging.LogError(msg)
err = fmt.Errorf(Conf.Language(77), msg)
return
}
if util.IsAbsPathInWorkspace(absPath) || filepath.Clean(absPath) == filepath.Clean(util.WorkspaceDir) {
msg := fmt.Sprintf("endpoint [%s] is in workspace", local.Endpoint)
logging.LogError(msg)
err = fmt.Errorf(Conf.Language(77), msg)
return
}
if gulu.File.IsSubPath(absPath, util.WorkspaceDir) {
msg := fmt.Sprintf("endpoint [%s] is parent of workspace", local.Endpoint)
logging.LogError(msg)
err = fmt.Errorf(Conf.Language(77), msg)
return
}
local.Timeout = util.NormalizeTimeout(local.Timeout)
local.ConcurrentReqs = util.NormalizeConcurrentReqs(local.ConcurrentReqs, conf.ProviderLocal)
if Conf.Sync.Provider == conf.ProviderLocal && (Conf.Sync.Local == nil ||
filepath.Clean(Conf.Sync.Local.Endpoint) != filepath.Clean(local.Endpoint)) {
if err = requireCompleteAssetDownloads(); err != nil {
return
}
}
Conf.Sync.Local = local
Conf.Save()
refreshLANSyncManager()
return
}
View on GitHub (pinned to 9f775e8a12)