@@ -32,7 +32,6 @@ class ICredentialsProvider;
3232using TDeferredResultCb = std::function<void (google::protobuf::Any*, TPlainStatus status)>;
3333
3434std::string GetAuthInfo (TDbDriverStatePtr p);
35- void SetDatabaseHeader (TCallMeta& meta, const std::string& database);
3635std::string CreateSDKBuildInfo ();
3736
3837class TGRpcConnectionsImpl
@@ -236,43 +235,17 @@ class TGRpcConnectionsImpl
236235 }
237236
238237 TCallMeta meta;
239- meta.Timeout = requestSettings.Deadline ;
240- #ifndef YDB_GRPC_UNSECURE_AUTH
241- meta.CallCredentials = dbState->CallCredentials ;
242- #else
243- if (requestSettings.UseAuth && dbState->CredentialsProvider && dbState->CredentialsProvider ->IsValid ()) {
244- try {
245- meta.Aux .push_back ({ YDB_AUTH_TICKET_HEADER, GetAuthInfo (dbState) });
246- } catch (const std::exception& e) {
247- userResponseCb (
248- nullptr ,
249- TPlainStatus (
250- EStatus::CLIENT_UNAUTHENTICATED,
251- TStringBuilder () << " Can't get Authentication info from CredentialsProvider. " << e.what ()
252- )
253- );
254- return ;
255- }
256- }
257- #endif
258- if (!requestSettings.TraceId .empty ()) {
259- meta.Aux .push_back ({YDB_TRACE_ID_HEADER, requestSettings.TraceId });
260- }
261238
262- if (!requestSettings.RequestType .empty ()) {
263- meta.Aux .push_back ({YDB_REQUEST_TYPE_HEADER, requestSettings.RequestType });
264- }
265-
266- if (!dbState->Database .empty ()) {
267- SetDatabaseHeader (meta, dbState->Database );
239+ try {
240+ meta = MakeCallMeta (requestSettings, dbState);
241+ } catch (const TAuthenticationError& e) {
242+ userResponseCb (
243+ nullptr ,
244+ TPlainStatus (EStatus::CLIENT_UNAUTHENTICATED, e.what ())
245+ );
246+ return ;
268247 }
269248
270- static const std::string clientPid = GetClientPIDHeaderValue ();
271-
272- meta.Aux .push_back ({YDB_SDK_BUILD_INFO_HEADER, CreateSDKBuildInfo ()});
273- meta.Aux .push_back ({YDB_CLIENT_PID, clientPid});
274- meta.Aux .insert (meta.Aux .end (), requestSettings.Header .begin (), requestSettings.Header .end ());
275-
276249 dbState->StatCollector .IncGRpcInFlight ();
277250 dbState->StatCollector .IncGRpcInFlightByHost (endpoint.GetEndpoint ());
278251
@@ -463,42 +436,21 @@ class TGRpcConnectionsImpl
463436 }
464437
465438 WithServiceConnection<TService>(
466- [request, responseCb = std::move (responseCb), rpc, requestSettings, context = std::move (context), dbState](TPlainStatus status, TConnection serviceConnection, TEndpointKey endpoint) mutable {
439+ [this , request, responseCb = std::move (responseCb), rpc, requestSettings, context = std::move (context), dbState](TPlainStatus status, TConnection serviceConnection, TEndpointKey endpoint) mutable {
467440 if (!status.Ok ()) {
468441 responseCb (std::move (status), nullptr );
469442 return ;
470443 }
471444
472445 TCallMeta meta;
473- meta.Timeout = requestSettings.Deadline ;
474- #ifndef YDB_GRPC_UNSECURE_AUTH
475- meta.CallCredentials = dbState->CallCredentials ;
476- #else
477- if (requestSettings.UseAuth && dbState->CredentialsProvider && dbState->CredentialsProvider ->IsValid ()) {
478- try {
479- meta.Aux .push_back ({ YDB_AUTH_TICKET_HEADER, GetAuthInfo (dbState) });
480- } catch (const std::exception& e) {
481- responseCb (
482- TPlainStatus (
483- EStatus::CLIENT_UNAUTHENTICATED,
484- TStringBuilder () << " Can't get Authentication info from CredentialsProvider. " << e.what ()
485- ),
486- nullptr
487- );
488- return ;
489- }
490- }
491- #endif
492- if (!requestSettings.TraceId .empty ()) {
493- meta.Aux .push_back ({YDB_TRACE_ID_HEADER, requestSettings.TraceId });
494- }
495-
496- if (!requestSettings.RequestType .empty ()) {
497- meta.Aux .push_back ({YDB_REQUEST_TYPE_HEADER, requestSettings.RequestType });
498- }
499-
500- if (!dbState->Database .empty ()) {
501- SetDatabaseHeader (meta, dbState->Database );
446+ try {
447+ meta = MakeCallMeta (requestSettings, dbState);
448+ } catch (const TAuthenticationError& e) {
449+ responseCb (
450+ TPlainStatus (EStatus::CLIENT_UNAUTHENTICATED, e.what ()),
451+ nullptr
452+ );
453+ return ;
502454 }
503455
504456 dbState->StatCollector .IncGRpcInFlight ();
@@ -557,49 +509,24 @@ class TGRpcConnectionsImpl
557509 }
558510
559511 WithServiceConnection<TService>(
560- [connectedCallback = std::move (connectedCallback), rpc, requestSettings, context = std::move (context), dbState]
512+ [this , connectedCallback = std::move (connectedCallback), rpc, requestSettings, context = std::move (context), dbState]
561513 (TPlainStatus status, TConnection serviceConnection, TEndpointKey endpoint) mutable {
562514 if (!status.Ok ()) {
563515 connectedCallback (std::move (status), nullptr );
564516 return ;
565517 }
566518
567519 TCallMeta meta;
568- #ifndef YDB_GRPC_UNSECURE_AUTH
569- meta.CallCredentials = dbState->CallCredentials ;
570- #else
571- if (requestSettings.UseAuth && dbState->CredentialsProvider && dbState->CredentialsProvider ->IsValid ()) {
572- try {
573- meta.Aux .push_back ({ YDB_AUTH_TICKET_HEADER, GetAuthInfo (dbState) });
574- } catch (const std::exception& e) {
575- connectedCallback (
576- TPlainStatus (
577- EStatus::CLIENT_UNAUTHENTICATED,
578- TStringBuilder () << " Can't get Authentication info from CredentialsProvider. " << e.what ()
579- ),
580- nullptr
581- );
582- return ;
583- }
584- }
585- #endif
586- if (!requestSettings.TraceId .empty ()) {
587- meta.Aux .push_back ({YDB_TRACE_ID_HEADER, requestSettings.TraceId });
588- }
589-
590- if (!requestSettings.RequestType .empty ()) {
591- meta.Aux .push_back ({YDB_REQUEST_TYPE_HEADER, requestSettings.RequestType });
592- }
593-
594- if (!dbState->Database .empty ()) {
595- SetDatabaseHeader (meta, dbState->Database );
520+ try {
521+ meta = MakeCallMeta (requestSettings, dbState);
522+ } catch (const TAuthenticationError& e) {
523+ connectedCallback (
524+ TPlainStatus (EStatus::CLIENT_UNAUTHENTICATED, e.what ()),
525+ nullptr
526+ );
527+ return ;
596528 }
597529
598- static const std::string clientPid = GetClientPIDHeaderValue ();
599- meta.Aux .push_back ({YDB_SDK_BUILD_INFO_HEADER, CreateSDKBuildInfo ()});
600- meta.Aux .push_back ({YDB_CLIENT_PID, clientPid});
601- meta.Aux .insert (meta.Aux .end (), requestSettings.Header .begin (), requestSettings.Header .end ());
602-
603530 dbState->StatCollector .IncGRpcInFlight ();
604531 dbState->StatCollector .IncGRpcInFlightByHost (endpoint.GetEndpoint ());
605532
@@ -751,6 +678,8 @@ class TGRpcConnectionsImpl
751678 void EnqueueResponse (IObjectInQueue* action);
752679
753680private:
681+ TCallMeta MakeCallMeta (const TRpcRequestSettings& requestSettings, const TDbDriverStatePtr& dbState) const ;
682+
754683 std::mutex ExtensionsLock_;
755684 ::NMonitoring::TMetricRegistry* MetricRegistryPtr_ = nullptr ;
756685
0 commit comments