Do include operations in serialized test plan if they cause a client to hang

This commit is contained in:
Max Brunsfeld 2023-04-05 16:52:39 -07:00
parent 43a94cda5f
commit 8e68c7f808

View file

@ -1854,13 +1854,14 @@ async fn simulate_client(
while let Some(batch_id) = operation_rx.next().await { while let Some(batch_id) = operation_rx.next().await {
let Some((operation, applied)) = plan.lock().next_client_operation(&client, batch_id, &cx) else { break }; let Some((operation, applied)) = plan.lock().next_client_operation(&client, batch_id, &cx) else { break };
applied.store(true, SeqCst);
match apply_client_operation(&client, operation, &mut cx).await { match apply_client_operation(&client, operation, &mut cx).await {
Ok(()) => applied.store(true, SeqCst), Ok(()) => {}
Err(TestError::Inapplicable) => { Err(TestError::Inapplicable) => {
applied.store(false, SeqCst);
log::info!("skipped operation"); log::info!("skipped operation");
} }
Err(TestError::Other(error)) => { Err(TestError::Other(error)) => {
applied.store(true, SeqCst);
log::error!("{} error: {}", client.username, error); log::error!("{} error: {}", client.username, error);
} }
} }