aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniil Cherednik <dcherednik@yandex-team.ru>2023-12-19 12:58:48 +0100
committerGitHub <noreply@github.com>2023-12-19 14:58:48 +0300
commit377bc60f8765f046c1475ad69a5fc048786044dc (patch)
tree40e9010944b40275ea2660461875b5d7e96829b1
parentc5b9fe2d7a89c892ce42b53171dcd910a450dc46 (diff)
downloadydb-377bc60f8765f046c1475ad69a5fc048786044dc.tar.gz
Report nodeId with create session response. (#562)
-rw-r--r--ydb/core/grpc_services/rpc_common/rpc_common_kqp_session.cpp16
-rw-r--r--ydb/core/kqp/proxy_service/kqp_proxy_service.cpp1
-rw-r--r--ydb/core/protos/kqp.proto1
-rw-r--r--ydb/public/lib/ut_helpers/ut_helpers_query.cpp1
4 files changed, 13 insertions, 6 deletions
diff --git a/ydb/core/grpc_services/rpc_common/rpc_common_kqp_session.cpp b/ydb/core/grpc_services/rpc_common/rpc_common_kqp_session.cpp
index 102f5a7c1eb..041b1c9e1f9 100644
--- a/ydb/core/grpc_services/rpc_common/rpc_common_kqp_session.cpp
+++ b/ydb/core/grpc_services/rpc_common/rpc_common_kqp_session.cpp
@@ -124,7 +124,7 @@ private:
// We already lost the client, so the client should not see this status
Reply(Ydb::StatusIds::INTERNAL_ERROR);
} else {
- SendSessionResult(kqpResponse.GetSessionId());
+ SendSessionResult(kqpResponse);
PassAway();
return;
}
@@ -134,7 +134,7 @@ private:
}
private:
- virtual void SendSessionResult(const TString& id) = 0;
+ virtual void SendSessionResult(const NKikimrKqp::TCreateSessionResponse& kqpResponse) = 0;
template<typename TResp>
void ReplyResponseError(const TResp& kqpResponse) {
@@ -171,9 +171,9 @@ public:
}
private:
- void SendSessionResult(const TString& id) override {
+ void SendSessionResult(const NKikimrKqp::TCreateSessionResponse& kqpResponse) override {
Ydb::Table::CreateSessionResult result;
- result.set_session_id(id);
+ result.set_session_id(kqpResponse.GetSessionId());
static_cast<TCtx*>(Request.get())->SendResult(result, Ydb::StatusIds::SUCCESS);
};
};
@@ -186,11 +186,15 @@ public:
}
private:
- void SendSessionResult(const TString& id) override {
+ void SendSessionResult(const NKikimrKqp::TCreateSessionResponse& kqpResponse) override {
using TRes = Ydb::Query::CreateSessionResponse;
auto res = google::protobuf::Arena::CreateMessage<TRes>(Request->GetArena());;
res->set_status(Ydb::StatusIds::SUCCESS);
- res->set_session_id(id);
+ res->set_session_id(kqpResponse.GetSessionId());
+
+ if (kqpResponse.HasNodeId())
+ res->set_node_id(kqpResponse.GetNodeId());
+
Request->Reply(res, Ydb::StatusIds::SUCCESS);
};
};
diff --git a/ydb/core/kqp/proxy_service/kqp_proxy_service.cpp b/ydb/core/kqp/proxy_service/kqp_proxy_service.cpp
index 537aef1ac23..b68763142a1 100644
--- a/ydb/core/kqp/proxy_service/kqp_proxy_service.cpp
+++ b/ydb/core/kqp/proxy_service/kqp_proxy_service.cpp
@@ -570,6 +570,7 @@ public:
{
auto& response = *responseEv->Record.MutableResponse();
response.SetSessionId(result.Value->SessionId);
+ response.SetNodeId(SelfId().NodeId());
dbCounters = result.Value->DbCounters;
} else {
dbCounters = Counters->GetDbCounters(request.GetDatabase());
diff --git a/ydb/core/protos/kqp.proto b/ydb/core/protos/kqp.proto
index 30e6c740aa0..eb64dabcb1f 100644
--- a/ydb/core/protos/kqp.proto
+++ b/ydb/core/protos/kqp.proto
@@ -332,6 +332,7 @@ message TEvCreateSessionRequest {
message TCreateSessionResponse {
optional bytes SessionId = 1;
+ optional int64 NodeId = 2;
}
message TEvCreateSessionResponse {
diff --git a/ydb/public/lib/ut_helpers/ut_helpers_query.cpp b/ydb/public/lib/ut_helpers/ut_helpers_query.cpp
index e23bbadecb4..1d2193fbac2 100644
--- a/ydb/public/lib/ut_helpers/ut_helpers_query.cpp
+++ b/ydb/public/lib/ut_helpers/ut_helpers_query.cpp
@@ -26,6 +26,7 @@ TString CreateQuerySession(const TGRpcClientConfig& clientConfig) {
UNIT_ASSERT_C(grpcStatus.GRpcStatusCode == 0, grpcStatus.Msg + " " + grpcStatus.Details);
UNIT_ASSERT_VALUES_EQUAL(response.status(), Ydb::StatusIds::SUCCESS);
UNIT_ASSERT(response.session_id() != "");
+ UNIT_ASSERT(response.node_id() != 0);
sessionId = response.session_id();
};