libcouchbase 1.2.8 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +4 -4
- data/README.md +16 -8
- data/ext/libcouchbase/CMakeLists.txt +34 -32
- data/ext/libcouchbase/RELEASE_NOTES.markdown +277 -6
- data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +14 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +2 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +2 -1
- data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +2 -0
- data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +8 -1
- data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +3 -3
- data/ext/libcouchbase/cmake/config-cmake.h.in +14 -0
- data/ext/libcouchbase/cmake/configure +8 -26
- data/ext/libcouchbase/cmake/defs.mk.in +2 -2
- data/ext/libcouchbase/cmake/libcouchbase.stp.in +829 -0
- data/ext/libcouchbase/cmake/source_files.cmake +11 -2
- data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +18 -2
- data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +44 -2
- data/ext/libcouchbase/contrib/cbsasl/src/client.c +285 -73
- data/ext/libcouchbase/contrib/cbsasl/src/common.c +4 -0
- data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.c +500 -0
- data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.h +99 -0
- data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +1 -1
- data/ext/libcouchbase/contrib/cliopts/cliopts.h +14 -1
- data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +2 -3
- data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +4 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +7 -5
- data/ext/libcouchbase/contrib/snappy/snappy.cc +7 -2
- data/ext/libcouchbase/example/crypto/.gitignore +2 -0
- data/ext/libcouchbase/example/crypto/Makefile +13 -0
- data/ext/libcouchbase/example/crypto/common_provider.c +24 -0
- data/ext/libcouchbase/example/crypto/common_provider.h +31 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_decrypt.c +139 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_encrypt.c +147 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.c +281 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.h +29 -0
- data/ext/libcouchbase/example/tracing/.gitignore +2 -0
- data/ext/libcouchbase/example/tracing/Makefile +8 -0
- data/ext/libcouchbase/example/tracing/cJSON.c +1 -0
- data/ext/libcouchbase/example/tracing/cJSON.h +1 -0
- data/ext/libcouchbase/example/tracing/tracing.c +439 -0
- data/ext/libcouchbase/example/tracing/views.c +444 -0
- data/ext/libcouchbase/include/libcouchbase/auth.h +56 -4
- data/ext/libcouchbase/include/libcouchbase/cbft.h +8 -0
- data/ext/libcouchbase/include/libcouchbase/cntl-private.h +55 -1
- data/ext/libcouchbase/include/libcouchbase/cntl.h +101 -1
- data/ext/libcouchbase/include/libcouchbase/configuration.h.in +6 -0
- data/ext/libcouchbase/include/libcouchbase/couchbase.h +109 -6
- data/ext/libcouchbase/include/libcouchbase/crypto.h +140 -0
- data/ext/libcouchbase/include/libcouchbase/error.h +38 -2
- data/ext/libcouchbase/include/libcouchbase/kvbuf.h +6 -1
- data/ext/libcouchbase/include/libcouchbase/metrics.h +79 -0
- data/ext/libcouchbase/include/libcouchbase/n1ql.h +9 -0
- data/ext/libcouchbase/include/libcouchbase/tracing.h +319 -0
- data/ext/libcouchbase/include/libcouchbase/vbucket.h +1 -1
- data/ext/libcouchbase/include/libcouchbase/views.h +8 -0
- data/ext/libcouchbase/include/memcached/protocol_binary.h +40 -10
- data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +6 -14
- data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +3 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +1 -0
- data/ext/libcouchbase/plugins/io/select/plugin-select.c +4 -1
- data/ext/libcouchbase/src/auth-priv.h +36 -4
- data/ext/libcouchbase/src/auth.cc +66 -27
- data/ext/libcouchbase/src/bootstrap.cc +1 -1
- data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +12 -7
- data/ext/libcouchbase/src/bucketconfig/bc_http.cc +26 -17
- data/ext/libcouchbase/src/bucketconfig/bc_http.h +1 -1
- data/ext/libcouchbase/src/bucketconfig/clconfig.h +4 -2
- data/ext/libcouchbase/src/bucketconfig/confmon.cc +6 -3
- data/ext/libcouchbase/src/cbft.cc +48 -0
- data/ext/libcouchbase/src/cntl.cc +138 -2
- data/ext/libcouchbase/src/config_static.h +17 -0
- data/ext/libcouchbase/src/connspec.cc +54 -6
- data/ext/libcouchbase/src/connspec.h +9 -1
- data/ext/libcouchbase/src/crypto.cc +386 -0
- data/ext/libcouchbase/src/ctx-log-inl.h +23 -6
- data/ext/libcouchbase/src/dump.cc +4 -0
- data/ext/libcouchbase/src/getconfig.cc +1 -2
- data/ext/libcouchbase/src/handler.cc +65 -27
- data/ext/libcouchbase/src/hostlist.cc +35 -7
- data/ext/libcouchbase/src/hostlist.h +7 -0
- data/ext/libcouchbase/src/http/http-priv.h +2 -0
- data/ext/libcouchbase/src/http/http.cc +77 -37
- data/ext/libcouchbase/src/http/http_io.cc +19 -2
- data/ext/libcouchbase/src/instance.cc +90 -17
- data/ext/libcouchbase/src/internal.h +5 -0
- data/ext/libcouchbase/src/lcbio/connect.cc +39 -4
- data/ext/libcouchbase/src/lcbio/connect.h +27 -0
- data/ext/libcouchbase/src/lcbio/ctx.c +49 -23
- data/ext/libcouchbase/src/lcbio/ioutils.cc +30 -3
- data/ext/libcouchbase/src/lcbio/ioutils.h +2 -0
- data/ext/libcouchbase/src/lcbio/manager.cc +44 -8
- data/ext/libcouchbase/src/lcbio/manager.h +2 -0
- data/ext/libcouchbase/src/lcbio/rw-inl.h +1 -0
- data/ext/libcouchbase/src/lcbio/ssl.h +3 -5
- data/ext/libcouchbase/src/logging.c +1 -1
- data/ext/libcouchbase/src/logging.h +2 -0
- data/ext/libcouchbase/src/mc/compress.cc +164 -0
- data/ext/libcouchbase/src/mc/compress.h +7 -12
- data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +5 -1
- data/ext/libcouchbase/src/mc/mcreq.c +11 -1
- data/ext/libcouchbase/src/mc/mcreq.h +35 -4
- data/ext/libcouchbase/src/mcserver/mcserver.cc +30 -7
- data/ext/libcouchbase/src/mcserver/mcserver.h +7 -0
- data/ext/libcouchbase/src/mcserver/negotiate.cc +103 -57
- data/ext/libcouchbase/src/mcserver/negotiate.h +2 -2
- data/ext/libcouchbase/src/mctx-helper.h +11 -0
- data/ext/libcouchbase/src/metrics.cc +132 -0
- data/ext/libcouchbase/src/n1ql/ixmgmt.cc +2 -1
- data/ext/libcouchbase/src/n1ql/n1ql.cc +66 -0
- data/ext/libcouchbase/src/newconfig.cc +9 -2
- data/ext/libcouchbase/src/operations/counter.cc +2 -1
- data/ext/libcouchbase/src/operations/durability-cas.cc +11 -0
- data/ext/libcouchbase/src/operations/durability-seqno.cc +3 -0
- data/ext/libcouchbase/src/operations/durability.cc +24 -2
- data/ext/libcouchbase/src/operations/durability_internal.h +19 -0
- data/ext/libcouchbase/src/operations/get.cc +4 -2
- data/ext/libcouchbase/src/operations/observe-seqno.cc +1 -0
- data/ext/libcouchbase/src/operations/observe.cc +113 -62
- data/ext/libcouchbase/src/operations/ping.cc +246 -67
- data/ext/libcouchbase/src/operations/remove.cc +2 -1
- data/ext/libcouchbase/src/operations/store.cc +17 -14
- data/ext/libcouchbase/src/operations/touch.cc +3 -0
- data/ext/libcouchbase/src/packetutils.h +68 -4
- data/ext/libcouchbase/src/probes.d +132 -161
- data/ext/libcouchbase/src/rdb/bigalloc.c +1 -1
- data/ext/libcouchbase/src/retryq.cc +6 -2
- data/ext/libcouchbase/src/rnd.cc +68 -0
- data/ext/libcouchbase/src/rnd.h +39 -0
- data/ext/libcouchbase/src/settings.c +27 -0
- data/ext/libcouchbase/src/settings.h +67 -3
- data/ext/libcouchbase/src/ssl/CMakeLists.txt +0 -12
- data/ext/libcouchbase/src/ssl/ssl_common.c +23 -4
- data/ext/libcouchbase/src/strcodecs/base64.c +141 -16
- data/ext/libcouchbase/src/strcodecs/strcodecs.h +16 -1
- data/ext/libcouchbase/src/trace.h +68 -61
- data/ext/libcouchbase/src/tracing/span.cc +289 -0
- data/ext/libcouchbase/src/tracing/threshold_logging_tracer.cc +171 -0
- data/ext/libcouchbase/src/tracing/tracer.cc +53 -0
- data/ext/libcouchbase/src/tracing/tracing-internal.h +213 -0
- data/ext/libcouchbase/src/utilities.c +5 -0
- data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -2
- data/ext/libcouchbase/src/vbucket/vbucket.c +50 -18
- data/ext/libcouchbase/src/views/docreq.cc +26 -1
- data/ext/libcouchbase/src/views/docreq.h +17 -0
- data/ext/libcouchbase/src/views/viewreq.cc +64 -1
- data/ext/libcouchbase/src/views/viewreq.h +21 -0
- data/ext/libcouchbase/tests/CMakeLists.txt +6 -6
- data/ext/libcouchbase/tests/basic/t_base64.cc +34 -6
- data/ext/libcouchbase/tests/basic/t_connstr.cc +14 -0
- data/ext/libcouchbase/tests/basic/t_creds.cc +10 -10
- data/ext/libcouchbase/tests/basic/t_host.cc +22 -2
- data/ext/libcouchbase/tests/basic/t_scram.cc +514 -0
- data/ext/libcouchbase/tests/check-all.cc +6 -2
- data/ext/libcouchbase/tests/iotests/mock-environment.cc +64 -0
- data/ext/libcouchbase/tests/iotests/mock-environment.h +27 -1
- data/ext/libcouchbase/tests/iotests/t_confmon.cc +2 -2
- data/ext/libcouchbase/tests/iotests/t_forward.cc +8 -0
- data/ext/libcouchbase/tests/iotests/t_netfail.cc +124 -0
- data/ext/libcouchbase/tests/iotests/t_smoke.cc +1 -1
- data/ext/libcouchbase/tests/iotests/t_snappy.cc +316 -0
- data/ext/libcouchbase/tests/socktests/socktest.cc +2 -2
- data/ext/libcouchbase/tests/socktests/t_basic.cc +6 -6
- data/ext/libcouchbase/tests/socktests/t_manager.cc +1 -1
- data/ext/libcouchbase/tests/socktests/t_ssl.cc +1 -1
- data/ext/libcouchbase/tools/CMakeLists.txt +1 -1
- data/ext/libcouchbase/tools/cbc-handlers.h +17 -0
- data/ext/libcouchbase/tools/cbc-n1qlback.cc +7 -4
- data/ext/libcouchbase/tools/cbc-pillowfight.cc +408 -100
- data/ext/libcouchbase/tools/cbc-proxy.cc +134 -3
- data/ext/libcouchbase/tools/cbc-subdoc.cc +1 -2
- data/ext/libcouchbase/tools/cbc.cc +113 -8
- data/ext/libcouchbase/tools/common/histogram.cc +1 -0
- data/ext/libcouchbase/tools/common/options.cc +28 -1
- data/ext/libcouchbase/tools/common/options.h +5 -0
- data/ext/libcouchbase/tools/docgen/docgen.h +36 -10
- data/ext/libcouchbase/tools/docgen/loc.h +5 -4
- data/ext/libcouchbase/tools/docgen/seqgen.h +28 -0
- data/lib/libcouchbase/ext/libcouchbase/enums.rb +10 -0
- data/lib/libcouchbase/n1ql.rb +6 -1
- data/lib/libcouchbase/version.rb +1 -1
- data/spec/connection_spec.rb +6 -6
- metadata +38 -5
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseSnappy.cmake +0 -11
- data/ext/libcouchbase/src/mc/compress.c +0 -90
- data/ext/libcouchbase/tools/common/my_inttypes.h +0 -22
|
@@ -295,6 +295,14 @@ LIBCOUCHBASE_API
|
|
|
295
295
|
void
|
|
296
296
|
lcb_view_cancel(lcb_t instance, lcb_VIEWHANDLE handle);
|
|
297
297
|
|
|
298
|
+
#ifdef LCB_TRACING
|
|
299
|
+
/**
|
|
300
|
+
* @uncommitted
|
|
301
|
+
*/
|
|
302
|
+
LIBCOUCHBASE_API
|
|
303
|
+
void lcb_view_set_parent_span(lcb_t instance, lcb_VIEWHANDLE handle, lcbtrace_SPAN *span);
|
|
304
|
+
#endif
|
|
305
|
+
|
|
298
306
|
/**@}*/
|
|
299
307
|
|
|
300
308
|
#ifdef __cplusplus
|
|
@@ -69,8 +69,16 @@ extern "C"
|
|
|
69
69
|
* See section 3.1 Magic byte
|
|
70
70
|
*/
|
|
71
71
|
typedef enum {
|
|
72
|
+
/* Request packet from client to server */
|
|
72
73
|
PROTOCOL_BINARY_REQ = 0x80,
|
|
73
|
-
|
|
74
|
+
/* Response packet from server to client */
|
|
75
|
+
PROTOCOL_BINARY_RES = 0x81,
|
|
76
|
+
/* Response packet from server to client containing frame extras */
|
|
77
|
+
PROTOCOL_BINARY_ARES = 0x18,
|
|
78
|
+
/* Request packet from server to client */
|
|
79
|
+
PROTOCOL_BINARY_SREQ = 0x82,
|
|
80
|
+
/* Response packet from client to server */
|
|
81
|
+
PROTOCOL_BINARY_SRES = 0x83
|
|
74
82
|
} protocol_binary_magic;
|
|
75
83
|
|
|
76
84
|
/**
|
|
@@ -152,6 +160,11 @@ extern "C"
|
|
|
152
160
|
*/
|
|
153
161
|
PROTOCOL_BINARY_RESPONSE_XATTR_EINVAL = 0x87,
|
|
154
162
|
|
|
163
|
+
/**
|
|
164
|
+
* Operation attempted with an unknown collection.
|
|
165
|
+
*/
|
|
166
|
+
PROTOCOL_BINARY_RESPONSE_UNKNOWN_COLLECTION = 0x88,
|
|
167
|
+
|
|
155
168
|
/*
|
|
156
169
|
* Sub-document specific responses.
|
|
157
170
|
*/
|
|
@@ -706,28 +719,45 @@ extern "C"
|
|
|
706
719
|
* Definition of hello's features.
|
|
707
720
|
*/
|
|
708
721
|
typedef enum {
|
|
709
|
-
|
|
722
|
+
PROTOCOL_BINARY_FEATURE_INVALID = 0x01,
|
|
710
723
|
PROTOCOL_BINARY_FEATURE_TLS = 0x2,
|
|
711
724
|
PROTOCOL_BINARY_FEATURE_TCPNODELAY = 0x03,
|
|
712
725
|
PROTOCOL_BINARY_FEATURE_MUTATION_SEQNO = 0x04,
|
|
713
726
|
PROTOCOL_BINARY_FEATURE_TCPDELAY = 0x05,
|
|
714
727
|
PROTOCOL_BINARY_FEATURE_XATTR = 0x06,
|
|
715
728
|
PROTOCOL_BINARY_FEATURE_XERROR = 0x07,
|
|
716
|
-
PROTOCOL_BINARY_FEATURE_SELECT_BUCKET = 0x08
|
|
729
|
+
PROTOCOL_BINARY_FEATURE_SELECT_BUCKET = 0x08,
|
|
730
|
+
PROTOCOL_BINARY_FEATURE_COLLECTIONS = 0x09,
|
|
731
|
+
PROTOCOL_BINARY_FEATURE_SNAPPY = 0x0a,
|
|
732
|
+
PROTOCOL_BINARY_FEATURE_JSON = 0x0b,
|
|
733
|
+
PROTOCOL_BINARY_FEATURE_DUPLEX = 0x0c,
|
|
734
|
+
PROTOCOL_BINARY_FEATURE_CLUSTERMAP_CHANGE_NOTIFICATION = 0x0d,
|
|
735
|
+
PROTOCOL_BINARY_FEATURE_UNORDERED_EXECUTION = 0x0e,
|
|
736
|
+
PROTOCOL_BINARY_FEATURE_TRACING = 0x0f
|
|
717
737
|
} protocol_binary_hello_features;
|
|
718
738
|
|
|
719
|
-
|
|
720
|
-
|
|
739
|
+
#define MEMCACHED_FIRST_HELLO_FEATURE 0x01
|
|
740
|
+
#define MEMCACHED_TOTAL_HELLO_FEATURES 15
|
|
721
741
|
|
|
742
|
+
// clang-format off
|
|
722
743
|
#define protocol_feature_2_text(a) \
|
|
723
|
-
(a ==
|
|
744
|
+
(a == PROTOCOL_BINARY_FEATURE_INVALID) ? "Invalid" : \
|
|
724
745
|
(a == PROTOCOL_BINARY_FEATURE_TLS) ? "TLS" : \
|
|
725
|
-
(a == PROTOCOL_BINARY_FEATURE_TCPNODELAY) ? "TCP
|
|
746
|
+
(a == PROTOCOL_BINARY_FEATURE_TCPNODELAY) ? "TCP nodelay" : \
|
|
726
747
|
(a == PROTOCOL_BINARY_FEATURE_MUTATION_SEQNO) ? "Mutation seqno" : \
|
|
727
|
-
(a == PROTOCOL_BINARY_FEATURE_TCPDELAY) ? "TCP
|
|
748
|
+
(a == PROTOCOL_BINARY_FEATURE_TCPDELAY) ? "TCP delay" : \
|
|
728
749
|
(a == PROTOCOL_BINARY_FEATURE_XATTR) ? "XATTR" : \
|
|
729
|
-
(a == PROTOCOL_BINARY_FEATURE_XERROR) ? "
|
|
730
|
-
(a == PROTOCOL_BINARY_FEATURE_SELECT_BUCKET) ? "Select
|
|
750
|
+
(a == PROTOCOL_BINARY_FEATURE_XERROR) ? "XERROR": \
|
|
751
|
+
(a == PROTOCOL_BINARY_FEATURE_SELECT_BUCKET) ? "Select bucket": \
|
|
752
|
+
(a == PROTOCOL_BINARY_FEATURE_COLLECTIONS) ? "Collections": \
|
|
753
|
+
(a == PROTOCOL_BINARY_FEATURE_SNAPPY) ? "Snappy": \
|
|
754
|
+
(a == PROTOCOL_BINARY_FEATURE_JSON) ? "JSON": \
|
|
755
|
+
(a == PROTOCOL_BINARY_FEATURE_DUPLEX) ? "Duplex": \
|
|
756
|
+
(a == PROTOCOL_BINARY_FEATURE_CLUSTERMAP_CHANGE_NOTIFICATION) ? "Clustermap change notification": \
|
|
757
|
+
(a == PROTOCOL_BINARY_FEATURE_UNORDERED_EXECUTION) ? "Unordered execution": \
|
|
758
|
+
(a == PROTOCOL_BINARY_FEATURE_TRACING) ? "Tracing": \
|
|
759
|
+
"Unknown"
|
|
760
|
+
// clang-format on
|
|
731
761
|
|
|
732
762
|
/**
|
|
733
763
|
* The HELLO command is used by the client and the server to agree
|
|
@@ -5,12 +5,12 @@ Release: @RELEASE@%{?dist}
|
|
|
5
5
|
Vendor: Couchbase, Inc.
|
|
6
6
|
Packager: Couchbase SDK Team <support@couchbase.com>
|
|
7
7
|
License: ASL 2.0
|
|
8
|
-
Group: System Environment/Libraries
|
|
9
8
|
BuildRequires: gcc, gcc-c++
|
|
10
9
|
BuildRequires: cmake >= 2.8.9
|
|
11
10
|
BuildRequires: pkgconfig(libevent) >= 2
|
|
12
11
|
BuildRequires: libev-devel >= 3
|
|
13
12
|
BuildRequires: openssl-devel
|
|
13
|
+
BuildRequires: systemtap-sdt-devel, systemtap-devel
|
|
14
14
|
URL: https://developer.couchbase.com/server/other-products/release-notes-archives/c-sdk
|
|
15
15
|
Source: https://packages.couchbase.com/clients/c/@TARREDAS@.tar.gz
|
|
16
16
|
BuildRoot: %{_topdir}/build/@TARREDAS@
|
|
@@ -24,21 +24,18 @@ Suggests: %{name}2-tools%{_isa} = %{version}-%{release}
|
|
|
24
24
|
This is the client and protocol library for Couchbase project.
|
|
25
25
|
|
|
26
26
|
%package -n %{name}2-libevent
|
|
27
|
-
Group: System Environment/Libraries
|
|
28
27
|
Summary: Couchbase client library - libevent IO back-end
|
|
29
28
|
Requires: %{name}2-core%{?_isa} = %{version}-%{release}
|
|
30
29
|
%description -n %{name}2-libevent
|
|
31
30
|
This package provides libevent back-end for libcouchbase
|
|
32
31
|
|
|
33
32
|
%package -n %{name}2-libev
|
|
34
|
-
Group: System Environment/Libraries
|
|
35
33
|
Summary: Couchbase client library - libev IO back-end
|
|
36
34
|
Requires: %{name}2-core%{?_isa} = %{version}-%{release}
|
|
37
35
|
%description -n %{name}2-libev
|
|
38
36
|
This package provides libev back-end for libcouchbase
|
|
39
37
|
|
|
40
38
|
%package -n %{name}2-core
|
|
41
|
-
Group: System Environment/Libraries
|
|
42
39
|
Summary: Couchbase client library - core
|
|
43
40
|
Provides: %{name}2%{?_isa} = %{version}-%{release}
|
|
44
41
|
%description -n %{name}2-core
|
|
@@ -50,21 +47,19 @@ installed back-end. It is also possible to integrate another IO back-end
|
|
|
50
47
|
or write your own.
|
|
51
48
|
|
|
52
49
|
%package -n %{name}2-bin
|
|
53
|
-
Group: Development/Tools
|
|
54
50
|
Summary: Couchbase Client Tools
|
|
55
51
|
Requires: %{name}2-core%{?_isa} = %{version}-%{release}
|
|
56
52
|
%description -n %{name}2-bin
|
|
57
53
|
This is the CLI tools Couchbase project.
|
|
58
54
|
|
|
59
55
|
%package devel
|
|
60
|
-
Group: Development/Libraries
|
|
61
56
|
Summary: Couchbase Client & Protocol Library - Header files
|
|
62
57
|
Requires: %{name}2-core%{?_isa} = %{version}-%{release}
|
|
63
58
|
%description devel
|
|
64
59
|
Development files for the Couchbase Client & Protocol Library
|
|
65
60
|
|
|
66
61
|
%prep
|
|
67
|
-
%
|
|
62
|
+
%autosetup -p1 -n@TARREDAS@
|
|
68
63
|
%cmake -DLCB_NO_MOCK=1 -DLCB_BUILD_LIBUV=OFF
|
|
69
64
|
|
|
70
65
|
%build
|
|
@@ -74,7 +69,7 @@ Development files for the Couchbase Client & Protocol Library
|
|
|
74
69
|
%make_install
|
|
75
70
|
|
|
76
71
|
%check
|
|
77
|
-
make test
|
|
72
|
+
make %{_smp_mflags} alltests && make test
|
|
78
73
|
|
|
79
74
|
%clean
|
|
80
75
|
%{__rm} -rf %{buildroot}
|
|
@@ -84,26 +79,23 @@ make test
|
|
|
84
79
|
%postun -n %{name}2-core -p /sbin/ldconfig
|
|
85
80
|
|
|
86
81
|
%files -n %{name}2-core
|
|
87
|
-
%defattr(-, root, root)
|
|
88
82
|
%{_libdir}/%{name}.so.*
|
|
89
|
-
%doc README.markdown
|
|
83
|
+
%doc README.markdown RELEASE_NOTES.markdown
|
|
84
|
+
%license LICENSE
|
|
85
|
+
%{_datadir}/systemtap/tapset/libcouchbase.so*
|
|
90
86
|
|
|
91
87
|
%files -n %{name}2-libevent
|
|
92
|
-
%defattr(-, root, root)
|
|
93
88
|
%{_libdir}/%{name}_libevent.so
|
|
94
89
|
|
|
95
90
|
%files -n %{name}2-libev
|
|
96
|
-
%defattr(-, root, root)
|
|
97
91
|
%{_libdir}/%{name}_libev.so
|
|
98
92
|
|
|
99
93
|
%files -n %{name}2-bin
|
|
100
|
-
%defattr(-, root, root)
|
|
101
94
|
%{_bindir}/cbc*
|
|
102
95
|
%{_mandir}/man1/cbc*.1*
|
|
103
96
|
%{_mandir}/man4/cbcrc*.4*
|
|
104
97
|
|
|
105
98
|
%files devel
|
|
106
|
-
%defattr(-, root, root)
|
|
107
99
|
%{_includedir}/%{name}
|
|
108
100
|
%{_libdir}/%{name}.so
|
|
109
101
|
%{_libdir}/pkgconfig/%{name}.pc
|
|
@@ -342,7 +342,10 @@ sel_destroy_iops(struct lcb_io_opt_st *iops)
|
|
|
342
342
|
sel_EVENT *ev;
|
|
343
343
|
sel_TIMER *tm;
|
|
344
344
|
|
|
345
|
-
|
|
345
|
+
if (io->event_loop != 0) {
|
|
346
|
+
fprintf(stderr, "WARN: libcouchbase(plugin-select): the event loop might be still active, but it still try to "
|
|
347
|
+
"free resources\n");
|
|
348
|
+
}
|
|
346
349
|
LCB_LIST_SAFE_FOR(ii, nn, &io->events.list) {
|
|
347
350
|
ev = LCB_LIST_ITEM(ii, sel_EVENT, list);
|
|
348
351
|
sel_event_free(iops, ev);
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2017-2018 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
1
18
|
#ifndef LCB_AUTH_PRIV_H
|
|
2
19
|
#define LCB_AUTH_PRIV_H
|
|
3
20
|
#include <libcouchbase/auth.h>
|
|
@@ -17,17 +34,22 @@ public:
|
|
|
17
34
|
const std::string& password() const { return m_password; }
|
|
18
35
|
|
|
19
36
|
// Get the username and password for a specific bucket
|
|
20
|
-
const std::string
|
|
21
|
-
const std::string
|
|
37
|
+
const std::string username_for(const char *host, const char *port, const char *bucket) const;
|
|
38
|
+
const std::string password_for(const char *host, const char *port, const char *bucket) const;
|
|
22
39
|
|
|
23
40
|
const Map& buckets() const { return m_buckets; }
|
|
24
|
-
Authenticator() : m_refcount(1), m_mode(LCBAUTH_MODE_CLASSIC)
|
|
41
|
+
Authenticator() : m_refcount(1), m_mode(LCBAUTH_MODE_CLASSIC), m_usercb(NULL), m_passcb(NULL), m_cookie(NULL)
|
|
42
|
+
{
|
|
43
|
+
}
|
|
25
44
|
Authenticator(const Authenticator&);
|
|
26
45
|
|
|
27
46
|
size_t refcount() const { return m_refcount; }
|
|
28
47
|
void incref() { ++m_refcount; }
|
|
29
48
|
void decref() { if (!--m_refcount) { delete this; } }
|
|
30
49
|
lcb_error_t set_mode(lcbauth_MODE mode_) {
|
|
50
|
+
if (mode_ == LCBAUTH_MODE_DYNAMIC && (m_usercb == NULL || m_passcb == NULL)) {
|
|
51
|
+
return LCB_EINVAL;
|
|
52
|
+
}
|
|
31
53
|
if (m_buckets.size() || m_username.size() || m_password.size()) {
|
|
32
54
|
return LCB_ERROR;
|
|
33
55
|
} else {
|
|
@@ -40,13 +62,23 @@ public:
|
|
|
40
62
|
lcb_error_t add(const std::string& user, const std::string& pass, int flags) {
|
|
41
63
|
return add(user.c_str(), pass.c_str(), flags);
|
|
42
64
|
}
|
|
65
|
+
lcb_error_t set_callbacks(void *cookie, lcb_AUTHCALLBACK usercb, lcb_AUTHCALLBACK passcb)
|
|
66
|
+
{
|
|
67
|
+
m_usercb = usercb;
|
|
68
|
+
m_passcb = passcb;
|
|
69
|
+
m_cookie = cookie;
|
|
70
|
+
return LCB_SUCCESS;
|
|
71
|
+
}
|
|
43
72
|
|
|
44
|
-
private:
|
|
73
|
+
private:
|
|
45
74
|
Map m_buckets;
|
|
46
75
|
std::string m_username;
|
|
47
76
|
std::string m_password;
|
|
48
77
|
size_t m_refcount;
|
|
49
78
|
lcbauth_MODE m_mode;
|
|
79
|
+
lcb_AUTHCALLBACK m_usercb;
|
|
80
|
+
lcb_AUTHCALLBACK m_passcb;
|
|
81
|
+
void *m_cookie;
|
|
50
82
|
};
|
|
51
83
|
}
|
|
52
84
|
#endif
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2017-2018 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
1
18
|
#include <libcouchbase/couchbase.h>
|
|
2
19
|
#include "auth-priv.h"
|
|
3
20
|
|
|
@@ -18,6 +35,10 @@ lcbauth_add_pass(lcb_AUTHENTICATOR *auth, const char *u, const char *p, int flag
|
|
|
18
35
|
lcb_error_t
|
|
19
36
|
Authenticator::add(const char *u, const char *p, int flags)
|
|
20
37
|
{
|
|
38
|
+
if (!u) {
|
|
39
|
+
return LCB_EINVAL;
|
|
40
|
+
}
|
|
41
|
+
|
|
21
42
|
if (!(flags & (LCBAUTH_F_BUCKET|LCBAUTH_F_CLUSTER))) {
|
|
22
43
|
return LCB_EINVAL;
|
|
23
44
|
}
|
|
@@ -49,33 +70,45 @@ Authenticator::add(const char *u, const char *p, int flags)
|
|
|
49
70
|
|
|
50
71
|
static const std::string EmptyString;
|
|
51
72
|
|
|
52
|
-
const std::string
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
const std::string Authenticator::username_for(const char *host, const char *port, const char *bucket) const
|
|
74
|
+
{
|
|
75
|
+
switch (m_mode) {
|
|
76
|
+
case LCBAUTH_MODE_RBAC:
|
|
77
|
+
return m_username;
|
|
78
|
+
case LCBAUTH_MODE_DYNAMIC:
|
|
79
|
+
if (m_usercb != NULL) {
|
|
80
|
+
return m_usercb(m_cookie, host, port, bucket);
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
83
|
+
case LCBAUTH_MODE_CLASSIC:
|
|
84
|
+
// Find bucket specific credentials:
|
|
85
|
+
const Map::const_iterator it = m_buckets.find(bucket);
|
|
86
|
+
if (it != m_buckets.end()) {
|
|
87
|
+
return it->first;
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
64
90
|
}
|
|
91
|
+
return EmptyString;
|
|
65
92
|
}
|
|
66
93
|
|
|
67
|
-
const std::string
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
94
|
+
const std::string Authenticator::password_for(const char *host, const char *port, const char *bucket) const
|
|
95
|
+
{
|
|
96
|
+
switch (m_mode) {
|
|
97
|
+
case LCBAUTH_MODE_RBAC:
|
|
98
|
+
return m_password;
|
|
99
|
+
case LCBAUTH_MODE_DYNAMIC:
|
|
100
|
+
if (m_passcb != NULL) {
|
|
101
|
+
return m_passcb(m_cookie, host, port, bucket);
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
case LCBAUTH_MODE_CLASSIC:
|
|
105
|
+
const Map::const_iterator it = m_buckets.find(bucket);
|
|
106
|
+
if (it != m_buckets.end()) {
|
|
107
|
+
return it->second;
|
|
108
|
+
}
|
|
109
|
+
break;
|
|
78
110
|
}
|
|
111
|
+
return EmptyString;
|
|
79
112
|
}
|
|
80
113
|
|
|
81
114
|
void
|
|
@@ -90,10 +123,10 @@ lcbauth_unref(lcb_AUTHENTICATOR *auth)
|
|
|
90
123
|
auth->decref();
|
|
91
124
|
}
|
|
92
125
|
|
|
93
|
-
Authenticator::Authenticator(const Authenticator&
|
|
94
|
-
: m_buckets(other.m_buckets), m_username(other.m_username),
|
|
95
|
-
|
|
96
|
-
|
|
126
|
+
Authenticator::Authenticator(const Authenticator &other)
|
|
127
|
+
: m_buckets(other.m_buckets), m_username(other.m_username), m_password(other.m_password), m_refcount(1),
|
|
128
|
+
m_mode(other.m_mode), m_usercb(other.m_usercb), m_passcb(other.m_passcb), m_cookie(other.m_cookie)
|
|
129
|
+
{
|
|
97
130
|
}
|
|
98
131
|
|
|
99
132
|
lcb_AUTHENTICATOR *
|
|
@@ -105,3 +138,9 @@ lcb_error_t
|
|
|
105
138
|
lcbauth_set_mode(lcb_AUTHENTICATOR *src, lcbauth_MODE mode) {
|
|
106
139
|
return src->set_mode(mode);
|
|
107
140
|
}
|
|
141
|
+
|
|
142
|
+
lcb_error_t lcbauth_set_callbacks(lcb_AUTHENTICATOR *auth, void *cookie, lcb_AUTHCALLBACK usercb,
|
|
143
|
+
lcb_AUTHCALLBACK passcb)
|
|
144
|
+
{
|
|
145
|
+
return auth->set_callbacks(cookie, usercb, passcb);
|
|
146
|
+
}
|
|
@@ -204,7 +204,7 @@ lcb_error_t Bootstrap::bootstrap(unsigned options) {
|
|
|
204
204
|
next_ts += LCB_US2NS(LCBT_SETTING(parent, weird_things_delay));
|
|
205
205
|
if (now < next_ts && errcounter < errthresh) {
|
|
206
206
|
lcb_log(LOGARGS(parent, INFO),
|
|
207
|
-
"Not requesting a config refresh because of throttling parameters. Next refresh possible in %
|
|
207
|
+
"Not requesting a config refresh because of throttling parameters. Next refresh possible in %" PRIu64 "ms or %u errors. "
|
|
208
208
|
"See LCB_CNTL_CONFDELAY_THRESH and LCB_CNTL_CONFERRTHRESH to modify the throttling settings",
|
|
209
209
|
LCB_NS2US(next_ts-now)/1000, (unsigned)errthresh-errcounter);
|
|
210
210
|
return LCB_SUCCESS;
|
|
@@ -29,9 +29,10 @@
|
|
|
29
29
|
#include <lcbio/timer-cxx.h>
|
|
30
30
|
#include <lcbio/ssl.h>
|
|
31
31
|
#include "ctx-log-inl.h"
|
|
32
|
+
|
|
33
|
+
#define LOGFMT CTX_LOGFMT
|
|
34
|
+
#define LOGID(p) CTX_LOGID(p->ioctx)
|
|
32
35
|
#define LOGARGS(cccp, lvl) cccp->parent->settings, "cccp", LCB_LOG_##lvl, __FILE__, __LINE__
|
|
33
|
-
#define LOGFMT "<%s:%s> "
|
|
34
|
-
#define LOGID(cccp) get_ctx_host(cccp->ioctx), get_ctx_port(cccp->ioctx)
|
|
35
36
|
|
|
36
37
|
struct CccpCookie;
|
|
37
38
|
|
|
@@ -140,13 +141,15 @@ CccpProvider::schedule_next_request(lcb_error_t err, bool can_rollover)
|
|
|
140
141
|
lcb::Server* server = instance->find_server(*next_host);
|
|
141
142
|
if (server) {
|
|
142
143
|
cmdcookie = new CccpCookie(this);
|
|
143
|
-
lcb_log(LOGARGS(this,
|
|
144
|
+
lcb_log(LOGARGS(this, TRACE), "Re-Issuing CCCP Command on server struct %p (" LCB_HOST_FMT ")", (void *)server,
|
|
145
|
+
LCB_HOST_ARG(this->parent->settings, next_host));
|
|
144
146
|
timer.rearm(settings().config_node_timeout);
|
|
145
147
|
instance->request_config(cmdcookie, server);
|
|
146
148
|
|
|
147
149
|
} else {
|
|
148
150
|
|
|
149
|
-
lcb_log(LOGARGS(this, INFO), "Requesting connection to node
|
|
151
|
+
lcb_log(LOGARGS(this, INFO), "Requesting connection to node " LCB_HOST_FMT " for CCCP configuration",
|
|
152
|
+
LCB_HOST_ARG(this->parent->settings, next_host));
|
|
150
153
|
creq = instance->memd_sockpool->get(*next_host,
|
|
151
154
|
settings().config_node_timeout,
|
|
152
155
|
on_connected, this);
|
|
@@ -262,6 +265,7 @@ on_connected(lcbio_SOCKET *sock, void *data, lcb_error_t err, lcbio_OSERR)
|
|
|
262
265
|
ioprocs.cb_read = io_read_handler;
|
|
263
266
|
cccp->ioctx = lcbio_ctx_new(sock, data, &ioprocs);
|
|
264
267
|
cccp->ioctx->subsys = "bc_cccp";
|
|
268
|
+
sock->service = LCBIO_SERVICE_CFG;
|
|
265
269
|
cccp->request_config();
|
|
266
270
|
}
|
|
267
271
|
|
|
@@ -324,7 +328,7 @@ CccpProvider::config_updated(lcbvb_CONFIG *vbc)
|
|
|
324
328
|
const char *mcaddr = lcbvb_get_hostport(vbc,
|
|
325
329
|
ii, LCBVB_SVCTYPE_DATA, mode);
|
|
326
330
|
if (!mcaddr) {
|
|
327
|
-
lcb_log(LOGARGS(this, DEBUG), "Node %lu has no data service", ii);
|
|
331
|
+
lcb_log(LOGARGS(this, DEBUG), "Node %lu has no data service", (unsigned long int)ii);
|
|
328
332
|
continue;
|
|
329
333
|
}
|
|
330
334
|
nodes->add(mcaddr, LCB_CONFIG_MCD_PORT);
|
|
@@ -383,7 +387,7 @@ CccpProvider::on_io_read()
|
|
|
383
387
|
return_error(LCB_PROTOCOL_ERROR);
|
|
384
388
|
}
|
|
385
389
|
|
|
386
|
-
std::string jsonstr(resp.
|
|
390
|
+
std::string jsonstr(resp.value(), resp.vallen());
|
|
387
391
|
std::string hoststr(lcbio_get_host(lcbio_ctx_sock(ioctx))->host);
|
|
388
392
|
|
|
389
393
|
resp.release(ioctx);
|
|
@@ -429,7 +433,8 @@ void CccpProvider::dump(FILE *fp) const {
|
|
|
429
433
|
|
|
430
434
|
for (size_t ii = 0; ii < nodes->size(); ii++) {
|
|
431
435
|
const lcb_host_t &curhost = (*nodes)[ii];
|
|
432
|
-
|
|
436
|
+
lcb_settings *dummy = NULL;
|
|
437
|
+
fprintf(fp, "CCCP NODE: " LCB_HOST_FMT "\n", LCB_HOST_ARG(dummy, &curhost));
|
|
433
438
|
}
|
|
434
439
|
fprintf(fp, "## END CCCP PROVIDER DUMP ##\n");
|
|
435
440
|
}
|