Skip to content

Commit d897f79

Browse files
committed
rewrite to use CTE that doesn't depend on version history
1 parent bc6843b commit d897f79

File tree

6 files changed

+284
-282
lines changed

6 files changed

+284
-282
lines changed

dev-tools/omdb/src/bin/omdb/db/sitrep.rs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ use crate::db::DbFetchOptions;
88
use crate::db::check_limit;
99
use crate::helpers::const_max_len;
1010
use crate::helpers::datetime_opt_rfc3339_concise;
11-
use crate::helpers::display_option_blank;
1211
use anyhow::Context;
1312
use async_bb8_diesel::AsyncRunQueryDsl;
1413
use chrono::{DateTime, Utc};
@@ -138,8 +137,6 @@ pub(super) async fn cmd_db_sitrep_history(
138137
struct SitrepRow {
139138
v: u32,
140139
id: Uuid,
141-
#[tabled(display_with = "display_option_blank")]
142-
orphans: Option<usize>,
143140
#[tabled(display_with = "datetime_opt_rfc3339_concise")]
144141
created_at: Option<DateTime<Utc>>,
145142
comment: String,
@@ -160,17 +157,6 @@ pub(super) async fn cmd_db_sitrep_history(
160157

161158
let mut rows = Vec::with_capacity(versions.len());
162159
for v in versions {
163-
let orphans = match datastore.fm_sitrep_list_orphaned(&opctx, &v).await
164-
{
165-
Ok(o) => Some(o.len()),
166-
Err(e) => {
167-
eprintln!(
168-
"failed to list orphaned sitreps at v{}: {e}",
169-
v.version
170-
);
171-
None
172-
}
173-
};
174160
let (comment, time_created) =
175161
match datastore.fm_sitrep_metadata_read(&opctx, v.id).await {
176162
Ok(s) => (s.comment, Some(s.time_created)),
@@ -185,7 +171,6 @@ pub(super) async fn cmd_db_sitrep_history(
185171
rows.push(SitrepRow {
186172
v: v.version,
187173
id: v.id.into_untyped_uuid(),
188-
orphans,
189174
created_at: time_created,
190175
comment,
191176
});

dev-tools/omdb/src/bin/omdb/nexus.rs

Lines changed: 21 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ use nexus_types::internal_api::background::InstanceReincarnationStatus;
6060
use nexus_types::internal_api::background::InstanceUpdaterStatus;
6161
use nexus_types::internal_api::background::InventoryLoadStatus;
6262
use nexus_types::internal_api::background::LookupRegionPortStatus;
63-
use nexus_types::internal_api::background::OrphanedSitreps;
6463
use nexus_types::internal_api::background::ReadOnlyRegionReplacementStartStatus;
6564
use nexus_types::internal_api::background::RegionReplacementDriverStatus;
6665
use nexus_types::internal_api::background::RegionReplacementStatus;
@@ -3148,72 +3147,38 @@ fn print_task_fm_sitrep_loader(details: &serde_json::Value) {
31483147
}
31493148

31503149
fn print_task_fm_sitrep_gc(details: &serde_json::Value) {
3151-
let SitrepGcStatus { versions_scanned, orphaned_sitreps, errors } =
3152-
match serde_json::from_value::<SitrepGcStatus>(details.clone()) {
3153-
Err(error) => {
3154-
eprintln!(
3155-
"warning: failed to interpret task details: {:?}: {:?}",
3156-
error, details
3157-
);
3158-
return;
3159-
}
3160-
Ok(status) => status,
3161-
};
3150+
let SitrepGcStatus {
3151+
orphaned_sitreps_found,
3152+
orphaned_sitreps_deleted,
3153+
errors,
3154+
} = match serde_json::from_value::<SitrepGcStatus>(details.clone()) {
3155+
Err(error) => {
3156+
eprintln!(
3157+
"warning: failed to interpret task details: {:?}: {:?}",
3158+
error, details
3159+
);
3160+
return;
3161+
}
3162+
Ok(status) => status,
3163+
};
31623164

3163-
pub const TOTAL_VERSIONS_SCANNED: &str = "total versions scanned:";
3164-
pub const VERSIONS_WITH_ORPHANS: &str = "versions with orphans:";
3165-
pub const ORPHANS_FOUND: &str = "total orphaned sitreps found:";
3166-
pub const ORPHANS_DELETED: &str = "total orphaned sitreps deleted:";
3165+
pub const ORPHANS_FOUND: &str = "orphaned sitreps found:";
3166+
pub const ORPHANS_DELETED: &str = "orphaned sitreps deleted:";
31673167
pub const ERRORS: &str = "errors:";
3168-
pub const WIDTH: usize = const_max_len(&[
3169-
TOTAL_VERSIONS_SCANNED,
3170-
VERSIONS_WITH_ORPHANS,
3171-
ERRORS,
3172-
ORPHANS_FOUND,
3173-
ORPHANS_DELETED,
3174-
]) + 1;
3168+
pub const WIDTH: usize =
3169+
const_max_len(&[ERRORS, ORPHANS_FOUND, ORPHANS_DELETED]) + 1;
31753170
pub const NUM_WIDTH: usize = 4;
3176-
3177-
#[derive(tabled::Tabled)]
3178-
struct OrphanedSitrepsRow {
3179-
version: u32,
3180-
found: usize,
3181-
deleted: usize,
3182-
}
3183-
let mut total_found = 0;
3184-
let mut total_deleted = 0;
3185-
let rows: Vec<_> = orphaned_sitreps
3186-
.iter()
3187-
.map(|(&version, &OrphanedSitreps { found, deleted })| {
3188-
total_found += found;
3189-
total_deleted += deleted;
3190-
OrphanedSitrepsRow { version, found, deleted }
3191-
})
3192-
.collect();
3193-
31943171
if !errors.is_empty() {
31953172
println!("{ERRICON} {ERRORS:<WIDTH$}{:>NUM_WIDTH$}", errors.len());
31963173
for error in errors {
31973174
println!(" > {error}")
31983175
}
31993176
}
3177+
3178+
println!(" {ORPHANS_FOUND:<WIDTH$}{orphaned_sitreps_found:>NUM_WIDTH$}");
32003179
println!(
3201-
" {TOTAL_VERSIONS_SCANNED:<WIDTH$}{versions_scanned:>NUM_WIDTH$}"
3202-
);
3203-
println!(
3204-
" {VERSIONS_WITH_ORPHANS:<WIDTH$}{:>NUM_WIDTH$}",
3205-
orphaned_sitreps.len()
3180+
" {ORPHANS_DELETED:<WIDTH$}{orphaned_sitreps_deleted:>NUM_WIDTH$}"
32063181
);
3207-
println!(" {ORPHANS_FOUND:<WIDTH$}{total_found:>NUM_WIDTH$}");
3208-
println!(" {ORPHANS_DELETED:<WIDTH$}{total_deleted:>NUM_WIDTH$}");
3209-
3210-
// Don't print the table listing the number of GC'd sitreps per version
3211-
// if it's empty, 'cause it looks kinda weird.
3212-
if !rows.is_empty() {
3213-
let mut table = tabled::Table::new(rows);
3214-
bgtask_apply_kv_style(&mut table);
3215-
println!("{table}");
3216-
}
32173182
}
32183183

32193184
const ERRICON: &str = "/!\\";

dev-tools/omdb/tests/successes.out

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -627,10 +627,8 @@ task: "fm_sitrep_gc"
627627
configured period: every <REDACTED_DURATION>s
628628
last completed activation: <REDACTED ITERATIONS>, triggered by <TRIGGERED_BY_REDACTED>
629629
started at <REDACTED_TIMESTAMP> (<REDACTED DURATION>s ago) and ran for <REDACTED DURATION>ms
630-
total versions scanned: 0
631-
versions with orphans: 0
632-
total orphaned sitreps found: 0
633-
total orphaned sitreps deleted: 0
630+
orphaned sitreps found: 0
631+
orphaned sitreps deleted: 0
634632

635633
task: "fm_sitrep_loader"
636634
configured period: every <REDACTED_DURATION>s
@@ -1183,10 +1181,8 @@ task: "fm_sitrep_gc"
11831181
configured period: every <REDACTED_DURATION>s
11841182
last completed activation: <REDACTED ITERATIONS>, triggered by <TRIGGERED_BY_REDACTED>
11851183
started at <REDACTED_TIMESTAMP> (<REDACTED DURATION>s ago) and ran for <REDACTED DURATION>ms
1186-
total versions scanned: 0
1187-
versions with orphans: 0
1188-
total orphaned sitreps found: 0
1189-
total orphaned sitreps deleted: 0
1184+
orphaned sitreps found: 0
1185+
orphaned sitreps deleted: 0
11901186

11911187
task: "fm_sitrep_loader"
11921188
configured period: every <REDACTED_DURATION>s

0 commit comments

Comments
 (0)