@@ -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