aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2022-07-08 10:43:23 +0200
committerAlex Auvolat <alex@adnab.me>2022-07-08 10:43:23 +0200
commit18d014dcc5840e5eae8581a5bfa846aad93beeea (patch)
treeaccd1a78f6ef6094d2c4302e147b78458786eff8
parentd1cf1a0fa6952e84874f36f1dc66e4a978959d8f (diff)
parentaab34bfe5415e9584432bf32e29a151dc5af9ebd (diff)
downloadgarage-18d014dcc5840e5eae8581a5bfa846aad93beeea.tar.gz
garage-18d014dcc5840e5eae8581a5bfa846aad93beeea.zip
Merge branch 'main' into background-task-manager
-rw-r--r--src/k2v-client/Cargo.toml9
-rw-r--r--src/k2v-client/bin/k2v-cli.rs9
-rw-r--r--src/k2v-client/lib.rs8
3 files changed, 19 insertions, 7 deletions
diff --git a/src/k2v-client/Cargo.toml b/src/k2v-client/Cargo.toml
index 224414ab..2f8a2679 100644
--- a/src/k2v-client/Cargo.toml
+++ b/src/k2v-client/Cargo.toml
@@ -1,7 +1,12 @@
[package]
name = "k2v-client"
-version = "0.1.0"
+version = "0.0.1"
+authors = ["Trinity Pointard <trinity.pointard@gmail.com>", "Alex Auvolat <alex@adnab.me>"]
edition = "2018"
+license = "AGPL-3.0"
+description = "Client library for the Garage K2V protocol"
+repository = "https://git.deuxfleurs.fr/Deuxfleurs/garage"
+readme = "../../README.md"
[dependencies]
base64 = "0.13.0"
@@ -17,7 +22,7 @@ tokio = "1.17.0"
# cli deps
clap = { version = "3.1.18", optional = true, features = ["derive", "env"] }
-garage_util = { path = "../util", optional = true }
+garage_util = { version = "0.7.0", path = "../util", optional = true }
[features]
diff --git a/src/k2v-client/bin/k2v-cli.rs b/src/k2v-client/bin/k2v-cli.rs
index 884e7438..925ebeb8 100644
--- a/src/k2v-client/bin/k2v-cli.rs
+++ b/src/k2v-client/bin/k2v-cli.rs
@@ -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);
diff --git a/src/k2v-client/lib.rs b/src/k2v-client/lib.rs
index 95974d7a..c2606af4 100644
--- a/src/k2v-client/lib.rs
+++ b/src/k2v-client/lib.rs
@@ -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,