libcouchbase 0.3.3 → 1.0.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.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libcouchbase/CMakeLists.txt +6 -8
  3. data/ext/libcouchbase/README.markdown +2 -2
  4. data/ext/libcouchbase/RELEASE_NOTES.markdown +229 -2
  5. data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +11 -0
  6. data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +18 -0
  7. data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +3 -2
  8. data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +3 -3
  9. data/ext/libcouchbase/cmake/config-cmake.h.in +4 -0
  10. data/ext/libcouchbase/cmake/defs.mk.in +0 -2
  11. data/ext/libcouchbase/cmake/source_files.cmake +21 -5
  12. data/ext/libcouchbase/contrib/cJSON/cJSON.c +1 -1
  13. data/ext/libcouchbase/contrib/cbsasl/src/client.c +2 -0
  14. data/ext/libcouchbase/example/users/README +48 -0
  15. data/ext/libcouchbase/example/users/users.c +147 -0
  16. data/ext/libcouchbase/include/libcouchbase/auth.h +175 -31
  17. data/ext/libcouchbase/include/libcouchbase/cntl.h +82 -1
  18. data/ext/libcouchbase/include/libcouchbase/couchbase.h +45 -3
  19. data/ext/libcouchbase/include/libcouchbase/error.h +19 -1
  20. data/ext/libcouchbase/include/libcouchbase/iops.h +3 -0
  21. data/ext/libcouchbase/include/libcouchbase/n1ql.h +31 -1
  22. data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +4 -1
  23. data/ext/libcouchbase/include/libcouchbase/subdoc.h +36 -2
  24. data/ext/libcouchbase/include/libcouchbase/views.h +7 -1
  25. data/ext/libcouchbase/include/libcouchbase/visibility.h +1 -0
  26. data/ext/libcouchbase/include/memcached/protocol_binary.h +24 -1146
  27. data/ext/libcouchbase/packaging/parse-git-describe.pl +1 -1
  28. data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +3 -2
  29. data/ext/libcouchbase/src/README.md +0 -2
  30. data/ext/libcouchbase/src/auth-priv.h +23 -4
  31. data/ext/libcouchbase/src/auth.cc +51 -43
  32. data/ext/libcouchbase/src/bootstrap.cc +244 -0
  33. data/ext/libcouchbase/src/bootstrap.h +58 -38
  34. data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +120 -158
  35. data/ext/libcouchbase/src/bucketconfig/bc_file.cc +281 -0
  36. data/ext/libcouchbase/src/bucketconfig/bc_http.cc +526 -0
  37. data/ext/libcouchbase/src/bucketconfig/bc_http.h +50 -25
  38. data/ext/libcouchbase/src/bucketconfig/bc_static.cc +150 -0
  39. data/ext/libcouchbase/src/bucketconfig/clconfig.h +410 -386
  40. data/ext/libcouchbase/src/bucketconfig/confmon.cc +393 -0
  41. data/ext/libcouchbase/src/cbft.cc +22 -27
  42. data/ext/libcouchbase/src/cntl.cc +56 -22
  43. data/ext/libcouchbase/src/connspec.cc +47 -6
  44. data/ext/libcouchbase/src/connspec.h +27 -0
  45. data/ext/libcouchbase/src/dns-srv.cc +147 -0
  46. data/ext/libcouchbase/src/dump.cc +3 -3
  47. data/ext/libcouchbase/src/errmap.cc +173 -0
  48. data/ext/libcouchbase/src/errmap.h +198 -0
  49. data/ext/libcouchbase/src/getconfig.cc +7 -33
  50. data/ext/libcouchbase/src/handler.cc +118 -7
  51. data/ext/libcouchbase/src/hostlist.cc +0 -36
  52. data/ext/libcouchbase/src/hostlist.h +44 -62
  53. data/ext/libcouchbase/src/http/http-priv.h +125 -112
  54. data/ext/libcouchbase/src/http/http.cc +27 -35
  55. data/ext/libcouchbase/src/http/http.h +1 -34
  56. data/ext/libcouchbase/src/http/http_io.cc +28 -36
  57. data/ext/libcouchbase/src/instance.cc +131 -34
  58. data/ext/libcouchbase/src/internal.h +58 -26
  59. data/ext/libcouchbase/src/jsparse/parser.cc +136 -210
  60. data/ext/libcouchbase/src/jsparse/parser.h +84 -98
  61. data/ext/libcouchbase/src/lcbht/lcbht.cc +177 -0
  62. data/ext/libcouchbase/src/lcbht/lcbht.h +174 -163
  63. data/ext/libcouchbase/src/lcbio/connect.cc +569 -0
  64. data/ext/libcouchbase/src/lcbio/connect.h +16 -7
  65. data/ext/libcouchbase/src/lcbio/ctx.c +1 -1
  66. data/ext/libcouchbase/src/lcbio/iotable.h +101 -16
  67. data/ext/libcouchbase/src/lcbio/{ioutils.c → ioutils.cc} +30 -51
  68. data/ext/libcouchbase/src/lcbio/ioutils.h +29 -90
  69. data/ext/libcouchbase/src/lcbio/manager.cc +543 -0
  70. data/ext/libcouchbase/src/lcbio/manager.h +133 -96
  71. data/ext/libcouchbase/src/lcbio/protoctx.c +2 -2
  72. data/ext/libcouchbase/src/lcbio/timer-cxx.h +87 -0
  73. data/ext/libcouchbase/src/mc/mcreq.c +11 -2
  74. data/ext/libcouchbase/src/mc/mcreq.h +9 -2
  75. data/ext/libcouchbase/src/mcserver/mcserver.cc +175 -43
  76. data/ext/libcouchbase/src/mcserver/mcserver.h +9 -13
  77. data/ext/libcouchbase/src/mcserver/negotiate.cc +181 -62
  78. data/ext/libcouchbase/src/mcserver/negotiate.h +1 -3
  79. data/ext/libcouchbase/src/mctx-helper.h +51 -0
  80. data/ext/libcouchbase/src/n1ql/ixmgmt.cc +1 -2
  81. data/ext/libcouchbase/src/n1ql/n1ql.cc +74 -42
  82. data/ext/libcouchbase/src/netbuf/netbuf.c +4 -4
  83. data/ext/libcouchbase/src/newconfig.cc +6 -6
  84. data/ext/libcouchbase/src/nodeinfo.cc +2 -2
  85. data/ext/libcouchbase/src/operations/{cbflush.c → cbflush.cc} +7 -15
  86. data/ext/libcouchbase/src/operations/{counter.c → counter.cc} +0 -0
  87. data/ext/libcouchbase/src/operations/durability.cc +6 -26
  88. data/ext/libcouchbase/src/operations/durability_internal.h +6 -3
  89. data/ext/libcouchbase/src/operations/{get.c → get.cc} +24 -26
  90. data/ext/libcouchbase/src/operations/{observe.c → observe.cc} +68 -93
  91. data/ext/libcouchbase/src/operations/{pktfwd.c → pktfwd.cc} +0 -0
  92. data/ext/libcouchbase/src/operations/{remove.c → remove.cc} +0 -0
  93. data/ext/libcouchbase/src/operations/stats.cc +3 -8
  94. data/ext/libcouchbase/src/operations/{store.c → store.cc} +27 -32
  95. data/ext/libcouchbase/src/operations/subdoc.cc +129 -42
  96. data/ext/libcouchbase/src/operations/{touch.c → touch.cc} +0 -0
  97. data/ext/libcouchbase/src/packetutils.h +30 -2
  98. data/ext/libcouchbase/src/probes.d +1 -1
  99. data/ext/libcouchbase/src/rdb/rope.c +1 -1
  100. data/ext/libcouchbase/src/{retrychk.c → retrychk.cc} +2 -3
  101. data/ext/libcouchbase/src/retryq.cc +52 -14
  102. data/ext/libcouchbase/src/retryq.h +3 -3
  103. data/ext/libcouchbase/src/settings.c +5 -0
  104. data/ext/libcouchbase/src/settings.h +11 -0
  105. data/ext/libcouchbase/src/ssl/ssl_c.c +1 -0
  106. data/ext/libcouchbase/src/ssl/ssl_common.c +2 -0
  107. data/ext/libcouchbase/src/ssl/ssl_e.c +0 -1
  108. data/ext/libcouchbase/src/strcodecs/strcodecs.h +1 -1
  109. data/ext/libcouchbase/src/trace.h +4 -4
  110. data/ext/libcouchbase/src/vbucket/vbucket.c +6 -10
  111. data/ext/libcouchbase/src/views/{docreq.c → docreq.cc} +48 -54
  112. data/ext/libcouchbase/src/views/docreq.h +24 -30
  113. data/ext/libcouchbase/src/views/viewreq.cc +318 -0
  114. data/ext/libcouchbase/src/views/viewreq.h +43 -13
  115. data/ext/libcouchbase/tests/basic/t_connstr.cc +88 -50
  116. data/ext/libcouchbase/tests/basic/t_creds.cc +47 -5
  117. data/ext/libcouchbase/tests/basic/t_host.cc +67 -75
  118. data/ext/libcouchbase/tests/basic/t_jsparse.cc +27 -82
  119. data/ext/libcouchbase/tests/basic/t_misc.cc +1 -1
  120. data/ext/libcouchbase/tests/basic/t_n1qlstrings.cc +0 -1
  121. data/ext/libcouchbase/tests/htparse/t_basic.cc +58 -78
  122. data/ext/libcouchbase/tests/ioserver/connection.cc +1 -1
  123. data/ext/libcouchbase/tests/ioserver/ioserver.cc +19 -6
  124. data/ext/libcouchbase/tests/iotests/mock-environment.cc +28 -2
  125. data/ext/libcouchbase/tests/iotests/mock-environment.h +51 -1
  126. data/ext/libcouchbase/tests/iotests/t_behavior.cc +1 -7
  127. data/ext/libcouchbase/tests/iotests/t_confmon.cc +97 -115
  128. data/ext/libcouchbase/tests/iotests/t_durability.cc +0 -1
  129. data/ext/libcouchbase/tests/iotests/t_eerrs.cc +119 -0
  130. data/ext/libcouchbase/tests/iotests/t_errmap.cc +178 -0
  131. data/ext/libcouchbase/tests/iotests/t_misc.cc +3 -3
  132. data/ext/libcouchbase/tests/iotests/t_netfail.cc +1 -1
  133. data/ext/libcouchbase/tests/iotests/t_obseqno.cc +0 -1
  134. data/ext/libcouchbase/tests/iotests/t_subdoc.cc +18 -11
  135. data/ext/libcouchbase/tests/mc/t_alloc.cc +9 -9
  136. data/ext/libcouchbase/tests/socktests/socktest.cc +7 -10
  137. data/ext/libcouchbase/tests/socktests/socktest.h +2 -3
  138. data/ext/libcouchbase/tests/socktests/t_basic.cc +6 -6
  139. data/ext/libcouchbase/tests/socktests/t_manager.cc +5 -6
  140. data/ext/libcouchbase/tests/socktests/t_ssl.cc +1 -1
  141. data/ext/libcouchbase/tests/vbucket/confdata/ketama_expected.json +2562 -0
  142. data/ext/libcouchbase/tests/vbucket/confdata/memd_ketama_config.json +31 -0
  143. data/ext/libcouchbase/tests/vbucket/t_config.cc +35 -5
  144. data/ext/libcouchbase/tools/CMakeLists.txt +2 -2
  145. data/ext/libcouchbase/tools/cbc-handlers.h +128 -0
  146. data/ext/libcouchbase/tools/cbc-n1qlback.cc +64 -10
  147. data/ext/libcouchbase/tools/cbc-pillowfight.cc +2 -2
  148. data/ext/libcouchbase/tools/cbc.cc +143 -10
  149. data/ext/libcouchbase/tools/docgen/loc.h +1 -1
  150. data/lib/libcouchbase/connection.rb +4 -3
  151. data/lib/libcouchbase/version.rb +1 -1
  152. metadata +37 -28
  153. data/ext/libcouchbase/include/memcached/vbucket.h +0 -42
  154. data/ext/libcouchbase/src/bootstrap.c +0 -269
  155. data/ext/libcouchbase/src/bucketconfig/bc_file.c +0 -347
  156. data/ext/libcouchbase/src/bucketconfig/bc_http.c +0 -630
  157. data/ext/libcouchbase/src/bucketconfig/bc_mcraw.c +0 -150
  158. data/ext/libcouchbase/src/bucketconfig/confmon.c +0 -474
  159. data/ext/libcouchbase/src/lcbht/lcbht.c +0 -282
  160. data/ext/libcouchbase/src/lcbio/connect.c +0 -557
  161. data/ext/libcouchbase/src/lcbio/manager.c +0 -584
  162. data/ext/libcouchbase/src/packetutils.c +0 -37
  163. data/ext/libcouchbase/src/simplestring.c +0 -211
  164. data/ext/libcouchbase/src/simplestring.h +0 -228
  165. data/ext/libcouchbase/src/ssobuf.h +0 -82
  166. data/ext/libcouchbase/src/views/viewreq.c +0 -358
  167. data/ext/libcouchbase/tests/basic/t_string.cc +0 -112
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e109b474ba52c5f517c1d56bb11decfcce96079
4
- data.tar.gz: 0bf3dcda70e298bdd5121199875a0a05552b304d
3
+ metadata.gz: 5b03238b1f0df8df19845655e411bf25ae979db6
4
+ data.tar.gz: 6eb8fafcf9034065fc808872a9e0355ed1e2bd84
5
5
  SHA512:
