From f23fad2ba0d00dc204697a8e10c333690d083b0e Mon Sep 17 00:00:00 2001
From: dcherednik <dcherednik@ydb.tech>
Date: Wed, 11 Oct 2023 13:06:41 +0300
Subject: Set request unit trailing header for ScanQuery/ScanYql sctipts.
 KIKIMR-19243

---
 library/cpp/grpc/client/grpc_client_low.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

(limited to 'library/cpp/grpc/client/grpc_client_low.h')

diff --git a/library/cpp/grpc/client/grpc_client_low.h b/library/cpp/grpc/client/grpc_client_low.h
index e3f786242d..acec2de075 100644
--- a/library/cpp/grpc/client/grpc_client_low.h
+++ b/library/cpp/grpc/client/grpc_client_low.h
@@ -132,6 +132,7 @@ struct TGrpcStatus {
     TString Details;
     int GRpcStatusCode;
     bool InternalError;
+    std::multimap<TString, TString> ServerTrailingMetadata;
 
     TGrpcStatus()
         : GRpcStatusCode(grpc::StatusCode::OK)
@@ -809,6 +810,11 @@ private:
         } else if (readCallback) {
             if (status.Ok()) {
                 status = TGrpcStatus(grpc::StatusCode::OUT_OF_RANGE, "Read EOF");
+                for (const auto& [name, value] : Context.GetServerTrailingMetadata()) {
+                    status.ServerTrailingMetadata.emplace(
+                        TString(name.begin(), name.end()),
+                        TString(value.begin(), value.end()));
+                }
             }
             readCallback(std::move(status));
         } else if (finishCallback) {
@@ -1205,6 +1211,11 @@ private:
         } else if (readCallback) {
             if (status.Ok()) {
                 status = TGrpcStatus(grpc::StatusCode::OUT_OF_RANGE, "Read EOF");
+                for (const auto& [name, value] : Context.GetServerTrailingMetadata()) {
+                    status.ServerTrailingMetadata.emplace(
+                        TString(name.begin(), name.end()),
+                        TString(value.begin(), value.end()));
+                }
             }
             readCallback(std::move(status));
         } else if (finishCallback) {
-- 
cgit v1.2.3