History log of /6.0.3/platform/src/ (Results 1 - 25 of 227)
Revision (<<< Hide revision tags) (Show revision tags >>>)Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
Revision tags: v6.0.3
de77d52719-Jul-2019 Trond Norbye <trond.norbye@gmail.com>

MB-35195: cb::io::mkdirp must terminate for non-existent drive

cb::io::mkdirp use recursion and tries to create the parent
directory, but if the directory is a drive mapping for windows

MB-35195: cb::io::mkdirp must terminate for non-existent drive

cb::io::mkdirp use recursion and tries to create the parent
directory, but if the directory is a drive mapping for windows
we'll return '.' (which means the current directory) and
returns true. Then we're back up in the recursion and try
to create the directory, which would fail again and try
the parent directory (.) and we enter an endless loop.

Solution:
Use SHCreateDirectoryEx instead.

Change-Id: I8356f26248ff20bb890ad4d78824f052438cb702
Reviewed-on: http://review.couchbase.org/112261
Well-Formed: Build Bot <build@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Richard de Mellow <richard.demellow@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

Revision tags: v5.5.4, v5.5.0
aabde79708-May-2018 Trond Norbye <trond.norbye@gmail.com>

Reference all of getopt members with full namespace

Change-Id: Ibd04c3c20acc72b3c521d367b6b6b0da49bbe716
Reviewed-on: http://review.couchbase.org/93882
Reviewed-by: Dave Rigby <daver

Reference all of getopt members with full namespace

Change-Id: Ibd04c3c20acc72b3c521d367b6b6b0da49bbe716
Reviewed-on: http://review.couchbase.org/93882
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...

e8521d7304-May-2018 Trond Norbye <trond.norbye@gmail.com>

Use PLATFORM_PUBLIC_API instead of __declspec()

Change-Id: Iab8de18d62347a3e716c915ba2e4657081119d19
Reviewed-on: http://review.couchbase.org/93777
Tested-by: Build Bot <build@couchb

Use PLATFORM_PUBLIC_API instead of __declspec()

Change-Id: Iab8de18d62347a3e716c915ba2e4657081119d19
Reviewed-on: http://review.couchbase.org/93777
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Tim Bradgate <tim.bradgate@couchbase.com>

show more ...

38010ba304-May-2018 Trond Norbye <trond.norbye@gmail.com>

MB-29521: Allow long options with values in getopt_long

getopt_long did not work for --argument=value (or --argument value)

In addition to that optional argument did not work

MB-29521: Allow long options with values in getopt_long

getopt_long did not work for --argument=value (or --argument value)

In addition to that optional argument did not work

Change-Id: I4ef048792dbdce24bb110e9167ca78b4f062bd50
Reviewed-on: http://review.couchbase.org/93757
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

d912dd2b04-May-2018 Dave Rigby <daver@couchbase.com>

UBSan: Fix failing RTTI checks when using DSOs

UBSan's vptr checker needs to be able to lookup RTTI information
(type_info) for all calls via virtual functions. However, a number of

UBSan: Fix failing RTTI checks when using DSOs

UBSan's vptr checker needs to be able to lookup RTTI information
(type_info) for all calls via virtual functions. However, a number of
tests which load DSOs (via dlopen) currently fail when run under
UBSan.

For example:

build-ubsan/kv_engine/engine_testapp -C 0 -E build-ubsan/kv_engine/ep.so -T build-ubsan/kv_engine/ep_testsuite.so -v -e dbname=./ep_testsuite.value_eviction.db

runtime error: member call on address 0x7fffee10e460 which does not point to an object of type 'FileOpsInterface'
0x7fffee10e460: note: object is of type 'StatsOps'
00 00 00 00 a8 64 d8 ef ff 7f 00 00 a0 f9 06 ee ff 7f 00 00 c0 8f 83 f3 ff 7f 00 00 00 00 00 00
^~~~~~~~~~~~~~~~~~~~~~~
vptr for 'StatsOps'
#0 0x7ffff35bc970 in BufferedFileOps::constructor(couchstore_error_info_t*, FileOpsInterface*, buffered_file_ops_params) couchstore/src/iobuffer.cc:334

The reason for this is that cb_dlopen() calls dlopen with the
RTLD_LOCAL flag; this means that symbols in the opened DSO are not
made available to the calling binary, or any other loaded
DSOs. Specifically, in the case of ep_testsuite it loads ep.so via
cb_dlopen(); and this includes type info for a number of
storage-related classes such as StatsFileOps.

To solve this, replace RTLD_LOCAL with RTLD_GLOBAL; so all external
symbols in ep.so are accessible.

Change-Id: Ibcc0082998fad492b6f9871d4b3581bb837ef56a
Reviewed-on: http://review.couchbase.org/93760
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

56295be604-May-2018 Trond Norbye <trond.norbye@gmail.com>

Move getopt tests to gtest

Makes it easier to look run the tests and look at the
test failures

Change-Id: Iaee0941e98cc24ebe9b82dd47975e1f1c055ae8e
Reviewed-on: http://revie

Move getopt tests to gtest

Makes it easier to look run the tests and look at the
test failures

Change-Id: Iaee0941e98cc24ebe9b82dd47975e1f1c055ae8e
Reviewed-on: http://review.couchbase.org/93748
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

cc62f3a204-May-2018 Trond Norbye <trond.norbye@gmail.com>

Refactor: make our getopt impl available as cb::getopt

This makes it easier to run the unit tests on all platforms
to fix bugs (Note that it is still only used on windows
"in product

Refactor: make our getopt impl available as cb::getopt

This makes it easier to run the unit tests on all platforms
to fix bugs (Note that it is still only used on windows
"in production")

Change-Id: Ic9f9b49549d7c1a14213ed568da0c4931816b226
Reviewed-on: http://review.couchbase.org/93747
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

Revision tags: v4.6.5, v5.0.0
72cbf62f20-Jun-2017 Will Gardner <willg@rdner.io>

Add platform abstraction for registering SIGINT signal handlers

Cross-platform compatible support for SIGINT handling is non-trivial
since the cross-platform `signal` API works different

Add platform abstraction for registering SIGINT signal handlers

Cross-platform compatible support for SIGINT handling is non-trivial
since the cross-platform `signal` API works differently on different
platforms.

This patch introduces two functions to the platform API:
cb::set_sigint_handler and cb::clear_sigint_handler.

On Unix platforms this just uses the sigaction API. On Windows
this uses the ConsoleCtrlHandler API.

Change-Id: Id8553030c0725a45e14f5e8277163ff8448c8a27
Reviewed-on: http://review.couchbase.org/79701
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

9c83cef106-Apr-2018 Dave Rigby <daver@couchbase.com>

MB-28941: Add ScopeTimer classes for timing to multiple listeners

Add ScopeTimer classes: these are timer wrappers which provides a
RAII-style mechanism for timing the duration of sectio

MB-28941: Add ScopeTimer classes for timing to multiple listeners

Add ScopeTimer classes: these are timer wrappers which provides a
RAII-style mechanism for timing the duration of sections of code;
where multiple listeners can record the same duration.

The motiviation for this class is we have regions of code which
multiple listeners want to time - for example the main KV-Engine
functions want to record their duratin in a per-bucket histogram, and
also into the per-Cookie Tracer timings. We don't want to just have
each listener perform it's reading of the clock as that is (a) costly
and (b) gives slightly different time values to each
listener. Instead, this class handles reading the time (just once at
start and stop); and then passes it onto each listener.

Change-Id: I50f87a99ce74fadb61931f1b44011e42207c5020
Reviewed-on: http://review.couchbase.org/92322
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

255b68ab16-Mar-2018 Trond Norbye <trond.norbye@gmail.com>

Add cb::io::loadFile()

Reading a file is a common task used around in our system.
Might as well have helper method for that to avoid
reimplement it everywhere.

Change-Id: I8

Add cb::io::loadFile()

Reading a file is a common task used around in our system.
Might as well have helper method for that to avoid
reimplement it everywhere.

Change-Id: I829d11b2a2dbffe168acb28a325563ff0fb59ca0
Reviewed-on: http://review.couchbase.org/91104
Reviewed-by: Daniel Owen <owend@couchbase.com>
Reviewed-by: Tim Bradgate <tim.bradgate@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...

cfaa242815-Mar-2018 Trond Norbye <trond.norbye@gmail.com>

JSON dictionary is case sensitive

According to jsonlint.com the following JSON is legal:

{ "version" : 1, "VERSION" : 2 }

But

{ "version" : 1, "version" :

JSON dictionary is case sensitive

According to jsonlint.com the following JSON is legal:

{ "version" : 1, "VERSION" : 2 }

But

{ "version" : 1, "version" : 2 }

is illegal.

cJSON_Parse does not check for duplicate entries, but it did
a case insensitive search when trying to locate the key,
causing an unpredictable behaviour in which key to return
from "cJSON_GetObjectItem"

Change-Id: Ic04b06fdb2a60abf354243bea9335dd9c9228746
Reviewed-on: http://review.couchbase.org/91002
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Tim Bradgate <tim.bradgate@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

7143ab1f06-Mar-2018 Trond Norbye <trond.norbye@gmail.com>

Add helper string to allow add std::string to cJSON

Change-Id: I1359840bb82ab6a55fd00a1afde2187aac755d07
Reviewed-on: http://review.couchbase.org/90520
Reviewed-by: Dave Rigby <daver

Add helper string to allow add std::string to cJSON

Change-Id: I1359840bb82ab6a55fd00a1afde2187aac755d07
Reviewed-on: http://review.couchbase.org/90520
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...

da5130e626-Feb-2018 Trond Norbye <trond.norbye@gmail.com>

Refactor: Split cJSON_Number into cJSON_Double

We barely use the double part in our code, so it's easier to
jet cJSON_Number mean a signed integer, and cJSON_Double
represent floatin

Refactor: Split cJSON_Number into cJSON_Double

We barely use the double part in our code, so it's easier to
jet cJSON_Number mean a signed integer, and cJSON_Double
represent floating points.

This means that we can use signed 64 integers without caring
about information loss (except for signness issues, but that
require deeper changes to cJSON)

Change-Id: Ib402e2e1fa5640199b518ed700b592b2be576969
Reviewed-on: http://review.couchbase.org/90056
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...

bac3aa4e21-Feb-2018 Tim Bradgate <tim.bradgate@couchbase.com>

MB-27661 [2/n]: Add further API methods for cJSON

This adds four new API methods to help adding numbers to the JSON
object.

- cJSON_AddIntegerToObject
This method ad

MB-27661 [2/n]: Add further API methods for cJSON

This adds four new API methods to help adding numbers to the JSON
object.

- cJSON_AddIntegerToObject
This method adds a uint32_t to the cJSON object by casting it
to a double. This is safe as the IEEE-754 spec has 52 bits for
mantissa.

- cJSON_AddInteger64ToObject
This method adds a uint64_t to the cJSON object by casting it
to a double. This method performs a narrowing conversion so it
should be noted there is the potential for malformed data.

- cJSON_AddStringifiedIntegerToObject
This method adds an uint64_t to the cJSON object through the use
of a string representation of the number.

- cJSON_AddStringifiedSignedIntegerToObject
This method adds an int64_t to the cJSON object through the use
of a string representation of the number.

This also adds associated unit tests for these methods.

Change-Id: Ic39b7ce82ca0fbcd550aab8d076fce5e8a213094
Reviewed-on: http://review.couchbase.org/89812
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

7e55a6b012-Feb-2018 Dave Rigby <daver@couchbase.com>

get_cpu_index: Add macOS-specific implementation using SIDT

On macOS the value returned from __cpuid(1) in EBX[24:31] - the
running CPU index - can be greater than the value returned by

get_cpu_index: Add macOS-specific implementation using SIDT

On macOS the value returned from __cpuid(1) in EBX[24:31] - the
running CPU index - can be greater than the value returned by
sysconf(_SC_NPROCESSORS_CONF) - the cpu count. As such, code which
assumes that cpu_index < cpu_count can fail.

From testing, it appears the cpu_index values are not contiguous - on
a 2013 Mac Pro the CPU index returned is always even (and hence can be
2x the cpu_count).

This patch uses an alternative method to read the cpu_index - macOS
encodes the cpu_index inside the Interrupt Descriptor Table Register
(IDTR)[1], which can be read using the SIDT instruction on
x86-64[2].

This also has > 10x speed advantage compared to using CPUID - using
the MemoryAllocationStat benchmark from kv_engine:

cpuid (old)

----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
MemoryAllocationStat/AllocNRead1/0/threads:64 0 ns 3 ns 227495488
MemoryAllocationStat/AllocNRead1/1/threads:64 5 ns 319 ns 2154752
MemoryAllocationStat/AllocNRead1/2/threads:64 25 ns 655 ns 1088320
MemoryAllocationStat/AllocNRead1/4/threads:64 50 ns 1291 ns 533824
MemoryAllocationStat/AllocNRead1/8/threads:64 102 ns 2638 ns 260608
MemoryAllocationStat/AllocNRead1/16/threads:64 84 ns 5130 ns 132736
MemoryAllocationStat/AllocNRead1/32/threads:64 165 ns 10256 ns 66368
MemoryAllocationStat/AllocNRead1/64/threads:64 811 ns 20676 ns 32704
MemoryAllocationStat/AllocNRead1/128/threads:64 978 ns 40975 ns 16256
MemoryAllocationStat/AllocNRead1/256/threads:64 3085 ns 81096 ns 8384
MemoryAllocationStat/AllocNRead1/512/threads:64 6584 ns 170646 ns 4288
MemoryAllocationStat/AllocNRead1/1024/threads:64 12928 ns 342531 ns 2048
MemoryAllocationStat/AllocNRead1/2048/threads:64 25306 ns 671094 ns 1024
MemoryAllocationStat/AllocNRead1/4000/threads:64 48868 ns 1338992 ns 512

sidt (this patch)

----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
MemoryAllocationStat/AllocNRead1/0/threads:64 0 ns 3 ns 225675648
MemoryAllocationStat/AllocNRead1/1/threads:64 0 ns 23 ns 30186048
MemoryAllocationStat/AllocNRead1/2/threads:64 2 ns 44 ns 15798208
MemoryAllocationStat/AllocNRead1/4/threads:64 3 ns 87 ns 8140544
MemoryAllocationStat/AllocNRead1/8/threads:64 6 ns 166 ns 4170496
MemoryAllocationStat/AllocNRead1/16/threads:64 6 ns 347 ns 1984512
MemoryAllocationStat/AllocNRead1/32/threads:64 27 ns 694 ns 1021696
MemoryAllocationStat/AllocNRead1/64/threads:64 52 ns 1354 ns 516288
MemoryAllocationStat/AllocNRead1/128/threads:64 100 ns 2696 ns 256832
MemoryAllocationStat/AllocNRead1/256/threads:64 205 ns 5416 ns 129536
MemoryAllocationStat/AllocNRead1/512/threads:64 427 ns 10893 ns 62656
MemoryAllocationStat/AllocNRead1/1024/threads:64 845 ns 21882 ns 31936
MemoryAllocationStat/AllocNRead1/2048/threads:64 1719 ns 44596 ns 15680
MemoryAllocationStat/AllocNRead1/4000/threads:64 3374 ns 86637 ns 8000

[1]: https://github.com/apple/darwin-xnu/blob/0a798f6738bc1db01281fc08ae024145e84df927/osfmk/i386/mp_desc.c#L500-L505
[2]: https://github.com/apple/darwin-xnu/blob/0a798f6738bc1db01281fc08ae024145e84df927/libsyscall/os/tsd.h#L65

Change-Id: I66112a647522ce6139251306a4c889e84cdc0e2e
Reviewed-on: http://review.couchbase.org/89271
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

017ab79d04-Feb-2018 Trond Norbye <trond.norbye@gmail.com>

Add methods to print an integer in hex

This allows for adding hexadecimal integers into our
logs.

Change-Id: I1977a340993dedaaa6628fa3d0676e6af0fac695
Reviewed-on: http://re

Add methods to print an integer in hex

This allows for adding hexadecimal integers into our
logs.

Change-Id: I1977a340993dedaaa6628fa3d0676e6af0fac695
Reviewed-on: http://review.couchbase.org/88827
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Jim Walker <jim@couchbase.com>

show more ...

354bf3ec02-Feb-2018 Trond Norbye <trond.norbye@gmail.com>

Win32: Use std::this_thread::sleep_for for usleep

Change-Id: I4bc6fa3adc36e5f990b9d6d282db3b6cfeeb0cae
Reviewed-on: http://review.couchbase.org/88748
Tested-by: Build Bot <build@couc

Win32: Use std::this_thread::sleep_for for usleep

Change-Id: I4bc6fa3adc36e5f990b9d6d282db3b6cfeeb0cae
Reviewed-on: http://review.couchbase.org/88748
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

e594d28801-Feb-2018 Trond Norbye <trond.norbye@gmail.com>

gcc7: Don't inline to_string(cb::const_char_buffer)

gcc7 complains if it encounters this static inline before seeing
the one in kv_engine (for error codes) as it is not static inline.

gcc7: Don't inline to_string(cb::const_char_buffer)

gcc7 complains if it encounters this static inline before seeing
the one in kv_engine (for error codes) as it is not static inline.

Change-Id: I116c89b229903506f0a777daa33abf6d501606c9
Reviewed-on: http://review.couchbase.org/88699
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...

7acb4fed29-Jan-2018 Jim Walker <jim@couchbase.com>

MB-27767: Use configured CPUs not online for cb::get_cpu_count

sysconf(_SC_NPROCESSORS_ONLN) can return a number which is less than
a the index a thread may run on, hence we should use t

MB-27767: Use configured CPUs not online for cb::get_cpu_count

sysconf(_SC_NPROCESSORS_ONLN) can return a number which is less than
a the index a thread may run on, hence we should use the configured
CPUs.

Change-Id: I27f1578b83f581b0359c4778b5caa45b0eea0c8a
Reviewed-on: http://review.couchbase.org/88484
Reviewed-by: Tim Bradgate <tim.bradgate@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...

df0afb4229-Jan-2018 Dave Rigby <daver@couchbase.com>

Fix GCC7 warnings

GCC 7 gives some additional compiler-warnings in platform. Fix them.

Change-Id: I226e41d8fba0de006f470c8f2d5a945e0e329b6e
Reviewed-on: http://review.couchbase.

Fix GCC7 warnings

GCC 7 gives some additional compiler-warnings in platform. Fix them.

Change-Id: I226e41d8fba0de006f470c8f2d5a945e0e329b6e
Reviewed-on: http://review.couchbase.org/88508
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Sriram Ganesan <sriram@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

b5f07db516-Jan-2018 Jim Walker <jim@couchbase.com>

MB-24860: Add get_cpu_count and get_cpu_index

get_cpu_count returns the number of 'cores' installed in the system
get_cpu_index returns the index of the 'core' the caller is running on

MB-24860: Add get_cpu_count and get_cpu_index

get_cpu_count returns the number of 'cores' installed in the system
get_cpu_index returns the index of the 'core' the caller is running on

Together the methods are intended to assist in building core-local
storage, away to associate data with the running core

Change-Id: I68a4095d47d051660d3472b911053613638325d7
Reviewed-on: http://review.couchbase.org/87905
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

decc36eb29-Nov-2017 Dave Rigby <daver@couchbase.com>

Histogram: de-inline expensive methods

Move a number of large / expensive Histogram<> methods from the header
(where they become inline) to a new histogram.cc file. The main
motivati

Histogram: de-inline expensive methods

Move a number of large / expensive Histogram<> methods from the header
(where they become inline) to a new histogram.cc file. The main
motivation for this is to expose the cost of these Histogram<> methods
in profiling etc, as currently they end up getting inlined into
various other methods and hence their cost is "smeared" across every
function which uses them.

Change-Id: Iad3d32b9a6e4734625ac604b28ca874e45eea83d
Reviewed-on: http://review.couchbase.org/86129
Reviewed-by: Jim Walker <jim@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...

1460328903-Oct-2017 Eugen-Alexandru Virtan <eugen.virtan@couchbase.com>

MB-26047:[2] Migrate away from using gethrtime()

Replace uses of gethrtime() with ProcessClock::now() and refactor
related code to use typesafe <chrono> time units.

Change-Id: I

MB-26047:[2] Migrate away from using gethrtime()

Replace uses of gethrtime() with ProcessClock::now() and refactor
related code to use typesafe <chrono> time units.

Change-Id: I6faf5fdcf49d1687176b279b1986b5a90949b5c3
Reviewed-on: http://review.couchbase.org/83969
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

f8df94f304-Oct-2017 Eugen-Alexandru Virtan <eugen.virtan@couchbase.com>

Remove duplicate of cb::time2text()

Remove duplicate method to_string(). cb::time2text() should be used
when a duration needs to be converted to a human readable form.
Update cb::tim

Remove duplicate of cb::time2text()

Remove duplicate method to_string(). cb::time2text() should be used
when a duration needs to be converted to a human readable form.
Update cb::time2text()'s description.

Change-Id: I15c1e78f6db1bf5927405a29072516ce4960668c
Reviewed-on: http://review.couchbase.org/84026
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Build Bot <build@couchbase.com>

show more ...

f70ee11b15-Sep-2017 Eugen-Alexandru Virtan <eugen.virtan@couchbase.com>

MB-25929[3/3]: Remove the now deprecated Couchbase::hrtime2text

Completely replace Couchbase::hrtime2test(hrtime_t) with the updated
and improved version, cb::time2test(std::chrono::nano

MB-25929[3/3]: Remove the now deprecated Couchbase::hrtime2text

Completely replace Couchbase::hrtime2test(hrtime_t) with the updated
and improved version, cb::time2test(std::chrono::nanoseconds).

Change-Id: I28661d8f7ad5d43216f11d30b49a5fe8a5a83287
Reviewed-on: http://review.couchbase.org/83434
Tested-by: Build Bot <build@couchbase.com>
Reviewed-by: Paolo Cocchi <paolo.cocchi@couchbase.com>
Reviewed-by: Manu Dhundi <manu@couchbase.com>

show more ...

12345678910