@@ -64,12 +64,14 @@ initiate_lookup_in_all_replicas_operation(std::shared_ptr<cluster> core,
64
64
if (ec) {
65
65
std::optional<std::string> first_error_path{};
66
66
std::optional<std::size_t > first_error_index{};
67
- return h (make_subdocument_error_context (make_key_value_error_context (ec, r->id ()), ec, first_error_path, first_error_index, false ), lookup_in_all_replicas_result{});
67
+ return h (
68
+ make_subdocument_error_context (make_key_value_error_context (ec, r->id ()), ec, first_error_path, first_error_index, false ),
69
+ lookup_in_all_replicas_result{});
68
70
}
69
71
struct replica_context {
70
72
replica_context (movable_lookup_in_all_replicas_handler handler, std::uint32_t expected_responses)
71
- : handler_(std::move(handler))
72
- , expected_responses_(expected_responses)
73
+ : handler_(std::move(handler))
74
+ , expected_responses_(expected_responses)
73
75
{
74
76
}
75
77
@@ -84,46 +86,48 @@ initiate_lookup_in_all_replicas_operation(std::shared_ptr<cluster> core,
84
86
for (std::size_t idx = 1U ; idx <= config.num_replicas .value_or (0U ); ++idx) {
85
87
document_id replica_id{ r->id () };
86
88
replica_id.node_index (idx);
87
- core->execute (impl::lookup_in_replica_request{ std::move (replica_id), r->specs (), r->timeout () }, [ctx](impl::lookup_in_replica_response&& resp) {
88
- movable_lookup_in_all_replicas_handler local_handler{};
89
- {
90
- std::scoped_lock lock (ctx->mutex_ );
91
- if (ctx->done_ ) {
92
- return ;
93
- }
94
- --ctx->expected_responses_ ;
95
- if (resp.ctx .ec ()) {
96
- if (ctx->expected_responses_ > 0 ) {
97
- // just ignore the response
98
- return ;
99
- }
100
- } else {
101
- std::vector<lookup_in_replica_result::entry> entries{};
102
- for (auto & field : resp.fields ) {
103
- lookup_in_replica_result::entry lookup_in_entry{};
104
- lookup_in_entry.path = field.path ;
105
- lookup_in_entry.value = field.value ;
106
- lookup_in_entry.exists = field.exists ;
107
- lookup_in_entry.original_index = field.original_index ;
108
- entries.emplace_back (lookup_in_entry);
109
- }
110
- ctx->result_ .emplace_back (lookup_in_replica_result{ resp.cas , entries, resp.deleted , true /* replica */ });
111
- }
112
- if (ctx->expected_responses_ == 0 ) {
113
- ctx->done_ = true ;
114
- std::swap (local_handler, ctx->handler_ );
115
- }
116
- }
117
- if (local_handler) {
118
- if (!ctx->result_ .empty ()) {
119
- resp.ctx .override_ec ({});
120
- }
121
- return local_handler (std::move (resp.ctx ), std::move (ctx->result_ ));
122
- }
123
- });
89
+ core->execute (
90
+ impl::lookup_in_replica_request{ std::move (replica_id), r->specs (), r->timeout () },
91
+ [ctx](impl::lookup_in_replica_response&& resp) {
92
+ movable_lookup_in_all_replicas_handler local_handler{};
93
+ {
94
+ std::scoped_lock lock (ctx->mutex_ );
95
+ if (ctx->done_ ) {
96
+ return ;
97
+ }
98
+ --ctx->expected_responses_ ;
99
+ if (resp.ctx .ec ()) {
100
+ if (ctx->expected_responses_ > 0 ) {
101
+ // just ignore the response
102
+ return ;
103
+ }
104
+ } else {
105
+ std::vector<lookup_in_replica_result::entry> entries{};
106
+ for (auto & field : resp.fields ) {
107
+ lookup_in_replica_result::entry lookup_in_entry{};
108
+ lookup_in_entry.path = field.path ;
109
+ lookup_in_entry.value = field.value ;
110
+ lookup_in_entry.exists = field.exists ;
111
+ lookup_in_entry.original_index = field.original_index ;
112
+ entries.emplace_back (lookup_in_entry);
113
+ }
114
+ ctx->result_ .emplace_back (lookup_in_replica_result{ resp.cas , entries, resp.deleted , true /* replica */ });
115
+ }
116
+ if (ctx->expected_responses_ == 0 ) {
117
+ ctx->done_ = true ;
118
+ std::swap (local_handler, ctx->handler_ );
119
+ }
120
+ }
121
+ if (local_handler) {
122
+ if (!ctx->result_ .empty ()) {
123
+ resp.ctx .override_ec ({});
124
+ }
125
+ return local_handler (std::move (resp.ctx ), std::move (ctx->result_ ));
126
+ }
127
+ });
124
128
}
125
129
126
- core::operations::lookup_in_request active{document_id{ r->id () } };
130
+ core::operations::lookup_in_request active{ document_id{ r->id () } };
127
131
active.specs = r->specs ();
128
132
active.timeout = r->timeout ();
129
133
core->execute (active, [ctx](core::operations::lookup_in_response&& resp) {
0 commit comments