libcouchbase 0.3.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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)