Fix poll item when item didn't change #336

Merged
lx merged 1 commit from k2v-poll-fix into main 2022-07-04 13:26:14 +00:00
2 changed files with 12 additions and 5 deletions

View file

@ -1,3 +1,5 @@
use std::time::Duration;
use k2v_client::*;
use garage_util::formater::format_table;
@ -64,6 +66,9 @@ enum Command {
/// Causality information
#[clap(short, long)]
causality: String,
/// Timeout, in seconds
#[clap(short, long)]
timeout: Option<u64>,
/// Output formating
#[clap(flatten)]
output_kind: ReadOutputKind,
@ -341,10 +346,12 @@ async fn main() -> Result<(), Error> {
partition_key,
sort_key,
causality,
timeout,
output_kind,
} => {
let timeout = timeout.map(Duration::from_secs);
let res_opt = client
.poll_item(&partition_key, &sort_key, causality.into(), None)
.poll_item(&partition_key, &sort_key, causality.into(), timeout)
.await?;
if let Some(res) = res_opt {
output_kind.display_output(res);

View file

@ -122,14 +122,14 @@ impl K2vClient {
let res = self.dispatch(req, Some(timeout + DEFAULT_TIMEOUT)).await?;
let causality = res
.causality_token
.ok_or_else(|| Error::InvalidResponse("missing causality token".into()))?;
if res.status == StatusCode::NOT_MODIFIED {
return Ok(None);
}
let causality = res
.causality_token
.ok_or_else(|| Error::InvalidResponse("missing causality token".into()))?;
if res.status == StatusCode::NO_CONTENT {
return Ok(Some(CausalValue {
causality,