feat(sync): surface MR diff fetch/fail counters in sync output

Adds mr_diffs_fetched and mr_diffs_failed fields to IngestResult and
SyncResult, threads them through the orchestrator aggregation, includes
them in the structured tracing span and human-readable sync summary.
Previously MR diff failures were silently swallowed — now they appear
alongside resource event counts for full pipeline observability.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Taylor Eernisse
2026-02-08 14:33:53 -05:00
parent 6e82f723c3
commit b704e33188
2 changed files with 16 additions and 0 deletions

View File

@@ -42,6 +42,8 @@ pub struct IngestResult {
pub notes_upserted: usize, pub notes_upserted: usize,
pub resource_events_fetched: usize, pub resource_events_fetched: usize,
pub resource_events_failed: usize, pub resource_events_failed: usize,
pub mr_diffs_fetched: usize,
pub mr_diffs_failed: usize,
} }
#[derive(Debug, Default, Clone, Serialize)] #[derive(Debug, Default, Clone, Serialize)]
@@ -606,6 +608,8 @@ async fn run_ingest_inner(
total.mrs_skipped_discussion_sync += result.mrs_skipped_discussion_sync; total.mrs_skipped_discussion_sync += result.mrs_skipped_discussion_sync;
total.resource_events_fetched += result.resource_events_fetched; total.resource_events_fetched += result.resource_events_fetched;
total.resource_events_failed += result.resource_events_failed; total.resource_events_failed += result.resource_events_failed;
total.mr_diffs_fetched += result.mr_diffs_fetched;
total.mr_diffs_failed += result.mr_diffs_failed;
} }
} }
} }

View File

@@ -35,6 +35,8 @@ pub struct SyncResult {
pub discussions_fetched: usize, pub discussions_fetched: usize,
pub resource_events_fetched: usize, pub resource_events_fetched: usize,
pub resource_events_failed: usize, pub resource_events_failed: usize,
pub mr_diffs_fetched: usize,
pub mr_diffs_failed: usize,
pub documents_regenerated: usize, pub documents_regenerated: usize,
pub documents_embedded: usize, pub documents_embedded: usize,
} }
@@ -152,6 +154,8 @@ pub async fn run_sync(
result.discussions_fetched += mrs_result.discussions_fetched; result.discussions_fetched += mrs_result.discussions_fetched;
result.resource_events_fetched += mrs_result.resource_events_fetched; result.resource_events_fetched += mrs_result.resource_events_fetched;
result.resource_events_failed += mrs_result.resource_events_failed; result.resource_events_failed += mrs_result.resource_events_failed;
result.mr_diffs_fetched += mrs_result.mr_diffs_fetched;
result.mr_diffs_failed += mrs_result.mr_diffs_failed;
spinner.finish_and_clear(); spinner.finish_and_clear();
if signal.is_cancelled() { if signal.is_cancelled() {
@@ -264,6 +268,8 @@ pub async fn run_sync(
discussions = result.discussions_fetched, discussions = result.discussions_fetched,
resource_events = result.resource_events_fetched, resource_events = result.resource_events_fetched,
resource_events_failed = result.resource_events_failed, resource_events_failed = result.resource_events_failed,
mr_diffs = result.mr_diffs_fetched,
mr_diffs_failed = result.mr_diffs_failed,
docs = result.documents_regenerated, docs = result.documents_regenerated,
embedded = result.documents_embedded, embedded = result.documents_embedded,
"Sync pipeline complete" "Sync pipeline complete"
@@ -287,6 +293,12 @@ pub fn print_sync(
" Discussions fetched: {}", " Discussions fetched: {}",
result.discussions_fetched result.discussions_fetched
); );
if result.mr_diffs_fetched > 0 || result.mr_diffs_failed > 0 {
println!(" MR diffs fetched: {}", result.mr_diffs_fetched);
if result.mr_diffs_failed > 0 {
println!(" MR diffs failed: {}", result.mr_diffs_failed);
}
}
if result.resource_events_fetched > 0 || result.resource_events_failed > 0 { if result.resource_events_fetched > 0 || result.resource_events_failed > 0 {
println!( println!(
" Resource events fetched: {}", " Resource events fetched: {}",