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

  1. Pick an endpoint that is not an ancestor of the workspace
  2. Move sync data out of the workspace's parent chain
  3. 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)