lib: New argument -N to suppress verification (#26)

Signed-off-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
This commit is contained in:
Jan Alexander Steffens
2021-10-26 09:50:34 +02:00
committed by GitHub
parent 38d800a775
commit 83e8dedfa9
2 changed files with 42 additions and 1 deletions

View File

@@ -46,6 +46,7 @@ fn run_succeeds_without_crashing() {
let transactions = true;
let graphs = false;
let commit_changes = false;
let verify = true;
let config = Config::new(
db_url.clone(),
@@ -59,6 +60,7 @@ fn run_succeeds_without_crashing() {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();
@@ -94,6 +96,7 @@ fn changes_commited_if_no_min_saved_rows() {
let transactions = true;
let graphs = false;
let commit_changes = true;
let verify = true;
let config = Config::new(
db_url,
@@ -107,6 +110,7 @@ fn changes_commited_if_no_min_saved_rows() {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();
@@ -160,6 +164,7 @@ fn changes_commited_if_min_saved_rows_exceeded() {
let transactions = true;
let graphs = false;
let commit_changes = true;
let verify = true;
let config = Config::new(
db_url,
@@ -173,6 +178,7 @@ fn changes_commited_if_min_saved_rows_exceeded() {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();
@@ -227,6 +233,7 @@ fn changes_not_commited_if_fewer_than_min_saved_rows() {
let transactions = true;
let graphs = false;
let commit_changes = true;
let verify = true;
let config = Config::new(
db_url,
@@ -240,6 +247,7 @@ fn changes_not_commited_if_fewer_than_min_saved_rows() {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();
@@ -280,6 +288,7 @@ fn run_panics_if_invalid_db_url() {
let transactions = true;
let graphs = false;
let commit_changes = true;
let verify = true;
let config = Config::new(
db_url,
@@ -293,6 +302,7 @@ fn run_panics_if_invalid_db_url() {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();
@@ -336,6 +346,7 @@ fn run_only_affects_given_room_id() {
let transactions = true;
let graphs = false;
let commit_changes = true;
let verify = true;
let config = Config::new(
db_url,
@@ -349,6 +360,7 @@ fn run_only_affects_given_room_id() {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();
@@ -406,6 +418,7 @@ fn run_respects_groups_to_compress() {
let transactions = true;
let graphs = false;
let commit_changes = true;
let verify = true;
let config = Config::new(
db_url,
@@ -419,6 +432,7 @@ fn run_respects_groups_to_compress() {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();
@@ -492,6 +506,7 @@ fn run_is_idempotent_when_run_on_whole_room() {
let transactions = true;
let graphs = false;
let commit_changes = true;
let verify = true;
let config1 = Config::new(
db_url.clone(),
@@ -505,6 +520,7 @@ fn run_is_idempotent_when_run_on_whole_room() {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();
@@ -520,6 +536,7 @@ fn run_is_idempotent_when_run_on_whole_room() {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();

View File

@@ -109,6 +109,9 @@ pub struct Config {
// Whether or not to commit changes to the database automatically
// N.B. currently assumes transactions is true (to be on the safe side)
commit_changes: bool,
// Whether to verify the correctness of the compressed state groups by
// comparing them to the original groups
verify: bool,
}
impl Config {
@@ -223,6 +226,13 @@ impl Config {
.long_help(concat!("If this flag is set then the changes the compressor makes will",
" be committed to the database. This should be safe to use while synapse is running",
" as it assumes by default that the transactions flag is set")),
).arg(
Arg::with_name("no_verify")
.short("N")
.help("Do not double-check that the compression was performed correctly")
.long_help(concat!("If this flag is set then the verification of the compressed",
" state groups, which compares them to the original groups, is skipped. This",
" saves time at the cost of potentially generating mismatched state.")),
).get_matches();
let db_url = matches
@@ -262,6 +272,8 @@ impl Config {
let commit_changes = matches.is_present("commit_changes");
let verify = !matches.is_present("no_verify");
Config {
db_url: String::from(db_url),
output_file,
@@ -274,6 +286,7 @@ impl Config {
transactions,
graphs,
commit_changes,
verify,
}
}
}
@@ -372,7 +385,9 @@ pub fn run(mut config: Config) {
}
}
if config.verify {
check_that_maps_match(&state_group_map, new_state_group_map);
}
// If we are given an output file, we output the changes as SQL. If the
// `transactions` argument is set we wrap each change to a state group in a
@@ -695,6 +710,7 @@ impl Config {
transactions: bool,
graphs: bool,
commit_changes: bool,
verify: bool,
) -> Result<Config, String> {
let mut output: Option<File> = None;
if let Some(file) = output_file {
@@ -722,6 +738,7 @@ impl Config {
transactions,
graphs,
commit_changes,
verify,
})
}
}
@@ -746,6 +763,7 @@ impl Config {
transactions = true,
graphs = false,
commit_changes = false,
verify = true,
)]
fn run_compression(
db_url: String,
@@ -759,6 +777,7 @@ fn run_compression(
transactions: bool,
graphs: bool,
commit_changes: bool,
verify: bool,
) -> PyResult<()> {
let config = Config::new(
db_url,
@@ -772,6 +791,7 @@ fn run_compression(
transactions,
graphs,
commit_changes,
verify,
);
match config {
Err(e) => Err(PyErr::new::<exceptions::PyException, _>(e)),
@@ -1224,6 +1244,7 @@ mod pyo3_tests {
let transactions = false;
let graphs = false;
let commit_changes = false;
let verify = true;
let config = Config::new(
db_url.clone(),
@@ -1237,6 +1258,7 @@ mod pyo3_tests {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();
@@ -1270,6 +1292,7 @@ mod pyo3_tests {
let transactions = true;
let graphs = true;
let commit_changes = true;
let verify = true;
let config = Config::new(
db_url.clone(),
@@ -1283,6 +1306,7 @@ mod pyo3_tests {
transactions,
graphs,
commit_changes,
verify,
)
.unwrap();