6
- metadata.gz: 5e46bd8fe2c97bc6ed242cbe49b16d670407839a5a39bea4ba872b68a2065d2bf0e41e52bb4116f919d1cd95b3c46a6e7937d70ab3550e2c877dae04b0410700
7
- data.tar.gz: 641f6bb07307a0e4c95937c11c9278100dc486d165de84e4ecc677d20534555b0157e52aa8913278f11cb719cb1b19d1af443012182bde6f53e1bdc2ab0163d4
6
+ metadata.gz: 18caa5677e2311da9b67c11cf914308e23ef1af4fcf792cbaa84f43027a0b1b08056a0010a3ae652587b0603de62296ce59958c9ff45cbbf13a146deb0adc389
7
+ data.tar.gz: 2d553e956bba44dab297bb838b022adaf99e5831f0502ef306346431c0c46ec641c96b7ffcae4d76f6b4774a4eae6ad7b44fe1de1fa5b6590986643aba461e8a
@@ -21,7 +21,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9)
21
21
  # These variables can be modified as needed
22
22
 
23
23
  # Couchbase mock path to download
24
- SET(COUCHBASE_MOCK_VERSION CouchbaseMock-1.4.3.jar)
24
+ SET(COUCHBASE_MOCK_VERSION CouchbaseMock-LATEST.jar)
25
25
  # Maven repository where ${COUCHBASE_MOCK_VERSION} is to be found
