Sync Orchestrator
还没有人认领这个 Issue。
评估
调研方向
从 issue 中展示的 SyncOrchestrator 和 ContentSyncJob 入口点开始,然后跟踪现有的 manifest、provider、topic 和文件同步实现。在进行更改之前,先定义调度、网络检查、并发运行锁定、事务回滚以及 manifest 更改应如何运行。完成的标准是拥有一个安全的自动同步流程,并覆盖失败、重试和并发运行场景。
由索引模型根据 Issue 内容生成。
描述
Coordinate full sync flow with transaction safety
class SyncOrchestrator
def perform
report_status(:syncing)
manifest = fetch_manifest
ActiveRecord::Base.transaction do
sync_tags(manifest["tags"])
sync_providers_with_content(manifest["providers"])
cleanup_orphans(manifest)
update_device_config(manifest)
end
report_status(:synced)
rescue ManifestChangedError <----- this may be redundant
# Manifest changed during sync, restart
retry
rescue => e
report_status(:error, error_message: e.message)
raise
end
private
def sync_providers_with_content(providers)
providers.each_with_index do |provider_data, idx|
provider = provider_sync.sync(provider_data)
provider_data["topics"].each do |topic_data|
# Check manifest hasn't changed every 5 files
check_manifest_unchanged! if should_check_manifest?(idx)
topic = topic_sync.sync(topic_data, provider)
topic_data["files"].each do |file_data|
topic_file_sync.sync(file_data, topic)
end
end
end
end
end
Run sync process automatically
class ContentSyncJob < ApplicationJob
queue_as :default
def perform
return unless network_available?
return if sync_in_progress?
SyncOrchestrator.new.perform
end
end
- Schedule periodic checks (e.g., hourly via cron or whenever gem)
- Detect network connectivity before attempting
- Prevent concurrent sync attempts with advisory lock
- 主要语言
- HTML
- 星标
- 4
- 派生
- 0
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
rubyforgood/skillrx-beacon 的其他 Issue
-
cross-app sync
难度 3/5 1-2 天 新手友好度 35/100
-
Error handling未关闭cross-app sync
难度 4/5 3-5 天 新手友好度 35/100
-
cross-app sync
难度 5/5 一周以上 新手友好度 30/100
-
cross-app sync
难度 3/5 1-2 天 新手友好度 45/100
-
cross-app sync
难度 3/5 1-2 天 新手友好度 48/100
查看 rubyforgood/skillrx-beacon 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
nexu-io/open-design#9262 · 1 条评论 ·
维护者通常 1 天内回复
-
[Bug]: streamed Responses API flex_unavailable error maps to 500 InternalServerError instead of 429未关闭llm translation
难度 2/5 1 小时以内 新手友好度 85/100
BerriAI/litellm#49736 · 1 条评论 ·
维护者通常 1 天内回复
-
[BUG] LLM conflict check ignores MNEMOSYNE_LLM_MAX_TOKENS, so reasoning models return empty replies未关闭
难度 2/5 1-3 小时 新手友好度 62/100
mnemosyne-oss/mnemosyne#1325 ·
维护者通常 1 天内回复
-
enhancement meshtastic-2.8
难度 2/5 1-3 小时 新手友好度 62/100
pskillen/meshflow-api#459 ·