Skip to content
This repository has been archived by the owner on Mar 29, 2024. It is now read-only.

Reduce code duplication + export TxnOp #41

Merged
merged 12 commits into from Feb 7, 2021
Merged

Reduce code duplication + export TxnOp #41

merged 12 commits into from Feb 7, 2021

Conversation

fogti
Copy link
Contributor

@fogti fogti commented Jan 13, 2021

(this adds an export of TxnOp, at least to make the documentation less confusing)

Fixes #43.

Additionally, this removes the take methods on KeyRange and instead makes the fields public. This improves usability, but breaks API compatibility.

Copy link
Owner

@zarvd zarvd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fogti
Copy link
Contributor Author

fogti commented Jan 15, 2021

It might be a good idea to squash this on merge. I have some more things I want to modify in this crate, but currently I'm waiting for 1. this PR to be merged and 2. this crate to be upgraded to tokio 1.0

@fogti fogti requested a review from zarvd January 15, 2021 22:25
@fogti
Copy link
Contributor Author

fogti commented Feb 5, 2021

@luncj can I get a review please?

@zarvd
Copy link
Owner

zarvd commented Feb 7, 2021

LGTM, sorry for the late review. Have you run some tests on this MR?

@fogti
Copy link
Contributor Author

fogti commented Feb 7, 2021

kv
$ cargo run --example kv
   Compiling etcd-rs v0.3.0 (/home/zseri/devel/etcd-rs)
    Finished dev [unoptimized + debuginfo] target(s) in 10.95s
     Running `/home/zseri/devel/etcd-rs/target/debug/examples/kv`
Put and get a key value pairs
Put Response: PutResponse { proto: PutResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 4, raft_term: 884 }), prev_kv: None } }
Range Response: RangeResponse { proto: RangeResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 4, raft_term: 884 }), kvs: [KeyValue { key: [102, 111, 111], create_revision: 2, mod_revision: 4, version: 3, value: [98, 97, 114], lease: 0 }], more: false, count: 1 } }
Delete Response: DeleteResponse { proto: DeleteRangeResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 5, raft_term: 884 }), deleted: 1, prev_kvs: [] } }
List all key value pairs
Range Response: RangeResponse { proto: RangeResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 9, raft_term: 884 }), kvs: [KeyValue { key: [98, 97, 114, 49], create_revision: 8, mod_revision: 8, version: 1, value: [98, 97, 122, 51], lease: 0 }, KeyValue { key: [98, 97, 114, 50], create_revision: 9, mod_revision: 9, version: 1, value: [98, 97, 122, 52], lease: 0 }, KeyValue { key: [102, 111, 111, 49], create_revision: 6, mod_revision: 6, version: 1, value: [98, 97, 122, 49], lease: 0 }, KeyValue { key: [102, 111, 111, 50], create_revision: 7, mod_revision: 7, version: 1, value: [98, 97, 122, 50], lease: 0 }], more: false, count: 4 } }
Delete Response: DeleteResponse { proto: DeleteRangeResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 10, raft_term: 884 }), deleted: 4, prev_kvs: [] } }
List key value pairs with prefix
Range Response: RangeResponse { proto: RangeResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 11324825800075145756, revision: 15, raft_term: 884 }), kvs: [KeyValue { key: [52, 50, 95, 98, 97, 114, 49], create_revision: 14, mod_revision: 14, version: 1, value: [98, 97, 122, 51], lease: 0 }, KeyValue { key: [52, 50, 95, 98, 97, 114, 50], create_revision: 15, mod_revision: 15, version: 1, value: [98, 97, 122, 52], lease: 0 }, KeyValue { key: [52, 50, 95, 102, 111, 111, 49], create_revision: 12, mod_revision: 12, version: 1, value: [98, 97, 122, 49], lease: 0 }, KeyValue { key: [52, 50, 95, 102, 111, 111, 50], create_revision: 13, mod_revision: 13, version: 1, value: [98, 97, 122, 50], lease: 0 }], more: false, count: 4 } }
"42_bar1" -> "baz3"
"42_bar2" -> "baz4"
"42_foo1" -> "baz1"
"42_foo2" -> "baz2"
Delete Response: DeleteResponse { proto: DeleteRangeResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 11324825800075145756, revision: 16, raft_term: 884 }), deleted: 4, prev_kvs: [] } }
lease
$ cargo run --example lease
   Compiling etcd-rs v0.3.0 (/home/zseri/devel/etcd-rs)
warning: unreachable expression
   --> examples/lease.rs:110:5
    |
100 | /         loop {
101 | |             interval.tick().await;
102 | |             client
103 | |                 .lease()
...   |
106 | |                 .unwrap();
107 | |         }
    | |_________- any code following this expression is unreachable
...
110 |       Ok(())
    |       ^^^^^^ unreachable expression
    |
    = note: `#[warn(unreachable_code)]` on by default

warning: function is never used: `grant_lease`
 --> examples/lease.rs:7:10
  |
