libcouchbase 1.2.8 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e84d37abd4f01d3b311fa83fb9e16ce72bd6915
|
4
|
+
data.tar.gz: c4ad09758711a1d26e27a41182f06c4100e023d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 771464b5f1b88f5f4e123628639a3fd8dfb3adaecd55645f8cdf4b69888b7cf2ab38aace66c45105c2e9af6905a4b90a46455055e158d75e89f66f1c47ff117d
|
7
|
+
data.tar.gz: 74f4262314b368ade557710421460d7a13e382e3f828ccf9fb0481aa86aea0153e5d581a064d9241baa0eae85800d2f2137255eca39a900eca2615ed4bb3a10d
|
data/.travis.yml
CHANGED
@@ -6,7 +6,7 @@ rvm:
|
|
6
6
|
- jruby-9.1.13.0
|
7
7
|
- jruby-head
|
8
8
|
- rubinius
|
9
|
-
- rubinius-3.
|
9
|
+
- rubinius-3.103
|
10
10
|
branches:
|
11
11
|
only:
|
12
12
|
- master
|
@@ -14,8 +14,8 @@ before_install:
|
|
14
14
|
- git submodule update --init --recursive
|
15
15
|
- gem install ffi
|
16
16
|
- sudo apt-get install libev-dev python-httplib2
|
17
|
-
- sudo wget https://packages.couchbase.com/releases/5.
|
18
|
-
- sudo dpkg -i couchbase-server-enterprise_5.
|
17
|
+
- sudo wget https://packages.couchbase.com/releases/5.1.0/couchbase-server-enterprise_5.1.0-ubuntu14.04_amd64.deb
|
18
|
+
- sudo dpkg -i couchbase-server-enterprise_5.1.0-ubuntu14.04_amd64.deb
|
19
19
|
- sleep 8
|
20
20
|
- sudo service couchbase-server status
|
21
21
|
- /opt/couchbase/bin/couchbase-cli cluster-init -c 127.0.0.1:8091 --cluster-username=admin --cluster-password=password --cluster-ramsize=320 --cluster-index-ramsize=256 --cluster-fts-ramsize=256 --services=data,index,query,fts
|
@@ -33,6 +33,6 @@ matrix:
|
|
33
33
|
- rvm: jruby-head
|
34
34
|
- rvm: ruby-head
|
35
35
|
- rvm: rubinius
|
36
|
-
- rvm: rubinius-3.
|
36
|
+
- rvm: rubinius-3.103
|
37
37
|
sudo: required
|
38
38
|
dist: trusty
|
data/README.md
CHANGED
@@ -92,16 +92,16 @@ bucket = Libcouchbase::Bucket.new(hosts: '127.0.0.1', bucket: 'default', passwor
|
|
92
92
|
bucket = Libcouchbase::Bucket.new(hosts: ['cb1.org', 'cb2.org'], bucket: 'app_data', password: 'goodluck')
|
93
93
|
```
|
94
94
|
|
95
|
-
|
95
|
+
Connections can be configured to use `:quiet` mode. This mean it won't raise
|
96
96
|
exceptions when the given key does not exist:
|
97
97
|
|
98
98
|
```ruby
|
99
|
+
bucket.quiet = true
|
99
100
|
bucket.get(:missing_key) #=> nil
|
100
101
|
```
|
101
102
|
|
102
|
-
It could be useful
|
103
|
-
|
104
|
-
You can turn on these exceptions by passing `:quiet => false` when you
|
103
|
+
It could be useful avoiding exception handling. (See `#add` and `#replace` operations).
|
104
|
+
You can turn off these exceptions by passing `:quiet => true` when you
|
105
105
|
are instantiating the connection or change corresponding attribute:
|
106
106
|
|
107
107
|
```ruby
|
@@ -187,8 +187,17 @@ bucket.touch(:foo, expire_at: (Time.now + 30))
|
|
187
187
|
|
188
188
|
### Set
|
189
189
|
|
190
|
-
The
|
191
|
-
|
190
|
+
The set command will unconditionally store an object in couchbase.
|
191
|
+
|
192
|
+
```ruby
|
193
|
+
bucket.add("foo", "bar")
|
194
|
+
bucket.add("foo", "bar", ttl: 30)
|
195
|
+
```
|
196
|
+
|
197
|
+
|
198
|
+
### Add
|
199
|
+
|
200
|
+
The add command will fail if the key already exists.
|
192
201
|
|
193
202
|
```ruby
|
194
203
|
bucket.add("foo", "bar")
|
@@ -198,8 +207,7 @@ bucket.add("foo", "bar", ttl: 30)
|
|
198
207
|
|
199
208
|
### Replace
|
200
209
|
|
201
|
-
The replace command will fail if the key already
|
202
|
-
options as set command above.
|
210
|
+
The replace command will fail if the key doesn't already exist.
|
203
211
|
|
204
212
|
```ruby
|
205
213
|
bucket.replace("foo", "bar")
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- mode: cmake; cmake-tab-width: 4; indent-tabs-mode: nil -*-
|
2
|
+
#
|
1
3
|
# libcouchbase
|
2
4
|
# Copyright (C) 2013 Couchbase, Inc
|
3
5
|
# All rights reserved.
|
@@ -21,7 +23,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9)
|
|
21
23
|
# These variables can be modified as needed
|
22
24
|
|
23
25
|
# Couchbase mock path to download
|
24
|
-
SET(COUCHBASE_MOCK_VERSION CouchbaseMock-1.5.
|
26
|
+
SET(COUCHBASE_MOCK_VERSION CouchbaseMock-1.5.19.jar)
|
25
27
|
# Maven repository where ${COUCHBASE_MOCK_VERSION} is to be found
|
26
28
|
SET(COUCHBASE_MOCK_DLSERVER http://packages.couchbase.com/clients/c/mock)
|
27
29
|
project(libcouchbase)
|
@@ -34,10 +36,8 @@ OPTION(LCB_BUILD_LIBEV "Build the libev plugin (if available)" ON)
|
|
34
36
|
OPTION(LCB_BUILD_LIBUV "Build the libuv plugin (if available)" ON)
|
35
37
|
OPTION(LCB_MAINTAINER_MODE "Enables maintainer mode" OFF)
|
36
38
|
OPTION(LCB_NO_SSL "Do not compile SSL support" OFF)
|
37
|
-
OPTION(LCB_NO_SNAPPY "Do not compile snappy support" ON)
|
38
39
|
OPTION(LCB_USE_ASAN "Use AddressSanitizer support (Requires Clang)" OFF)
|
39
40
|
OPTION(LCB_USE_COVERAGE "Build with code coverage support" OFF)
|
40
|
-
OPTION(LCB_STATIC_SNAPPY "Use the bundled libsnappy. Do not link with system snappy" ${WIN32})
|
41
41
|
OPTION(LCB_USE_ARCHLIBDIR "Use architecture-prefixed library installation directory, if possible" OFF)
|
42
42
|
OPTION(LCB_BUILD_EXAMPLES "Build example applications" OFF)
|
43
43
|
OPTION(LCB_NO_MOCK "Don't run tests which depend on the mock" OFF)
|
@@ -45,6 +45,7 @@ OPTION(LCB_BUILD_DTRACE "Build DTrace instrumentation, if available on platform"
|
|
45
45
|
OPTION(LCB_EMBED_PLUGIN_LIBEVENT "Embed the libevent plugin" OFF)
|
46
46
|
OPTION(LCB_STATIC_LIBEVENT "Link static libevent (only applicable if EMBED_PLUGIN_LIBEVENT is ON" OFF)
|
47
47
|
OPTION(LCB_USE_HDR_HISTOGRAM "Use HdrHistogram for statistics recording" OFF)
|
48
|
+
OPTION(LCB_TRACING "Enable builtin tracing" ON)
|
48
49
|
|
49
50
|
### END CONFIGURABLES ###
|
50
51
|
IF(MSVC)
|
@@ -203,6 +204,7 @@ ENDMACRO()
|
|
203
204
|
ADD_LIBRARY(netbuf OBJECT ${LCB_NETBUF_SRC})
|
204
205
|
ADD_LIBRARY(netbuf-malloc OBJECT ${LCB_NETBUF_SRC})
|
205
206
|
ADD_LIBRARY(mcreq OBJECT ${LCB_MC_SRC})
|
207
|
+
ADD_LIBRARY(mcreq-cxx OBJECT ${LCB_MC_CXXSRC})
|
206
208
|
ADD_LIBRARY(rdb OBJECT ${LCB_RDB_SRC})
|
207
209
|
ADD_LIBRARY(lcbio OBJECT ${LCB_IO_SRC})
|
208
210
|
ADD_LIBRARY(lcbio-cxx OBJECT ${LCB_IO_CXXSRC})
|
@@ -218,24 +220,41 @@ LCB_UTIL(lcbio)
|
|
218
220
|
LCB_CXXUTIL(lcbio-cxx)
|
219
221
|
LCB_UTIL(couchbase_utils)
|
220
222
|
LCB_UTIL(mcreq)
|
223
|
+
LCB_CXXUTIL(mcreq-cxx)
|
221
224
|
LCB_UTIL(lcbht)
|
222
225
|
LCB_UTIL(lcbcore)
|
223
226
|
LCB_CXXUTIL(lcbcore-cxx)
|
224
227
|
|
228
|
+
IF(LCB_NO_SSL)
|
229
|
+
MESSAGE(STATUS "SSL support will be disabled")
|
230
|
+
ADD_DEFINITIONS(-DLCB_NO_SSL=1)
|
231
|
+
ELSE()
|
232
|
+
IF(APPLE)
|
233
|
+
IF(NOT OpenSSL_DIR)
|
234
|
+
EXECUTE_PROCESS(COMMAND brew --prefix openssl
|
235
|
+
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
|
236
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
237
|
+
MESSAGE(STATUS "Found OpenSSL Prefix: ${OPENSSL_ROOT_DIR}")
|
238
|
+
ENDIF()
|
239
|
+
ENDIF()
|
240
|
+
FIND_PACKAGE(OpenSSL)
|
241
|
+
IF(OPENSSL_FOUND)
|
242
|
+
MESSAGE(STATUS "SSL Found")
|
243
|
+
ELSE()
|
244
|
+
MESSAGE(STATUS "SSL Not Found")
|
245
|
+
ENDIF()
|
246
|
+
ENDIF()
|
247
|
+
|
225
248
|
ADD_SUBDIRECTORY(src/vbucket)
|
226
249
|
ADD_SUBDIRECTORY(contrib/cbsasl)
|
227
250
|
ADD_SUBDIRECTORY(contrib/cliopts)
|
228
251
|
ADD_SUBDIRECTORY(src/ssl)
|
229
252
|
ADD_SUBDIRECTORY(contrib/lcb-jsoncpp)
|
253
|
+
ADD_SUBDIRECTORY(contrib/snappy)
|
230
254
|
IF(LCB_BUILD_EXAMPLES)
|
231
255
|
ADD_SUBDIRECTORY(example)
|
232
256
|
ENDIF()
|
233
257
|
|
234
|
-
IF(LCB_NO_SSL)
|
235
|
-
MESSAGE(STATUS "SSL support will be disabled")
|
236
|
-
ADD_DEFINITIONS(-DLCB_NO_SSL=1)
|
237
|
-
ENDIF()
|
238
|
-
|
239
258
|
IF(LCB_BUILD_STATIC)
|
240
259
|
SET(_lcb_linkspec STATIC)
|
241
260
|
ELSE()
|
@@ -251,13 +270,16 @@ FILE(GLOB LCB_JSPARSE_SRC src/jsparse/*.cc)
|
|
251
270
|
ADD_LIBRARY(lcb_jsparse OBJECT ${LCB_JSPARSE_SRC})
|
252
271
|
LCB_CXXUTIL(lcb_jsparse)
|
253
272
|
|
273
|
+
INCLUDE_DIRECTORIES(contrib/snappy)
|
274
|
+
|
254
275
|
SET(LCB_CORE_OBJS
|
255
276
|
$<TARGET_OBJECTS:couchbase_select>
|
256
277
|
$<TARGET_OBJECTS:couchbase_utils>
|
257
|
-
$<TARGET_OBJECTS:vbucket>
|
278
|
+
$<TARGET_OBJECTS:vbucket-lcb>
|
258
279
|
$<TARGET_OBJECTS:mcreq>
|
280
|
+
$<TARGET_OBJECTS:mcreq-cxx>
|
259
281
|
$<TARGET_OBJECTS:netbuf>
|
260
|
-
$<TARGET_OBJECTS:cbsasl>
|
282
|
+
$<TARGET_OBJECTS:cbsasl-lcb>
|
261
283
|
$<TARGET_OBJECTS:lcbio>
|
262
284
|
$<TARGET_OBJECTS:lcbio-cxx>
|
263
285
|
$<TARGET_OBJECTS:rdb>
|
@@ -266,6 +288,7 @@ SET(LCB_CORE_OBJS
|
|
266
288
|
$<TARGET_OBJECTS:lcbcore-cxx>
|
267
289
|
$<TARGET_OBJECTS:lcb_jsparse>
|
268
290
|
$<TARGET_OBJECTS:lcb_jsoncpp>
|
291
|
+
$<TARGET_OBJECTS:lcb_snappy>
|
269
292
|
${LCB_DTRACE_OBJECT}
|
270
293
|
${lcb_plat_objs}
|
271
294
|
${lcb_ssl_objs})
|
@@ -305,30 +328,9 @@ ELSE()
|
|
305
328
|
DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
306
329
|
ENDIF()
|
307
330
|
|
308
|
-
|
309
|
-
IF(NOT LCB_NO_SNAPPY)
|
310
|
-
IF(LCB_STATIC_SNAPPY)
|
311
|
-
MESSAGE(STATUS "Will use embedded libsnappy")
|
312
|
-
ADD_SUBDIRECTORY(contrib/snappy)
|
313
|
-
SET(LCB_SNAPPY_LINK lcbsnappy)
|
314
|
-
ELSE()
|
315
|
-
INCLUDE(cmake/Modules/FindCouchbaseSnappy.cmake)
|
316
|
-
IF(NOT SNAPPY_FOUND)
|
317
|
-
MESSAGE(FATAL_ERROR "Snappy not found and building with dynamic snappy requested")
|
318
|
-
ELSE()
|
319
|
-
SET(LCB_SNAPPY_LINK ${SNAPPY_LIBRARIES})
|
320
|
-
INCLUDE_DIRECTORIES(${SNAPPY_INCLUDES})
|
321
|
-
ENDIF()
|
322
|
-
ENDIF()
|
323
|
-
ELSE()
|
324
|
-
MESSAGE(STATUS "Compression support will be disabled")
|
325
|
-
ADD_DEFINITIONS(-DLCB_NO_SNAPPY=1)
|
326
|
-
SET(LCB_SNAPPY_LINK "")
|
327
|
-
ENDIF()
|
328
|
-
|
329
331
|
SET_TARGET_PROPERTIES(couchbase PROPERTIES PREFIX "lib")
|
330
332
|
SET_TARGET_PROPERTIES(couchbase PROPERTIES IMPORT_PREFIX "lib")
|
331
|
-
SET(LCB_LINK_DEPS ${lcb_plat_libs} ${lcb_ssl_libs} ${
|
333
|
+
SET(LCB_LINK_DEPS ${lcb_plat_libs} ${lcb_ssl_libs} ${LCB_HDR_HISTOGRAM_LINK})
|
332
334
|
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
333
335
|
SET(LCB_LINK_DEPS ${LCB_LINK_DEPS} rt)
|
334
336
|
ENDIF()
|
@@ -1,5 +1,271 @@
|
|
1
1
|
# Release Notes
|
2
2
|
|
3
|
+
## 2.8.7 (May 2 2018)
|
4
|
+
|
5
|
+
* [CCBC-917](https://issues.couchbase.com/browse/CCBC-917): Add tracing for
|
6
|
+
observe. So now the library will group all CAS-observe operations, and in
|
7
|
+
general will nest observe operations under common parent when
|
8
|
+
`lcb_storedur3` API used.
|
9
|
+
|
10
|
+
* [CCBC-918](https://issues.couchbase.com/browse/CCBC-918): Don't ping KV on
|
11
|
+
nodes without DATA service.
|
12
|
+
|
13
|
+
* [CCBC-685](https://issues.couchbase.com/browse/CCBC-685): Implementation of
|
14
|
+
SCRAM-SHA{1,256,512} authentication mechanisms for KV service. Support for
|
15
|
+
SCRAM-SHA* SASL auth is disabled by default, because it is not portable, and
|
16
|
+
not every Couchbase service supports it. But if it is necessary, it could be
|
17
|
+
enabled using `lcb_cntl(..., LCB_CNTL_FORCE_SASL_MECH, ...)` operation, or
|
18
|
+
`"force_sasl_mech=SCRAM-SHA512"` option in connection string.
|
19
|
+
|
20
|
+
* [CCBC-919](https://issues.couchbase.com/browse/CCBC-919): More granular
|
21
|
+
settings for compression. Now it is possible to specify minimum size of the
|
22
|
+
value to be considered for compression, and also the minimal ratio
|
23
|
+
`(compressed / original)`. See `LCB_CNTL_COMPRESSION_MIN_SIZE` (or
|
24
|
+
`"compression_min_size=100"` in bytes), and `LCB_CNTL_COMPRESSION_MIN_RATIO`
|
25
|
+
(or `"compression=0.9"`).
|
26
|
+
|
27
|
+
* [CCBC-916](https://issues.couchbase.com/browse/CCBC-916): Do not set JSON
|
28
|
+
datatype if server didn't ack it. Fixes behavior where old server rejecting
|
29
|
+
commands as invalid when compression is enabled.
|
30
|
+
|
31
|
+
* [CCBC-923](https://issues.couchbase.com/browse/CCBC-923): Allow to disable
|
32
|
+
fast-forward map for NMV handler. See `LCB_CNTL_VB_NOREMAP`
|
33
|
+
(`"vb_noremap=true"`). This option is disabled by default.
|
34
|
+
|
35
|
+
Build improvements:
|
36
|
+
|
37
|
+
* [CCBC-915](https://issues.couchbase.com/browse/CCBC-915): Fix builds
|
38
|
+
where DEBUG macro is defined
|
39
|
+
|
40
|
+
* [CBD-2405](https://issues.couchbase.com/browse/CBD-2405): Change
|
41
|
+
target names in conflict with Server targets
|
42
|
+
|
43
|
+
## 2.8.6 (April 5 2018)
|
44
|
+
|
45
|
+
* [CCBC-888](https://issues.couchbase.com/browse/CCBC-888): Add threshold
|
46
|
+
logging tracer, which tracks and reports above threshold and orphaned operations.
|
47
|
+
This is beta functionality, which is disabled by default. To enable it, use
|
48
|
+
`enable_tracing=on` in the connection string.
|
49
|
+
|
50
|
+
* [CCBC-910](https://issues.couchbase.com/browse/CCBC-910): Field encryption
|
51
|
+
API. The `lcbcrypto_*` functions abstracts encrypted field layout from actual
|
52
|
+
crypto implementations (OpenSSL, libsodium, etc.). The wrapper or application
|
53
|
+
using libcouchbase is expected to connect their own crypto and key providers, while
|
54
|
+
libcouchbase provides transformation of the encrypted data. See
|
55
|
+
sample crypto provider in [example/crypto](example/crypto).
|
56
|
+
|
57
|
+
* [CCBC-904](https://issues.couchbase.com/browse/CCBC-904): Remove trailing
|
58
|
+
comma in `lcb_KVBUFTYPE` enum. Fixes build on some older
|
59
|
+
compilers.
|
60
|
+
|
61
|
+
* [CCBC-907](https://issues.couchbase.com/browse/CCBC-907): cbc-n1qlback: Do
|
62
|
+
not require trailing empty line for input.
|
63
|
+
|
64
|
+
* [CCBC-908](https://issues.couchbase.com/browse/CCBC-908): cbc-n1qlback:
|
65
|
+
Report number of loaded queries.
|
66
|
+
|
67
|
+
* Add ability to write OPS/SEC from cbc-pillowfight to a file
|
68
|
+
|
69
|
+
cbc-pillowfight 2> /tmp/stats.txt
|
70
|
+
|
71
|
+
or, when writing to terminal required
|
72
|
+
|
73
|
+
cbc-pillowfight 2>&1 | tee /tmp/stats.txt
|
74
|
+
|
75
|
+
* Build improvements for easier integration into with server manifest (and TLM project).
|
76
|
+
|
77
|
+
## 2.8.5 (February 23 2018)
|
78
|
+
|
79
|
+
* [CCBC-883](https://issues.couchbase.com/browse/CCBC-883): Always use built-in compression.
|
80
|
+
It is not possible to unbundle the Snappy library, as libcouchbase uses the C++ API which is not
|
81
|
+
exported in the headers. Also, compression can now work on all types of buffers, including
|
82
|
+
`LCB_KV_IOV` and `LCB_KV_IOVCOPY`. This fixes compression in `cbc-pillowfight` tool.
|
83
|
+
|
84
|
+
* [CCBC-895](https://issues.couchbase.com/browse/CCBC-895): Fix typo in rendering IPv6 addresses
|
85
|
+
in `lcb_diag`.
|
86
|
+
|
87
|
+
* [CCBC-879](https://issues.couchbase.com/browse/CCBC-879): Implement log redaction. When
|
88
|
+
`log_redaction=on` is specified in the connection string, the library will wrap sensitive
|
89
|
+
data in the logs in special tags, which can be processed by the
|
90
|
+
`cblogredaction` tool from the server distribution.
|
91
|
+
|
92
|
+
* [CCBC-893](https://issues.couchbase.com/browse/CCBC-894): Updated list of subdoc error codes.
|
93
|
+
|
94
|
+
* [CCBC-892](https://issues.couchbase.com/browse/CCBC-892): Enable the SSL trust store to be in
|
95
|
+
a separate file. Trust store has to be specified with option `truststorepath=…`, otherwise
|
96
|
+
the library will expect it to be stored with the certificate in `certpath=`.
|
97
|
+
|
98
|
+
* [CCBC-888](https://issues.couchbase.com/browse/CCBC-888): Per operation tracing. When
|
99
|
+
compiled with tracing support (`cmake -DLCB_TRACING=ON`), the library will expose the tracing
|
100
|
+
API, which allows to measure time of every data operation, and include some extra information.
|
101
|
+
The API is modeled after OpenTracing and allows one to write custom tracers to consume this
|
102
|
+
information. For more information, see an example in
|
103
|
+
[example/tracing/tracing.c](example/tracing/tracing.c). This is uncommitted API at this time.
|
104
|
+
|
105
|
+
Also this feature includes support for new type of the server responses, which include
|
106
|
+
time spent to execute the KV command on the server. This feature controlled by `enable_tracing`
|
107
|
+
option in connection string or `lcb_cntl(..., LCB_CNTL_ENABLE_TRACING, ...)`.
|
108
|
+
|
109
|
+
* Added basic support of JSON datatype. The library will negotiate a mode, in which the
|
110
|
+
application will see `LCB_VALUE_F_JSON` flag on datatype field of the response in the
|
111
|
+
operation callback, if the cluster detected the content of the document to be valid JSON.
|
112
|
+
Also the application can send this flag on the outgoing documents to notify the server
|
113
|
+
about payload format.
|
114
|
+
|
115
|
+
* Refresh dtrace/systemtap integration. Also adds tapset for SystemTap to simplify access to
|
116
|
+
trace points.
|
117
|
+
|
118
|
+
* cbc-pillowfight improvements and changes:
|
119
|
+
* dump diagnostics on `SIGQUIT` (CTRL-\ in terminal).
|
120
|
+
* with `-J`/`--json`, the JSON datatype will be sent on the documents.
|
121
|
+
* enable randomized document bodies with `-R`/`--random-body` switch.
|
122
|
+
* durability checks for pillowfight with `--persist-to`/`--replicate-to`.
|
123
|
+
* pessimistic locking of keys before updating with `--lock`.
|
124
|
+
* when requesting timings with `-T`/`--timings`, the application will no longer dump them
|
125
|
+
periodically.Instead it will await for the user to signal `SIGQUIT` and also dump
|
126
|
+
them on exit. The old mode of reporting regularly is enabled by repeating the switch more than
|
127
|
+
once (e.g. `-TT`).
|
128
|
+
|
129
|
+
* Added the cbc-watch command to monitor server stats. By default it tracks `cmd_total_ops`,
|
130
|
+
`cmd_total_gets` and `cmd_total_sets` updating stats once a second, and displaying
|
131
|
+
diff with the previous value.
|
132
|
+
|
133
|
+
|
134
|
+
## 2.8.4 (December 20 2017)
|
135
|
+
|
136
|
+
* [CCBC-880](https://issues.couchbase.com/browse/CCBC-880): Implement x.509 client
|
137
|
+
certificate authentication. Connection string must use TLS-enabled scheme
|
138
|
+
(`couchbases://` or `https://`) and set options `certpath` and `keypath`. For example,
|
139
|
+
|
140
|
+
couchbases://127.0.0.1?certpath=/path/to/chain.pem&keypath=/path/to/client.key
|
141
|
+
|
142
|
+
Read more at server docs: https://developer.couchbase.com/documentation/server/5.0/security/security-x509certsintro.html
|
143
|
+
|
144
|
+
* [CCBC-883](https://issues.couchbase.com/browse/CCBC-883): Revisit builtin compression
|
145
|
+
implementation (snappy). Add compression to cbc tools (see `--compress`, `-y` options).
|
146
|
+
Future versions of Couchbase Server will have end-to-end compression.
|
147
|
+
|
148
|
+
* [CCBC-885](https://issues.couchbase.com/browse/CCBC-885): Do not skip HTTP Basic
|
149
|
+
authentication when password is empty.
|
150
|
+
|
151
|
+
* [CCBC-876](https://issues.couchbase.com/browse/CCBC-876): Make sure that server
|
152
|
+
authority is always specified. In some cases, when libcouchbase generates vbucket
|
153
|
+
configuration or data service is not available, the authority of the server might be
|
154
|
+
NULL. This could cause issues, as we compare servers from configs using their authority
|
155
|
+
fields.
|
156
|
+
|
157
|
+
* [CCBC-878](https://issues.couchbase.com/browse/CCBC-878): Support collections in
|
158
|
+
cbc-pillowfight.
|
159
|
+
|
160
|
+
Note that this change does not expose anything related to Collections API for
|
161
|
+
libcouchbase. It defines hidden switches for pillowfight tool to allow benchmark of
|
162
|
+
collections. The switches are not documented and might be removed in the future. Use
|
163
|
+
with care.
|
164
|
+
|
165
|
+
Generate only `beer:<seqno>` keys:
|
166
|
+
|
167
|
+
cbc pillowfight --separator : --collection beer
|
168
|
+
|
169
|
+
Using many --collection will alternate in generating `beer:<seqno>`, `brewery:<seqno>`
|
170
|
+
keys (default separator is ":"):
|
171
|
+
|
172
|
+
cbc pillowfight --collection beer --collection brewery
|
173
|
+
|
174
|
+
* [CCBC-801](https://issues.couchbase.com/browse/CCBC-801): Expose information about
|
175
|
+
network IO for monitoring. The diagnostics exposed as string with encoded JSON object.
|
176
|
+
|
177
|
+
void diag_callback(lcb_t instance, int cbtype, const lcb_RESPBASE *rb)
|
178
|
+
{
|
179
|
+
const lcb_RESPDIAG *resp = (const lcb_RESPDIAG *)rb;
|
180
|
+
if (resp->rc != LCB_SUCCESS) {
|
181
|
+
fprintf(stderr, "failed: %s ", lcb_strerror(NULL, resp->rc));
|
182
|
+
} else {
|
183
|
+
if (resp->njson) {
|
184
|
+
fprintf(stderr, "%.*s", (int)resp->njson, resp->json);
|
185
|
+
}
|
186
|
+
}
|
187
|
+
}
|
188
|
+
|
189
|
+
lcb_install_callback3(instance, LCB_CALLBACK_DIAG, diag_callback);
|
190
|
+
lcb_CMDDIAG cmd = { 0 };
|
191
|
+
lcb_diag(instance, NULL, &cmd);
|
192
|
+
lcb_wait(instance);
|
193
|
+
|
194
|
+
* [CCBC-874](https://issues.couchbase.com/browse/CCBC-874): Dynamic authenticator. Note
|
195
|
+
that this feature should not be considered at public interface. To use it, application
|
196
|
+
have to define two callbacks, which will return username and password dependending on
|
197
|
+
bucket name and hostname/port of the endpoint.
|
198
|
+
|
199
|
+
std::map< std::string, std::string > credentials = {
|
200
|
+
{"protected", "secret"}
|
201
|
+
};
|
202
|
+
extern "C" {
|
203
|
+
static const char *get_username(void *cookie,
|
204
|
+
const char *host,
|
205
|
+
const char *port,
|
206
|
+
const char *bucket)
|
207
|
+
{
|
208
|
+
return bucket;
|
209
|
+
}
|
210
|
+
|
211
|
+
static const char *get_password(void *cookie,
|
212
|
+
const char *host,
|
213
|
+
const char *port,
|
214
|
+
const char *bucket)
|
215
|
+
{
|
216
|
+
std::map< std::string, std::string > *credentials =
|
217
|
+
static_cast<std::map< std::string, std::string > *>(cookie);
|
218
|
+
return (*credentials)[bucket].c_str();
|
219
|
+
}
|
220
|
+
}
|
221
|
+
|
222
|
+
|
223
|
+
and later pass these callbacks to authenticator like this:
|
224
|
+
|
225
|
+
|
226
|
+
lcb_AUTHENTICATOR *auth = lcbauth_new();
|
227
|
+
lcbauth_set_callbacks(auth, &credentials, get_username, get_password);
|
228
|
+
lcbauth_set_mode(auth, LCBAUTH_MODE_DYNAMIC);
|
229
|
+
lcb_set_auth(instance, auth);
|
230
|
+
|
231
|
+
* Include platform/compiler into client id, which included into HELLO and HTTP requests.
|
232
|
+
|
233
|
+
* Fix parallel build on Linux when dtrace enabled
|
234
|
+
|
235
|
+
* cbc-proxy: proxy N1QL, FTS and Analytics queries using STAT command.
|
236
|
+
|
237
|
+
## 2.8.3 (November 21 2017)
|
238
|
+
|
239
|
+
* [CCBC-415](https://issues.couchbase.com/browse/CCBC-415): Fixes in IPv6 support.
|
240
|
+
To use IPv6 addresses, the application should connect to IPv6-enabled Couchbase Server,
|
241
|
+
and explicitly switch on option via connection string `ipv6=allow` or `ipv6=only`,
|
242
|
+
where first variant permits the library to use both IPv6 and IPv4, and the second --
|
243
|
+
disables IPv4. Alternatively this setting controlled with `LCB_CNTL_IP6POLICY` and
|
244
|
+
`lcb_cntl`.
|
245
|
+
|
246
|
+
* [CCBC-872](https://issues.couchbase.com/browse/CCBC-872): Metrics management
|
247
|
+
These metrics are intended at providing information on libcouchbase operations performed
|
248
|
+
over the lifetime of the current `lcb_t` instance (processed request packets, processed
|
249
|
+
response packets, request packets pending emission, server errors, server timeouts,
|
250
|
+
misrouted operations, retried operations).
|
251
|
+
|
252
|
+
Metrics collection is currently disabled by default. To enable metrics collection,
|
253
|
+
the user should call:
|
254
|
+
|
255
|
+
int activate = 1;
|
256
|
+
lcb_cntl(instance, LCB_CNTL_SET, LCB_CNTL_METRICS, &activate);
|
257
|
+
|
258
|
+
Access to the collected metrics is done using:
|
259
|
+
|
260
|
+
lcb_METRICS* my_metrics;
|
261
|
+
lcb_cntl(instance, LCB_CNTL_GET, LCB_CNTL_METRICS, &my_metrics);
|
262
|
+
|
263
|
+
* [CCBC-870](https://issues.couchbase.com/browse/CCBC-870): Fix updating URL on retry. When retrying HTTP request, instead of replacing just `host:port` part of the old URL, the library inserted full URL.
|
264
|
+
|
265
|
+
* [CCBC-547](https://issues.couchbase.com/browse/CCBC-547): Detect dead sockets under libuv.
|
266
|
+
|
267
|
+
* Ensure macros safe by surrounding values with parentheses
|
268
|
+
|
3
269
|
## 2.8.2 (October 17 2017)
|
4
270
|
|
5
271
|
* [CCBC-833](https://issues.couchbase.com/browse/CCBC-833), [CCBC-834](https://issues.couchbase.com/browse/CCBC-834):
|
@@ -1723,7 +1989,7 @@ These changes extend existing features with enhanced APIs
|
|
1723
1989
|
|
1724
1990
|
* [major] Add interface attributes to all API calls
|
1725
1991
|
This properly documents all API calls with a certain API stability level
|
1726
|
-
such as _committed_ (for stable APIs),
|
1992
|
+
such as _committed_ (for stable APIs), _uncommitted_ for APIs which may, but
|
1727
1993
|
are not likely to change, and _volatile_ for APIs which are likely to be
|
1728
1994
|
changed or removed.
|
1729
1995
|
|
@@ -1917,7 +2183,8 @@ These changes extend existing features with enhanced APIs
|
|
1917
2183
|
|
1918
2184
|
lcb_error_t rc = lcb_create(&instance, &options);
|
1919
2185
|
if (rc != LCB_SUCCESS) {
|
1920
|
-
fprintf(stderr, "Failed to create instance: %s
|
2186
|
+
fprintf(stderr, "Failed to create instance: %s
|
2187
|
+
", lcb_strerror(instance, rc));
|
1921
2188
|
}
|
1922
2189
|
|
1923
2190
|
The above snippet will configure a client to _always_ use the `CCCP` protocol
|
@@ -1977,7 +2244,8 @@ These changes extend existing features with enhanced APIs
|
|
1977
2244
|
node.v.v1.index = 0; /* first node */
|
1978
2245
|
lcb_cntl(instance, LCB_CNTL_GET, LCB_CNTL_MEMDNODE_INFO, &node);
|
1979
2246
|
if (node.v.v1.sasl_mech) {
|
1980
|
-
printf("authenticated via SASL '%s'
|
2247
|
+
printf("authenticated via SASL '%s'
|
2248
|
+
",
|
1981
2249
|
node.v.v1.sasl_mech);
|
1982
2250
|
}
|
1983
2251
|
|
@@ -2013,9 +2281,11 @@ These changes extend existing features with enhanced APIs
|
|
2013
2281
|
int is_loaded;
|
2014
2282
|
lcb_cntl(instance, LCB_CNTL_GET, LCB_CNTL_CONFIG_CACHE_LOADED, &is_loaded);
|
2015
2283
|
if (is_loaded) {
|
2016
|
-
printf("Configuration cache saved us a trip to the config server
|
2284
|
+
printf("Configuration cache saved us a trip to the config server
|
2285
|
+
");
|
2017
2286
|
} else {
|
2018
|
-
printf("We had to contact the configuration server for some reason
|
2287
|
+
printf("We had to contact the configuration server for some reason
|
2288
|
+
");
|
2019
2289
|
}
|
2020
2290
|
|
2021
2291
|
* [major] CCBC-278 Use common config retry mechanism for bad
|
@@ -2043,7 +2313,8 @@ These changes extend existing features with enhanced APIs
|
|
2043
2313
|
lcb_error_t user_map_error(lcb_t instance, lcb_uint16_t in)
|
2044
2314
|
{
|
2045
2315
|
if (in == PROTOCOL_BINARY_RESPONSE_ETMPFAIL) {
|
2046
|
-
fprintf(stderr, "temporary failure on server
|
2316
|
+
fprintf(stderr, "temporary failure on server
|
2317
|
+
");
|
2047
2318
|
}
|
2048
2319
|
return default_callback(instance, in);
|
2049
2320
|
}
|