Commit Graph

124 Commits

Author SHA1 Message Date
Tao He 1f3c62301f Allow specifying the auth token TTL when auth with password.
Resolves #107.

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-12-22 13:49:14 +08:00
Tao He 405383c0ba Add a new API to `client.observe()` that accepts a callback.
Resolves #108.

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-12-22 10:30:46 +08:00
Tao He 6a0b6696e5 Fixes the hardcode language standard in CMakeLists.txt.
Signed-off-by: Tao He <sighingnow@gmail.com>
2021-12-22 10:16:38 +08:00
Tao He 0d672ffa1c
Accept an `grpc::ChannelArguments` argument in client's constructors. (#104)
* Accept an `grpc::ChannelArguments` argument in client's constructors.

   Resolves #103.

* Backwards compatibility with Ubuntu 18.04.

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-11-09 00:31:59 +08:00
Matthew Fioravante bfb56be151
Expose key version in etcd::Value (#97) 2021-10-27 12:49:34 +08:00
Matthew Fioravante 1118222b3d
Make revision numbers 64 bit to match proto spec (#96)
* Make Response::index() 64 bit

* make compact_revision 64 bit

* Make input revision params 64 bit

* make Transaction mod revision 64 bit

* Make Value created and modified index 64 bit

* Fix tests
2021-10-27 10:51:49 +08:00
Tao He d29e05545d Implements the put action.
Signed-off-by: Tao He <sighingnow@gmail.com>
2021-10-12 10:17:25 +08:00
Matthew Fioravante e9db91b335
Allow changing Transaction key (#93)
* Allow changing Transaction key
* Fixes the compilation errors.

Signed-off-by: Matthew Fioravante <fmatthew5876@gmail.com>
Co-authored-by: Tao He <sighingnow@gmail.com>
2021-10-08 11:12:35 +08:00
Tao He b99dc2024e
Include compact revision for cancelled watch response. (#91)
Signed-off-by: Tao He <sighingnow@gmail.com>
2021-09-28 11:24:11 +08:00
Tao He a949dec288
Add an optional `target_name_override` to support multiple-endpoints with SSL. (#89)
Resolves #87.

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-09-24 02:41:46 +08:00
Tao He 6eed82a766
Fixes memory leak in shutting down gRPC streams. (#88)
* Fixes memory leak in shutting down gRPC streams.

Resolve #86.

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-09-23 14:51:29 +08:00
mszy d386bb96b0
Removing memory-leak, fixes #83. (#85)
Co-authored-by: morgan.szygenda <morgan.szygenda@scle.fr>
2021-09-22 10:50:33 +08:00
Tao He cda80854eb
Implements "v3election.proto" APIs. (#84)
Resolves #81.

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-09-16 00:46:21 +08:00
Tao He 116b49b784
Lint source code, improve the quality and readability. (#82)
* Lint the source first, prepare for implementing #81.

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-09-15 14:59:55 +08:00
Tao He efcecb7731 Add a "head" method on the client the retrieve the latest revision.
Signed-off-by: Tao He <sighingnow@gmail.com>
2021-06-16 17:10:32 +08:00
Tao He 68c5626d2c Keepalive: join the thread outside the background job itself.
Fixes #67, when etcd server stops, the keepalive action will crash.


Signed-off-by: Tao He <sighingnow@gmail.com>
2021-06-15 12:03:35 +08:00
Tao He 230ebfd08b
Avoid duplicate const string tags. (#62)
On behalf of Asplund, Rickard, thanks!

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-05-28 23:22:32 +08:00
Tao He e80709418b Avoid including protobuf & grpc headers in our interface files.
Signed-off-by: Tao He <sighingnow@gmail.com>
2021-05-27 22:10:24 +08:00
Tao He 9e77fdb2ee
Fixes lock, and the underlying keepalive implmentation. (#60)
* Fixes lock, and the underlying keepalive implmentation.

The previous implementation is buggy when a lot of locks happen at the same time,
as the cpprestsdk's threadpool use a fixed number of thread for posix platform:

https://github.com/microsoft/cpprestsdk/blob/master/Release/src/pplx/threadpool.cpp#L198

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-05-21 18:05:35 +08:00
Tao He bb22ef4d7f Revert "Wait: wait without callback, otherwise there will be use-after-dtor."
This reverts commit 7b16ce6770.

That patch is invalid.
2021-04-28 17:36:27 +08:00
Tao He 7b16ce6770 Wait: wait without callback, otherwise there will be use-after-dtor.
Signed-off-by: Tao He <sighingnow@gmail.com>
2021-04-27 22:24:04 +08:00
Nils Carlson ad2da0ac7e
Change KeepAlive lease expiry to throw std::out_of_range (#55)
Update documentation to show different exceptions used by KeepAlive as well.
2021-04-08 10:18:26 +08:00
Tao He 3e30c4c61d
Optimize the implementation of error handling in keep alive. (#54)
Signed-off-by: Tao He <sighingnow@gmail.com>
2021-04-07 23:20:33 +08:00
Tao He cee938fb0a Use UTF-8 char U+0000 as terminate charactor.
Allow setting range end as `NULL`, see also #50.

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-04-07 15:08:51 +08:00
Tao He 62a846d798
Handling (or checking) possible failure in lease's KeepAlive. (#53)
* Handling (or checking) possible failure in lease's KeepAlive.
* Add documentation.
* Enhance documentations.

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-04-02 17:15:27 +08:00
Tao He 27e6e2ac11
Watch on range by specifying `rang_end`. (#52)
Follow-up work on #51, and fixes #50.

Signed-off-by: Tao He <sighingnow@gmail.com>
2021-04-02 01:34:58 +08:00
Tao He 1b24751b9d
List/delete/watch on exact range. (#51)
Signed-off-by: Tao He <sighingnow@gmail.com>
2021-04-01 14:50:50 +08:00
rockeet 9339b6dee4
class Value: remove unused code (#48) 2021-03-29 18:53:56 +08:00
Tao He c927b395cb Set DESTINATION for older versions of CMake.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-03-01 18:11:23 +08:00
Tao He 38366fc5c3 Handle watching on compacted revisions cases.
Fixes #43.

Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-02-15 00:13:38 +08:00
Tao He 4f31000cf4
Set a proper upper bound for `ls` request, and remove the default sort options. (#46)
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-02-12 15:56:09 +08:00
Tao He c9f82b46d4 Allows specify a lease TTL for lock.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-02-08 11:07:23 +08:00
Tao He 842372d86d Conformate the C++ compiler on Ubuntu-18.04.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-02-07 01:40:07 +08:00
Tao He 03baacf9ea
Support secure transport and certificate-based authentication. (#42)
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-02-07 01:35:37 +08:00
Tao He d2e35ceb47
Reduce the dependency interface to avoid include all generated protobuf/grpc files. (#41)
Add CMake config files to make it looks as a cmake module.

Fixes https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3/issues/37.

Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-02-06 17:16:58 +08:00
Tao He 3bac086428 Fixes a unused warning.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-02-03 01:26:27 +08:00
Tao He bcf5313eab Continue work for #36, add instructions about how to install deependencies. 2021-01-31 15:24:23 +08:00
Tao He 692840cb58 Support ubuntu 18.04 (boost-1.65), and test it in CI. 2021-01-30 14:43:16 +08:00
Tao He 66c111b5ca Test the library on more platforms with more versions of etcd.
Squashed commit of the following:

commit 7d15f8f5f9b477f606dbe034f26c37a894eb5b46
Author: Tao He <linzhu.ht@alibaba-inc.com>
Date:   Thu Jan 28 10:47:55 2021 +0800

    Add a bit more about how to enable authentication on etcd v3.2.x and v3.3.x.

    Fixes #33.

    Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>

commit 9e84e27d480930133d2f2380bed44cb187ff1656
Author: Tao He <sighingnow@gmail.com>
Date:   Sun Jan 17 20:59:12 2021 +0800

    Tweak LD_LIBRARY_PATH, to include /usr/local/lib.

    Signed-off-by: Tao He <sighingnow@gmail.com>

commit c3b913c3c33606caa6ff326639a791e55565da3f
Author: Tao He <linzhu.ht@alibaba-inc.com>
Date:   Sat Dec 26 15:27:54 2020 +0800

    Test on various versions of Ubuntu and Mac, with different versions of ETCD.

    Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>

Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-01-28 13:07:34 +08:00
Tao He 5258809b36 Remove debug logs.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-01-12 11:31:34 +08:00
Tao He e5c804416c Protect implicit keepalive maps using a lexical scoped lock.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-01-12 01:11:35 +08:00
Tao He cfb5cb89d3 Fixes the -Werror for unused "continue_next": we just use it.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2021-01-11 20:47:11 +08:00
Tao He 6962030db8 Implements "KeepAlive" feature, and enhance "lock" with a lease.
Signed-off-by: Tao He <sighingnow@gmail.com>
2021-01-10 23:39:50 +08:00
Tao He f2d8330b08 Fixes when cpprestsdk is a submodule of external project.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-12-21 16:19:24 +08:00
Tao He 7e280ec8a4 Install dll to bin/ on windows.
Signed-off-by: Tao He <sighingnow@gmail.com>
2020-12-20 14:54:25 +08:00
Tao He e286c36926 Fixes for windows (vcpkg environment) compatibility.
Signed-off-by: Tao He <sighingnow@gmail.com>
2020-12-20 00:19:47 +08:00
Tao He eee2ea2d14 Set maximum message bytes for send/recv for larger initial etcd machine. 2020-11-02 20:23:09 +08:00
Tao He f7e7ec30fe Fixes CMakeLists.txt for header installation.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-10-25 00:22:29 +08:00
Tao He 525a279a18 Install target etcd-cpp-api where it is defined.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-10-24 22:48:31 +08:00
Tao He dd1f106150 Make "CancelWatch()" thread-safe and happen only once, fixes the potential assert failure in gRPC routines.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-10-15 19:56:23 +08:00