Commit Graph

160 Commits

Author SHA1 Message Date
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
Tao He 7fe755ae53 Make sure a cancalable watch must be a successful watch.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-10-12 13:19:23 +08:00
Tao He a00a06d5bd Remove unused comment code.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-10-11 17:19:46 +08:00
Tao He 3305a19d15 Drop the Interceptor-based implementation to be compatible with ealier version of gRPC (pre-0.17.0).
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-10-10 20:17:32 +08:00
Tao He eb284103e0 Auto and watch functionalities on SyncClient.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-10-10 20:17:32 +08:00
Tao He 0fb4f2887d Implements etcd v3 authentication.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-10-10 20:17:32 +08:00
Tao He 100eae97e9 Improve the etcd watcher to detect error when the connection lost.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-09-30 00:32:00 +08:00
Tao He 611ab05de0 Move generated protobuf files to binary directory.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-09-30 00:32:00 +08:00
Tao He 6eb725de0e Add "limit" support on "ls" command.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-09-30 00:32:00 +08:00
Tao He 60ffe62b26 Update accumulated changes.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-09-30 00:32:00 +08:00
Tao He bb33b76544 Optimize protobuf generation process in CMakeLists.txt.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
2020-09-30 00:32:00 +08:00
Tao He 72b215a513 Re-org v3 related files to make it a submodule. 2020-09-30 00:32:00 +08:00
Tao He 4e9d17c188 Update protobuf, implments lock, fixes watch and improves txn (#1) 2020-09-30 00:32:00 +08:00
Arches 0c52135bf8 Deleted junk files
Added #include <grpc/support/log.h> since this is where GPR_ASSERT is now defined.
2016-12-13 11:14:49 +01:00
Arches a5d2140793 Updated logic for stripping of endpoint 2016-09-26 11:56:04 +02:00
Arches e37cb46922 First commit 2016-08-29 16:14:57 +02:00
arches 60383a502c Make mvccpb::KeyValue a member of etcdv3::keyValue instead of
inheriting from it.
2016-07-26 10:04:26 -04:00
arches 888946b589 Added new interface for leasegrant and leaseId in add, set, modify, modify_if 2016-07-13 07:56:43 -04:00
arches ac54e84f6d Use ttl 2016-07-13 07:20:15 -04:00
arches 82034a87db Updated makefiles 2016-07-13 05:54:27 -04:00
arches 3c52636028 Implemented TTL and Lease 2016-07-13 05:09:42 -04:00
arches dd798f5dfd Updated rmdir. withPrefix value should be based on the argument pass
by the client
2016-07-08 10:30:43 -04:00
arches 77109d06e4 Updated access of V3Response 2016-07-08 10:00:15 -04:00
arches 6dfbe791a0 Added DeleteRangeResponse.
Refactor how value/values are filled up by parseResponse
2016-07-08 08:48:39 -04:00
arches 1e046d87a0 Use Actionv2::ActionParameters to pass arguments to AsyncActions. 2016-07-06 12:11:27 -04:00
arches 7d64447e76 Updates for Watcher 2016-07-05 05:22:11 -04:00
arches 174ea401b8 Added SyncClient class 2016-07-04 06:54:07 -04:00
arches dd1d01519c Fixed bug when only one key is returned during ls().
Instead of placing it in response::value it should be placed in
reponse::values
2016-07-01 10:17:41 -04:00
arches a43de811f4 Refactor part1 2016-06-24 12:20:31 -04:00
arches 029f46df86 Removed mkdir 2016-06-22 04:34:26 -04:00
lampayan 366f10506c cleanup
removed unused old methods send_get_request and send_del_request
removed unnecessary comments
2016-06-22 09:51:46 +02:00
arches 8ae3a250dd Remove AsyncPutResponse, utils and grpcClient 2016-06-21 10:58:24 -04:00
arches a24750cc40 Merge branch 'other_dev' of ssh://bud-git01.emea.nsn-net.net/etcd-cpp-apiv3 into other_dev
updated watch to return previous values
2016-06-21 10:45:50 -04:00
arches bdfb481f69 Updated Watch so it can return previous values. 2016-06-21 10:45:43 -04:00
lampayan 618995c080 Merge remote-tracking branch 'origin/other_dev' into other_dev
# Conflicts:
#	etcd/Client.hpp
#	src/Client.cpp
2016-06-21 15:59:46 +02:00
lampayan b086ee9d72 Refactored transaction initialization.
cleaned up and added comments for methods in transaction class
2016-06-21 15:52:19 +02:00
arches 63661d3889 Merge branch 'other_dev' of ssh://bud-git01.emea.nsn-net.net/etcd-cpp-apiv3 into other_dev
# Conflicts:
#	src/CMakeLists.txt
2016-06-21 09:38:50 -04:00
arches 40c552725b Merge branch 'other_dev' of ssh://bud-git01.emea.nsn-net.net/etcd-cpp-apiv3 into other_dev
# Conflicts:
#	src/CMakeLists.txt
#	src/Client.cpp
2016-06-21 09:34:22 -04:00
lampayan fe5396e437 Refactored Client class to remove boilerplate code.
Responsibility of boilerplate work is transfered to its own class 
(Transaction).
UT for watch are temporarily commented out as they are not supported yet
2016-06-21 15:33:11 +02:00
arches b9eb2633d1 Added watch functionality 2016-06-21 09:19:26 -04:00
lampayan 01bf49bf2d cleanup removing temporary classes AyncDelResponse AsyncModifyResponse
and V3BaseResponse
2016-06-21 10:54:13 +02:00
arches 87dc87abdb Removed createResponse 2016-06-20 06:24:09 -04:00
arches e84a1b0667 Update rm and modify functions. Use Txn for these functions. 2016-06-17 11:11:53 -04:00
arches db2ce95328 Updates for merging 2016-06-16 07:52:29 -04:00
arches e116c51948 added grpc and utils 2016-06-16 07:11:17 -04:00
arches 9239ad04e9 clean up 2016-06-16 07:00:53 -04:00
Arches e5eafcf531 made prev_values a vector. 2016-06-16 06:29:49 -04:00
arches 88e5298f86 make templated create with shared_ptr arguement
with watch snippet(should be deleted next commit)
2016-06-16 06:29:49 -04:00
arches eedbcd4b70 Added delete 2016-06-16 06:29:19 -04:00
arches 0d7b702430 Added implementation for ls 2016-06-16 06:28:46 -04:00
Arches 8825b43044 Use Txn 2016-06-16 06:25:33 -04:00
arches b7500a17cb Use Txn for add() 2016-06-16 06:21:17 -04:00
lampayan a1293c770a cleanup removing temporary classes. 2016-06-09 17:14:40 +02:00
lampayan 64a7f72fb9 cleanup removing temporary classes. 2016-06-09 17:12:13 +02:00
lampayan c28d955b22 Complete implementation for modify with index and delete with index
functionalities. AsyncModifyResponse is needed because handling of
indeces are different between create and mod and delete, as per
requirements.

remaining TODOs:
1) Watch functionality
2016-06-09 16:57:25 +02:00
lampayan 6fb775218d This is the complete implementation for delete functionalities.
Index is now also supported