7 | async fn grant_lease(client: &Client) -> Result<()> {
  |          ^^^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: 2 warnings emitted

    Finished dev [unoptimized + debuginfo] target(s) in 10.97s
     Running `/home/zseri/devel/etcd-rs/target/debug/examples/lease`
grant lease and keep alive
watch response: Ok(WatchResponse { proto: WatchResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 16, raft_term: 884 }), watch_id: 0, created: true, canceled: false, compact_revision: 0, cancel_reason: "", events: [] } })
watch response: Ok(WatchResponse { proto: WatchResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), watch_id: 0, created: false, canceled: false, compact_revision: 0, cancel_reason: "", events: [Event { r#type: Put, kv: Some(KeyValue { key: [102, 111, 111], create_revision: 17, mod_revision: 17, version: 1, value: [98, 97, 114], lease: 721551725938293010 }), prev_kv: None }] } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
=====>
keep alive response: Ok(LeaseKeepAliveResponse { proto: LeaseKeepAliveResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 17, raft_term: 884 }), id: 721551725938293010, ttl: 3 } })
transaction
$ cargo run --example transaction
   Compiling etcd-rs v0.3.0 (/home/zseri/devel/etcd-rs)
    Finished dev [unoptimized + debuginfo] target(s) in 10.84s
     Running `/home/zseri/devel/etcd-rs/target/debug/examples/transaction`
start CAS section =====>
txn resp = TxnResponse { proto: TxnResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 11324825800075145756, revision: 21, raft_term: 884 }), succeeded: true, responses: [ResponseOp { response: Some(ResponsePut(PutResponse { header: Some(ResponseHeader { cluster_id: 0, member_id: 0, revision: 21, raft_term: 0 }), prev_kv: None })) }] } }
<===== end CAS section
start compose section =====>
put resp: PutResponse { proto: PutResponse { header: Some(ResponseHeader { cluster_id: 0, member_id: 0, revision: 34, raft_term: 0 }), prev_kv: None } }
range resp: RangeResponse { proto: RangeResponse { header: Some(ResponseHeader { cluster_id: 0, member_id: 0, revision: 34, raft_term: 0 }), kvs: [KeyValue { key: [102, 111, 111], create_revision: 23, mod_revision: 34, version: 2, value: [98, 97, 114], lease: 0 }, KeyValue { key: [107, 101, 121, 45, 48], create_revision: 24, mod_revision: 24, version: 1, value: [48], lease: 0 }, KeyValue { key: [107, 101, 121, 45, 49], create_revision: 25, mod_revision: 25, version: 1, value: [49], lease: 0 }, KeyValue { key: [107, 101, 121, 45, 50], create_revision: 26, mod_revision: 26, version: 1, value: [50], lease: 0 }, KeyValue { key: [107, 101, 121, 45, 51], create_revision: 27, mod_revision: 27, version: 1, value: [51], lease: 0 }, KeyValue { key: [107, 101, 121, 45, 52], create_revision: 28, mod_revision: 28, version: 1, value: [52], lease: 0 }, KeyValue { key: [107, 101, 121, 45, 53], create_revision: 29, mod_revision: 29, version: 1, value: [53], lease: 0 }, KeyValue { key: [107, 101, 121, 45, 54], create_revision: 30, mod_revision: 30, version: 1, value: [54], lease: 0 }, KeyValue { key: [107, 101, 121, 45, 55], create_revision: 31, mod_revision: 31, version: 1, value: [55], lease: 0 }, KeyValue { key: [107, 101, 121, 45, 56], create_revision: 32, mod_revision: 32, version: 1, value: [56], lease: 0 }, KeyValue { key: [107, 101, 121, 45, 57], create_revision: 33, mod_revision: 33, version: 1, value: [57], lease: 0 }], more: false, count: 11 } }
delete resp: DeleteResponse { proto: DeleteRangeResponse { header: Some(ResponseHeader { cluster_id: 0, member_id: 0, revision: 34, raft_term: 0 }), deleted: 11, prev_kvs: [] } }
txn resp: TxnResponse { proto: TxnResponse { header: Some(ResponseHeader { cluster_id: 0, member_id: 0, revision: 0, raft_term: 0 }), succeeded: true, responses: [] } }
<===== end compose section
watch
$ cargo run --example watch
   Compiling etcd-rs v0.3.0 (/home/zseri/devel/etcd-rs)
    Finished dev [unoptimized + debuginfo] target(s) in 11.03s
     Running `/home/zseri/devel/etcd-rs/target/debug/examples/watch`
watch key value modification
watch response: Ok(WatchResponse { proto: WatchResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 34, raft_term: 884 }), watch_id: 0, created: true, canceled: false, compact_revision: 0, cancel_reason: "", events: [] } })
watch response: Ok(WatchResponse { proto: WatchResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 35, raft_term: 884 }), watch_id: 0, created: false, canceled: false, compact_revision: 0, cancel_reason: "", events: [Event { r#type: Put, kv: Some(KeyValue { key: [102, 111, 111], create_revision: 35, mod_revision: 35, version: 1, value: [98, 97, 114], lease: 0 }), prev_kv: None }] } })
watch response: Ok(WatchResponse { proto: WatchResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 36, raft_term: 884 }), watch_id: 0, created: false, canceled: false, compact_revision: 0, cancel_reason: "", events: [Event { r#type: Put, kv: Some(KeyValue { key: [102, 111, 111], create_revision: 35, mod_revision: 36, version: 2, value: [98, 97, 122], lease: 0 }), prev_kv: None }] } })
watch response: Ok(WatchResponse { proto: WatchResponse { header: Some(ResponseHeader { cluster_id: 11464921859216662609, member_id: 14682377044449528323, revision: 37, raft_term: 884 }), watch_id: 0, created: false, canceled: false, compact_revision: 0, cancel_reason: "", events: [Event { r#type: Delete, kv: Some(KeyValue { key: [102, 111, 111], create_revision: 0, mod_revision: 37, version: 0, value: [], lease: 0 }), prev_kv: None }] } })

@zarvd zarvd merged commit 8854100 into zarvd:master Feb 7, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Split WatchRequest into two structs (InitWatch, CancelWatch)
2 participants