26
26
  SET(COUCHBASE_MOCK_DLSERVER http://packages.couchbase.com/clients/c/mock)
27
27
  project(libcouchbase)
@@ -151,12 +151,12 @@ IF(WIN32)
151
151
  ADD_DEFINITIONS(-DWINVER=${NT_REQUIRED_VERSION})
152
152
  ADD_DEFINITIONS(-D_WIN32_WINNT=${NT_REQUIRED_VERSION})
153
153
  SET(lcb_plat_includes "${SOURCE_ROOT}/contrib/win32-defs")
154
- SET(lcb_plat_libs ws2_32.lib)
154
+ SET(lcb_plat_libs ws2_32.lib dnsapi.lib)
155
155
  SET(lcb_plat_objs $<TARGET_OBJECTS:couchbase_iocp>)
156
156
  ELSE()
157
157
  SET(lcb_plat_libs m)
158
158
  IF(NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
159
- SET(lcb_plat_libs ${lcb_plat_libs} dl)
159
+ SET(lcb_plat_libs ${lcb_plat_libs} dl resolv)
160
160
  ELSE()
161
161
  # BSD _and_ DTrace
162
162
  IF(LCB_BUILD_DTRACE)
@@ -205,6 +205,7 @@ ADD_LIBRARY(netbuf-malloc OBJECT ${LCB_NETBUF_SRC})
205
205
  ADD_LIBRARY(mcreq OBJECT ${LCB_MC_SRC})
206
206
  ADD_LIBRARY(rdb OBJECT ${LCB_RDB_SRC})
207
207
  ADD_LIBRARY(lcbio OBJECT ${LCB_IO_SRC})
208
+ ADD_LIBRARY(lcbio-cxx OBJECT ${LCB_IO_CXXSRC})
208
209
  ADD_LIBRARY(lcbht OBJECT ${LCB_HT_SRC})
209
210
  ADD_LIBRARY(lcbcore OBJECT ${LCB_CORE_SRC})
210
211
  ADD_LIBRARY(lcbcore-cxx OBJECT ${LCB_CORE_CXXSRC})
@@ -214,6 +215,7 @@ LCB_UTIL(netbuf-malloc)
214
215
  LCB_UTIL(netbuf)
215
216
  LCB_UTIL(rdb)
216
217
  LCB_UTIL(lcbio)
218
+ LCB_CXXUTIL(lcbio-cxx)
217
219
  LCB_UTIL(couchbase_utils)
218
220
  LCB_UTIL(mcreq)
219
221
  LCB_UTIL(lcbht)
@@ -245,10 +247,6 @@ IF(NOT WIN32 AND LCB_BUILD_DTRACE)
245
247
  INCLUDE(cmake/Modules/ConfigureDtrace.cmake)
246
248
  ENDIF()
247
249
 
248
- FILE(GLOB LCB_VIEWS_C_SRC src/views/*.c)
249
- ADD_LIBRARY(lcb_views_c OBJECT ${LCB_VIEWS_C_SRC})
250
- LCB_UTIL(lcb_views_c)
251
-
252
250
  FILE(GLOB LCB_JSPARSE_SRC src/jsparse/*.cc)
253
251
  ADD_LIBRARY(lcb_jsparse OBJECT ${LCB_JSPARSE_SRC})
254
252
  LCB_CXXUTIL(lcb_jsparse)
@@ -261,11 +259,11 @@ SET(LCB_CORE_OBJS
261
259
  $<TARGET_OBJECTS:netbuf>
262
260
  $<TARGET_OBJECTS:cbsasl>
263
261
  $<TARGET_OBJECTS:lcbio>
262
+ $<TARGET_OBJECTS:lcbio-cxx>
264
263
  $<TARGET_OBJECTS:rdb>
265
264
  $<TARGET_OBJECTS:lcbht>
266
265
  $<TARGET_OBJECTS:lcbcore>
267
266
  $<TARGET_OBJECTS:lcbcore-cxx>
268
- $<TARGET_OBJECTS:lcb_views_c>
269
267
  $<TARGET_OBJECTS:lcb_jsparse>
270
268
  $<TARGET_OBJECTS:lcb_jsoncpp>
271
269
  ${LCB_DTRACE_OBJECT}
@@ -78,7 +78,7 @@ If you wish to link against OpenSSL, you should set the value of
78
78
 
79
79
  ## Bugs, Support, Issues
80
80
  You may report issues in the library in our issue tracked at
81
- <http://couchbase.com/issues>. Sign up for an account and file an issue
81
+ <https://issues.couchbase.com>. Sign up for an account and file an issue
82
82
  against the _Couchbase C Client Library_ project.
83
83
 
84
84
  The developers of the library hang out in IRC on `#libcouchbase` on
@@ -95,7 +95,7 @@ irc.freenode.net.
95
95
  * [PHP](http://github.com/couchbase/php-couchbase) (uses the old < 2.6 API)
96
96
  * Community projects using libcouchbase
97
97
  * [C++11 wrapper](https://github.com/couchbaselabs/libcouchbase-cxx)
98
- * [cberl - Couchbase NIF](https://github.com/chitika/cberl)
98
+ * [cberl - Couchbase NIF](https://github.com/wcummings/cberl)
99
99
  * [Perl client](https://github.com/mnunberg/perl-Couchbase-Client)
100
100
 
101
101
  ## Documentation
@@ -1,5 +1,234 @@
1
1
  # Release Notes
2
2
 
3
+ ## 2.7.6 (July 11 2017)
4
+
5
+ * Expose enhanced errors for data commands. Couchbase Server 5 might return
6
+ additional information about errors in the response body. According to
7
+ SDK-RFC-28, the library allow user code to inspect this information using
8
+ following functions:
9
+
10
+ * `lcb_resp_get_error_context(int, const lcb_RESPBASE *)`
11
+ * `lcb_resp_get_error_ref(int, const lcb_RESPBASE *)`
12
+
13
+ They both return non-NULL strings if any of error information accessible.
14
+ The lifetime of these fields limited by lifetime of the response object.
15
+ * Issues: [CCBC-781](https://issues.couchbase.com/browse/CCBC-781)
16
+
17
+ * Report contextualized error messages during negotiation. The event reference
18
+ could be used to find more details about authentication errors in the server
19
+ logs.
20
+ * Issues: [CCBC-780](https://issues.couchbase.com/browse/CCBC-780)
21
+
22
+ * Specify correct protocol level for `SO_KEEPALIVE`. This fixes setting
23
+ `tcp_keepalive` option on connections.
24
+ * Issues: [CCBC-798](https://issues.couchbase.com/browse/CCBC-798)
25
+
26
+ * Implement Error Map Retries. This implements the mechanics needed to retry
27
+ commands on various errors based on dynamic settings supplied via the error map.
28
+ * Issues: [CCBC-783](https://issues.couchbase.com/browse/CCBC-783)
29
+
30
+ * Add cluster admin provider. This provider doesn't do anything except serve
31
+ as a source of management hostnames. And the library will fall back to it
32
+ when bucket is not specified for cluster management connections.
33
+ * Issues: [CCBC-797](https://issues.couchbase.com/browse/CCBC-797)
34
+
35
+ * Implement RBAC user management in cbc tools. In addition to `examples/users`,
36
+ this can be a demonstration of new security APIs which appear in Couchbase
37
+ Server 5.
38
+ * Issues: [CCBC-757](https://issues.couchbase.com/browse/CCBC-757)
39
+
40
+ * Allow to inspect query errors in `cbc-n1qlback`. The command will write
41
+ details for failed queries to file, specified with option `--error-log`.
42
+
43
+ * Fix memory leak in io::Pool
44
+ * Issues: [CCBC-791](https://issues.couchbase.com/browse/CCBC-791)
45
+
46
+ * Fix `LCB_SDCMD_GET_FULLDOC`. This would not actually work beforehand
47
+ because the opcode it's mapped to is 0, and we used 0 as a sentinel
48
+ value for an invalid opcode within the subdoc implementation.
49
+ * Issues: [CCBC-792](https://issues.couchbase.com/browse/CCBC-792)
50
+
51
+ * Add LCB_NOT_AUTHORIZED error code. This error code maps to
52
+ Memcached's EACCESS
53
+
54
+ * Don't send empty Authorization header for HTTP requests, If there's
55
+ no username and/or password
56
+ * Issues: [CCBC-789](https://issues.couchbase.com/browse/CCBC-789)
57
+
58
+ * Internal refactoring:
59
+ - `io::Pool` - remove empty dtor
60
+ - Fix `BadPluginEnvironment` test on Fedora where libm.so is ld script
61
+ - Add missing commands for `cbc-help`
62
+
63
+ * Documentation update:
64
+ - Add additional documentation for `lcb_n1ql_cancel()`
65
+ - Typos
66
+
67
+ ## 2.7.5 (May 17 2017)
68
+
69
+ * Allow to disable sending the `HELLO` command when connecting to a server.
70
+ Sending `HELLO` will cause a bootstrap failure with Couchbase Server 2.0 and
71
+ older.
72
+ * Issues: [CCBC-786](https://issues.couchbase.com/browse/CCBC-786)
73
+
74
+ * Fix error return value on reprepared query.
75
+ Previously an error was returned if a N1QL query was reprepared, because
76
+ the prior internal failure status was not updated.
77
+ * Issues: [CCBC-782](https://issues.couchbase.com/browse/CCBC-782)
78
+
79
+ * Check for more N1QL error strings indicating the need to reprepare a statement.
80
+
81
+ * Fix uninitialized memory issue when initializing `lcb::Server` and `mc_PIPELINE`
82
+
83
+ * Couchbase 5.0 additions for Subdocument.
84
+ This adds new protocol extensions for Couchbase 5.0. This consists of:
85
+ * New `LCB_SDCMD_SET_FULLDOC` and `LCB_SDCMD_GET_FULLDOC` for full-doucument
86
+ gets and sets via the subdoc API. This allows to access xattrs atomically
87
+ with the document body.
88
+ * New 'document flags'. These are in the form of `LCB_CMDSUBDOC_F_`.
89
+ * Issues: [CCBC-774](https://issues.couchbase.com/browse/CCBC-774)
90
+
91
+ * Fix bug where CCCP subsystem would be suspended indefinitely.
92
+ CCCP subsystem would hang if an error was received for the config request
93
+ itself.
94
+ * Issues: [CCBC-779](https://issues.couchbase.com/browse/CCBC-779)
95
+
96
+ * Fix bootstrap with `LCB_TYPE_CLUSTER`. Previously bootstrap would fail because
97
+ the client would not send proper credentials. Note that at this point, the
98
+ `default` bucket must still exist.
99
+ * Issues: [CCBC-778](https://issues.couchbase.com/browse/CCBC-778)
100
+
101
+ * Ignore empty DNS SRV replies.
102
+ Some buggy DNS configurations return positive replies to SRV queries, but
103
+ without actually containing any kind of A record as a response.
104
+ * Issues: [CCBC-776](https://issues.couchbase.com/browse/CCBC-776)
105
+
106
+ * Enable background polling for configuration changes.
107
+ This allows the client to periodically poll for configuration changes. This
108
+ feature is disabled by default. You can use the `config_poll_interval`
109
+ setting to enable it in the connection string.
110
+ * Issues: [CCBC-627](https://issues.couchbase.com/browse/CCBC-627)
111
+
112
+ * Enable TCP Keepalive for newly created sockets.
113
+ Newly created sockets have TCP keepalive enabled in order to avoid firewalls
114
+ breaking connections due to inactivity. TCP Keepalive does not yet work for
115
+ the libuv plugin (e.g. nodejs).
116
+ You can use the `tcp_keepalive=false` directive in the connection string
117
+ to disable it.
118
+ * Issues: [CCBC-690](https://issues.couchbase.com/browse/CCBC-690)
119
+
120
+ ## 2.7.4 (April 18 2017)
121
+
122
+ * Send `SELECT_BUCKET` command by default if server supports it. This enables
123
+ new-style 'RBAC' authentication by default. In 2.7.3 users were required to
124
+ use `select_bucket=true` in the connection string to enable this feature.
125
+ In this version, the option is still available but is now mainly useful to
126
+ disable it.
127
+
128
+ * Improve `lcb_AUTHENTICATOR` API. This provides better documentation and some
129
+ API/design/implementation fixes to the authenticator interface. The
130
+ authenticator may be useful for integrators/wrappers who wish to correlate
131
+ multiple credentials with their buckets.
132
+ Note that the use of `lcb_AUTHENTICATOR` is *not* required for RBAC support.
133
+ In order to use RBAC, simply make use of the `username` field in
134
+ the `lcb_create_st` struct, or the `username` parameter in the connection
135
+ string.
136
+ * Issues: [CCBC-751](https://issues.couchbase.com/browse/CCBC-751)
137
+
138
+ * Fix bug where `lcb_get_server_list()` would return NULL.
139
+ * Issues: [CCBC-764](https://issues.couchbase.com/browse/CCBC-764)
140
+
141
+ * Fix bug where client would not recover from failover. Clients from version
142
+ 2.7.1 through 2.7.3 would not obtain a new cluster map after a node had
143
+ been failed over (e.g. by hitting the "fail over" button in the UI).
144
+ * Issues: [CCBC-761](https://issues.couchbase.com/browse/CCBC-761)
145
+
146
+ ## 2.7.3 (March 21 2017)
147
+
148
+ * Provide the ability to send the `SELECT_BUCKET` when establishing a
149
+ to a server. This is a building block allowing us to use 'RBAC'/username
150
+ auth in the future.
151
+ Note that this requires the `select_bucket=true` option in the connection
152
+ string or equivalent, and that this feature as a whole is considered
153
+ experimental.
154
+ * Priority: Major
155
+ * Issues: [CCBC-758](https://issues.couchbase.com/browse/CCBC-758)
156
+
157
+ * Provide an option to disable DNS-SRV lookups. Because DNS SRV lookups often
158
+ result in no result (i.e. `NXDOMAIN`) - which takes longer, allowing to
159
+ disable such lookups may speed up startup time.
160
+ This option is available via the connection string, using `dnssrv=off`
161
+ * Priority: Minor
162
+ * Issues: [CCBC-756](https://issues.couchbase.com/browse/CCBC-756)
163
+
164
+ * Send client/user-specific identifier in `User-Agent` HTTP header.
165
+ The library already does this for data nodes (Memcached). Using it in HTTP
166
+ services allows better supportability when diagnosing issues by reading the
167
+ HTTP logs.
168
+ * Priority: Major
169
+ * Issues: [CCBC-755](https://issues.couchbase.com/browse/CCBC-755)
170
+
171
+ * Fix bug where DNS SRV hostnames would not be used.
172
+ While DNS SRV lookup was working, the library would not actually attempt
173
+ bootstrap off those received hostnames.
174
+ * Priority: Major
175
+ * Issues: [CCBC-753](https://issues.couchbase.com/browse/CCBC-753)
176
+
177
+ * Provide experimental Analytics support.
178
+ This allows access to the Couchbase Analytics Service, available in
179
+ some pre-release builds. API and syntax wise, Analytics is very similar
180
+ to N1QL.
181
+ To use the analytics service, set the `LCB_CMDN1QL_F_CBASQUERY` bit in
182
+ `lcb_CMDN1QL::cmdflags`, and provide the appropriate _host:port_ combination
183
+ in the `lcb_CMDN1QL::host` field. - Currently, analytics support is not
184
+ used in the cluster map/configuration.
185
+ * Priority: Major
186
+ * Issues: [CCBC-734](https://issues.couchbase.com/browse/CCBC-734)
187
+
188
+ ## 2.7.2 (February 21 2017)
189
+
190
+ This release consists of additional internal refactoring and some improved
191
+ logging messages. There is enhanced experimental XATTR support. This release
192
+ also contains some bug fixes:
193
+
194
+ * Fix build issues on FreeBSD. This allows normal BSD `make` to be used, rather
195
+ than forcing `gmake`
196
+
197
+ * Fixed broken JIRA link in README
198
+
199
+ * Fix hanging SSL connections in IOCP/Completion mode. This would sometimes
200
+ stall the connection by not requesting a write if a read was in progress.
201
+ This would result in the command not being sent and the client hanging.
202
+ Note that this only affects completion-style I/O plugins such as IOCP and
203
+ libuv.
204
+ * Issues: [CCBC-744](https://issues.couchbase.com/browse/CCBC-744)
205
+
206
+ * Rename `LCB_SDSPEC_F_VIRTPATH` to `LCB_SDSPEC_F_MACROVALUES`. `VIRTPATH`
207
+ is intended for possible future materialized XATTRs.
208
+
209
+ * Add `LCB_SDSPEC_F_XATTR_DELETED_OK`, which maps to the protocol flag of
210
+ roughly the same name.
211
+
212
+ ## 2.7.1 (January 19 2017)
213
+
214
+ This release consists of additional internal refactoring. More internals have
215
+ been converted to C++.
216
+
217
+ * Provide XATTR (Extended Attribute) prototype support.
218
+ This provides a prototype implementation of xattrs, allowing the client to
219
+ access extended (hidden) attributes of a document. This feature can be used
220
+ on the client side by simply setting the `LCB_SDSPEC_F_XATTRPATH` bit in
221
+ the `lcb_SDSPEC::options` field.
222
+ * Issues: [CCBC-728](https://issues.couchbase.com/browse/CCBC-728)
223
+
224
+ * Add automatic DNS SRV record lookup when simple hostname supplied.
225
+ The library will now automatically attempt to look up SRV records
226
+ for various couchbase services if only one host is present in the
227
+ connection string. Automatic lookup will not be performed if more
228
+ than a single host is provded. See the [Java Documentation](https://developer.couchbase.com/documentation/server/current/sdk/java/managing-connections.html)
229
+ on the matter (go to the bottom of the page).
230
+ * Issues: [CCBC-566](https://issues.couchbase.com/browse/CCBC-566)
231
+
3
232
  ## 2.7.0 (December 21 2016)
4
233
 
5
234
  This release consists mainly of internal refactoring. Many of the internals
@@ -2707,5 +2936,3 @@ These changes extend existing features with enhanced APIs
2707
2936
  * Basic TAP protocol implementation
2708
2937
 
2709
2938
  * Initial win32 support
2710
-
2711
-
@@ -11,6 +11,17 @@ IF(DTRACE)
11
11
  RETURN()
12
12
  ENDIF()
13
13
 
14
+ # Fix probes.h on FreeBSD
15
+ IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
16
+ FIND_PROGRAM(SED sed)
17
+ EXECUTE_PROCESS(COMMAND ${SED} -i.tmp "s/, *char \\*/, const char \\*/g" ${LCB_DTRACE_HEADER}
18
+ RESULT_VARIABLE _rv)
19
+ IF(NOT ${_rv} EQUAL 0)
20
+ MESSAGE(WARNING "Could not execute sed to update dtrace-generated header. DTrace support will be disabled!")
21
+ RETURN()
22
+ ENDIF()
23
+ ENDIF()
24
+
14
25
  ADD_DEFINITIONS(-DHAVE_DTRACE)
15
26
  IF(NOT APPLE)
16
27
  SET(LCB_DTRACE_OBJECT "${LCB_GENSRCDIR}/probes.o")
@@ -9,6 +9,7 @@ IF(UNIX)
9
9
  CHECK_FUNCTION_EXISTS(clock_gettime HAVE_CLOCK_GETTIME)
10
10
  CHECK_FUNCTION_EXISTS(setitimer HAVE_SETITIMER)
11
11
  CHECK_SYMBOL_EXISTS(htonll arpa/inet.h HAVE_HTONLL)
12
+ CHECK_SYMBOL_EXISTS(res_search resolv.h HAVE_RES_SEARCH)
12
13
  CHECK_INCLUDE_FILES(dlfcn.h HAVE_DLFCN_H)
13
14
  CHECK_INCLUDE_FILES(netdb.h HAVE_NETDB_H)
14
15
  CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
@@ -22,6 +23,23 @@ IF(UNIX)
22
23
  CHECK_INCLUDE_FILES(sys/time.h HAVE_SYS_TIME_H)
23
24
  CHECK_INCLUDE_FILES(arpa/inet.h HAVE_ARPA_INET_H)
24
25
  CHECK_INCLUDE_FILES(inttypes.h HAVE_INTTYPES_H)
26
+ CHECK_INCLUDE_FILES(arpa/nameser.h HAVE_ARPA_NAMESER_H)
27
+ ENDIF()
28
+
29
+ SET(CMAKE_TEST_SHARED_OBJECT "libm.so")
30
+ IF (WIN32)
31
+ SET(CMAKE_TEST_SHARED_OBJECT "kernel32.dll.")
32
+ ELSEIF (APPLE)
33
+ SET(CMAKE_TEST_SHARED_OBJECT "libm.dylib")
34
+ ELSEIF (CMAKE_SYSTEM_NAME STREQUAL "Linux")
35
+ EXECUTE_PROCESS(COMMAND ${CMAKE_LINKER} -lm -t
36
+ OUTPUT_VARIABLE LIBM_SO_TRACE
37
+ ERROR_QUIET
38
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
39
+ STRING(REGEX MATCH [a-z0-9/]+libm.so[.0-9]* LIBM_SO_PATH ${LIBM_SO_TRACE})
40
+ IF (EXISTS "${LIBM_SO_PATH}")
41
+ GET_FILENAME_COMPONENT(CMAKE_TEST_SHARED_OBJECT ${LIBM_SO_PATH} NAME)
42
+ ENDIF()
25
43
  ENDIF()
26
44
 
27
45
  CONFIGURE_FILE(
@@ -22,9 +22,10 @@ ENDMACRO(list2args)
22
22
 
23
23
  LIST(APPEND LCB_GNUC_CPP_WARNINGS
24
24
  -Wall -pedantic -Wshadow -fdiagnostics-show-option -Wformat
25
- -Wno-strict-aliasing -Wextra -Winit-self -Wno-missing-field-initializers)
25
+ -Wno-strict-aliasing -Wextra -Winit-self -Wno-missing-field-initializers
26
+ -Wno-variadic-macros)
26
27
 
27
- IF("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
28
+ IF(CMAKE_C_COMPILER_ID STREQUAL "Clang")
28
29
  LIST(APPEND LCB_GNUC_CPP_WARNINGS -Wno-cast-align -Wno-dollar-in-identifier-extension)
29
30
  ENDIF()
30
31
 
@@ -42,13 +42,13 @@ ENDIF()
42
42
 
43
43
  IF (NOT LCB_VERSION)
44
44
  SET(LCB_NOGITVERSION ON)
45
- SET(LCB_VERSION "2.7.0")
45
+ SET(LCB_VERSION "2.7.6")
46
46
  ENDIF()
47
47
  IF (NOT LCB_VERSION_CHANGESET)
48
48
  SET(LCB_VERSION_CHANGESET "0xdeadbeef")
49
49
  ENDIF()
50
50
  IF (NOT LCB_VERSION_HEX)
51
- SET(LCB_VERSION_HEX 0x020700)
51
+ SET(LCB_VERSION_HEX 0x020706)
52
52
  ENDIF()
53
53
 
54
54
  # Now parse the version string
@@ -63,7 +63,7 @@ IF(APPLE)
63
63
  ELSE()
64
64
  SET(LCB_SONAME_MAJOR "2")
65
65
  ENDIF()
66
- SET(LCB_SONAME_FULL "${LCB_SONAME_MAJOR}.0.40")
66
+ SET(LCB_SONAME_FULL "${LCB_SONAME_MAJOR}.0.46")
67
67
 
68
68
  MESSAGE(STATUS
69
69
  "libcouchbase ${LCB_VERSION_MAJOR},${LCB_VERSION_MINOR},${LCB_VERSION_PATCH}")
@@ -31,6 +31,8 @@
31
31
  #cmakedefine HAVE_SYS_UIO_H
32
32
  #cmakedefine HAVE_UNISTD_H
33
33
  #cmakedefine HAVE_ARPA_INET_H
34
+ #cmakedefine HAVE_RES_SEARCH
35
+ #cmakedefine HAVE_ARPA_NAMESER_H
34
36
 
35
37
  #ifndef HAVE_LIBEVENT
36
38
  #cmakedefine HAVE_LIBEVENT
@@ -58,3 +60,5 @@
58
60
 
59
61
  #include "config_static.h"
60
62
  #endif
63
+
64
+ #define TEST_SHARED_OBJECT "${CMAKE_TEST_SHARED_OBJECT}"
@@ -4,5 +4,3 @@ SRCROOT=${CMAKE_SOURCE_DIR}
4
4
  REVDESCRIBE=${LCB_REVDESCRIBE}
5
5
  PACKAGE=libcouchbase
6
6
  VERSION=${LCB_VERSION}
7
- LCB_BUILDING_WITH_CMAKE=1
8
- export LCB_BUILDING_WITH_CMAKE
@@ -10,11 +10,11 @@ SET(LCB_UTILS_SRC
10
10
  src/hashtable.c
11
11
  src/list.c
12
12
  src/logging.c
13
- src/ringbuffer.c
14
- src/simplestring.c)
13
+ src/ringbuffer.c)
15
14
 
16
15
  # lcbio
17
16
  FILE(GLOB LCB_IO_SRC src/lcbio/*.c)
17
+ FILE(GLOB LCB_IO_CXXSRC src/lcbio/*.cc)
18
18
 
19
19
  # common memcached operations
20
20
  FILE(GLOB LCB_OP_SRC src/operations/*.c)
@@ -29,7 +29,6 @@ FILE(GLOB LCB_RDB_SRC src/rdb/*.c)
29
29
  FILE(GLOB LCB_NETBUF_SRC src/netbuf/*.c)
30
30
 
31
31
  # HTTP protocol management
32
- FILE(GLOB LCB_HT_SRC src/lcbht/*.c)
33
32
  LIST(APPEND LCB_HT_SRC "contrib/http_parser/http_parser.c")
34
33
 
35
34
  # bucket config ("confmon")
@@ -39,40 +38,57 @@ SET(LCB_CORE_SRC
39
38
  ${LCB_OP_SRC}
40
39
  ${LCB_BCONF_SRC}
41
40
  ${LCB_N1QL_SRC}
42
- src/bootstrap.c
43
41
  src/callbacks.c
44
42
  src/legacy.c
45
43
  # src/mcserver/negotiate.c
46
44
  src/iofactory.c
47
- src/retrychk.c
48
45
  src/settings.c
49
46
  src/utilities.c)
50
47
 
51
48
  SET(LCB_CORE_CXXSRC
52
49
  src/instance.cc
53
50
  src/auth.cc
51
+ src/bootstrap.cc
54
52
  src/bucketconfig/bc_cccp.cc
53
+ src/bucketconfig/bc_http.cc
54
+ src/bucketconfig/bc_file.cc
55
+ src/bucketconfig/bc_static.cc
56
+ src/bucketconfig/confmon.cc
55
57
  src/connspec.cc
58
+ src/dns-srv.cc
56
59
  src/dump.cc
60
+ src/errmap.cc
57
61
  src/getconfig.cc
58
62
  src/nodeinfo.cc
59
63
  src/handler.cc
60
64
  src/hostlist.cc
61
65
  src/http/http.cc
62
66
  src/http/http_io.cc
67
+ src/lcbht/lcbht.cc
63
68
  src/newconfig.cc
64
69
  src/n1ql/params.cc
65
70
  src/n1ql/n1ql.cc
66
71
  src/n1ql/ixmgmt.cc
67
72
  src/cbft.cc
73
+ src/operations/cbflush.cc
74
+ src/operations/counter.cc
68
75
  src/operations/durability.cc
69
76
  src/operations/durability-cas.cc
70
77
  src/operations/durability-seqno.cc
78
+ src/operations/get.cc
79
+ src/operations/observe.cc
71
80
  src/operations/observe-seqno.cc
81
+ src/operations/pktfwd.cc
82
+ src/operations/remove.cc
72
83
  src/operations/stats.cc
84
+ src/operations/store.cc
73
85
  src/operations/subdoc.cc
86
+ src/operations/touch.cc
74
87
  src/mcserver/mcserver.cc
75
88
  src/mcserver/negotiate.cc
89
+ src/retrychk.cc
76
90
  src/retryq.cc
91
+ src/views/docreq.cc
92
+ src/views/viewreq.cc
77
93
  src/cntl.cc
78
94
  src/wait.cc)