notes/TODOs:
1) We should consider adding an algo for mod/update functions
to consider BOTH creation index and modify index
2) Watch functionality
2016-06-09 13:53:58 +02:00
lampayan 008693a276 merged branches for ease of update later on.
cleaned up rm, implemented rm_if methods!
updated tests

remaining todos:
rm and modif with indexes (find out where is X-ETCD-Index)
watch functionality
2016-06-09 11:21:42 +02:00
lampayan 2721e39e12 coexisting approaches with working UTs 2016-06-08 15:21:09 +02:00
lampayan 33be7c9092 Merge remote-tracking branch 'origin/maui' into other_dev
# Conflicts:
#	etcd/Client.hpp
#	etcd/Response.hpp
#	proto/rpc.proto
#	src/CMakeLists.txt
#	src/Client.cpp
#	src/Response.cpp
#	tst/EtcdTest.cpp
2016-06-08 14:53:34 +02:00
lampayan 12789ad2d2 cleanup removing temporary classes 2016-06-08 11:29:09 +02:00
lampayan 43d6c8ae3c cleanup removing temporary classes 2016-06-08 11:17:48 +02:00
lampayan 62d4984e71 Refactored and cleaned implementation for rm()
Unrelated tests are commented out firsts
temporary method, such as getV3, are done to be able to do the original UT replication.
2016-06-08 11:11:50 +02:00
arches 04f8cc71e5 implemented assigned client interface 2016-06-07 10:59:10 -04:00
lampayan 98e2b57ed4 Merge remote-tracking branch 'origin/other_dev' into lampayan
# Conflicts:
#	etcd/Client.hpp
#	proto/kv.proto
#	src/Client.cpp
2016-06-07 15:41:12 +02:00
lampayan 2e858aa26b preparation for merge 2016-06-07 15:37:09 +02:00