Sync Orchestrator
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
Direzione di ricerca
Inizia dai punti di ingresso SyncOrchestrator e ContentSyncJob mostrati nell’issue, quindi segui le implementazioni esistenti della sincronizzazione di manifest, provider, topic e file. Definisci come devono comportarsi la pianificazione, i controlli di rete, il blocco delle esecuzioni concorrenti, il rollback delle transazioni e le modifiche al manifest prima di apportare modifiche. Il lavoro è completato quando esiste un flusso di sincronizzazione automatizzato e sicuro con copertura dei casi di errore, ritentativo ed esecuzione concorrente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- HTML
- Stelle
- 4
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di rubyforgood/skillrx-beacon
-
cross-app sync
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
-
Error handlingApertacross-app sync
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
cross-app sync
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
-
Orphan Cleanup ServiceApertacross-app sync
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
-
Sync status reportingApertacross-app sync
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
Tutte le issue di rubyforgood/skillrx-beacon
Issue simili
-
[fullsend] E2E: scorecard — filecheck GitLab entity metrics unavailable due to initialDelay timingApertae2e-failure ready-to-code
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
redhat-developer/rhdh-plugin-export-overlays#4698 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
devswha/herdr-web-ui#2884 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
I maintainer di solito rispondono entro 1 giorno
-
.NET good first issue testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
HelloblueAI/HelloblueGK#311 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno