Skip to content

Commit adf9056

Browse files
committed
CCBC-1668: do not assume that missing active node means none available for replica read
Change-Id: I3119004bf7aff3c98b0086df65dd1b48f0e8d7de Reviewed-on: https://review.couchbase.org/c/libcouchbase/+/232445 Reviewed-by: Jared Casey <jared.casey@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
1 parent df1f5a6 commit adf9056

1 file changed

Lines changed: 8 additions & 10 deletions

File tree

src/operations/get_replica.cc

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,6 @@ static std::vector<readable_node> select_effective_node_indexes(lcb_INSTANCE *in
267267
lcb_KEYBUF keybuf{LCB_KV_COPY, {cmd->key().c_str(), cmd->key().size()}};
268268
mcreq_map_key(cq, &keybuf, MCREQ_PKT_BASESIZE, &vbid, &active_index);
269269

270-
if (active_index < 0) {
271-
return {};
272-
}
273-
274270
std::vector<readable_node> effective_nodes{};
275271

276272
if (cmd->mode() == get_replica_mode::select) {
@@ -323,14 +319,16 @@ static std::vector<readable_node> select_effective_node_indexes(lcb_INSTANCE *in
323319
return {effective_nodes.front()};
324320
}
325321

326-
/* read from active */
327-
if (use_preferred_server_group) {
328-
const char *active_server_group = cq->config->servers[active_index].server_group;
329-
if (active_server_group != nullptr && preferred_server_group == active_server_group) {
322+
/* read from active, if it is accessible */
323+
if (active_index >= 0) {
324+
if (use_preferred_server_group) {
325+
const char *active_server_group = cq->config->servers[active_index].server_group;
326+
if (active_server_group != nullptr && preferred_server_group == active_server_group) {
327+
effective_nodes.push_back({false, static_cast<std::size_t>(active_index), 0xff});
328+
}
329+
} else {
330330
effective_nodes.push_back({false, static_cast<std::size_t>(active_index), 0xff});
331331
}
332-
} else {
333-
effective_nodes.push_back({false, static_cast<std::size_t>(active_index), 0xff});
334332
}
335333

336334
return effective_nodes;

0 commit comments

Comments
 (0)