[PATCH v1 01/11] transport: co-routinize cql_server::connection::process

0 views
Skip to first unread message

Gleb Natapov

<gleb@scylladb.com>
unread,
Jul 9, 2024, 7:32:25 AM (8 days ago) Jul 9
to scylladb-dev@googlegroups.com
---
transport/server.cc | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/transport/server.cc b/transport/server.cc
index 7c032f60162..8309fea0c95 100644
--- a/transport/server.cc
+++ b/transport/server.cc
@@ -996,17 +996,13 @@ cql_server::connection::process(uint16_t stream, request_reader in, service::cli
tracing::trace_state_ptr trace_state, Process process_fn) {
fragmented_temporary_buffer::istream is = in.get_stream();

- return process_fn(client_state, _server._query_processor, in, stream,
- _version, permit, trace_state, true, {})
- .then([stream, &client_state, this, is, permit, process_fn, trace_state]
- (process_fn_return_type msg) mutable {
- auto* bounce_msg = std::get_if<shared_ptr<messages::result_message::bounce_to_shard>>(&msg);
- if (bounce_msg) {
- return process_on_shard(*bounce_msg, stream, is, client_state, std::move(permit), trace_state, process_fn);
- }
- auto ptr = std::get<cql_server::result_with_foreign_response_ptr>(std::move(msg));
- return make_ready_future<cql_server::result_with_foreign_response_ptr>(std::move(ptr));
- });
+ process_fn_return_type msg = co_await process_fn(client_state, _server._query_processor, in, stream, _version, permit, trace_state, true, {});
+
+ auto* bounce_msg = std::get_if<shared_ptr<messages::result_message::bounce_to_shard>>(&msg);
+ if (bounce_msg) {
+ co_return co_await process_on_shard(*bounce_msg, stream, is, client_state, std::move(permit), trace_state, process_fn);
+ }
+ co_return std::get<cql_server::result_with_foreign_response_ptr>(std::move(msg));
}

static future<process_fn_return_type>
--
2.45.2

Reply all
Reply to author
Forward
0 new messages