@@ -302,12 +302,12 @@ TGetDataResponse ProcessGetDataResponse(NYdbGrpc::TGrpcStatus&& status, ReadResp
302302class TSolomonAccessorClient : public ISolomonAccessorClient , public std ::enable_shared_from_this<TSolomonAccessorClient> {
303303public:
304304 TSolomonAccessorClient (
305- const TString& defaultReplica ,
305+ bool enableSolomonClientPostApi ,
306306 ui64 maxListingPageSize,
307307 ui64 maxApiInflight,
308308 NYql::NSo::NProto::TDqSolomonSource&& settings,
309309 std::shared_ptr<NYdb::ICredentialsProvider> credentialsProvider)
310- : DefaultReplica(defaultReplica )
310+ : EnableSolomonClientPostApi(enableSolomonClientPostApi )
311311 , MaxListingPageSize(maxListingPageSize)
312312 , Settings(std::move(settings))
313313 , CredentialsProvider(credentialsProvider) {
@@ -327,7 +327,7 @@ class TSolomonAccessorClient : public ISolomonAccessorClient, public std::enable
327327
328328public:
329329 NThreading::TFuture<TGetLabelsResponse> GetLabelNames (const TSelectors& selectors, TInstant from, TInstant to) const override final {
330- auto url = BuildGetLabelsUrl (selectors, from, to);
330+ auto [ url, body] = BuildGetLabelsHttpParams (selectors, from, to);
331331
332332 auto resultPromise = NThreading::NewPromise<TGetLabelsResponse>();
333333
@@ -337,7 +337,8 @@ class TSolomonAccessorClient : public ISolomonAccessorClient, public std::enable
337337
338338 DoHttpRequest (
339339 std::move (cb),
340- std::move (url)
340+ std::move (url),
341+ std::move (body)
341342 );
342343
343344 return resultPromise.GetFuture ();
@@ -546,7 +547,7 @@ class TSolomonAccessorClient : public ISolomonAccessorClient, public std::enable
546547 }
547548 }
548549
549- TString BuildGetLabelsUrl (const TSelectors& selectors, TInstant from, TInstant to) const {
550+ std::tuple< TString, TString> BuildGetLabelsHttpParams (const TSelectors& selectors, TInstant from, TInstant to) const {
550551 TUrlBuilder builder (GetHttpSolomonEndpoint ());
551552
552553 builder.AddPathComponent (" api" );
@@ -556,12 +557,23 @@ class TSolomonAccessorClient : public ISolomonAccessorClient, public std::enable
556557 builder.AddPathComponent (" sensors" );
557558 builder.AddPathComponent (" names" );
558559
559- builder.AddUrlParam (" projectId" , GetProjectId ());
560- builder.AddUrlParam (" selectors" , BuildSelectorsProgram (selectors));
561- builder.AddUrlParam (" from" , from.ToString ());
562- builder.AddUrlParam (" to" , to.ToString ());
560+ NJsonWriter::TBuf w;
561+
562+ if (EnableSolomonClientPostApi) {
563+ w.BeginObject ()
564+ .UnsafeWriteKey (" projectId" ).WriteString (GetProjectId ())
565+ .UnsafeWriteKey (" selectors" ).WriteString (BuildSelectorsProgram (selectors))
566+ .UnsafeWriteKey (" from" ).WriteString (from.ToString ())
567+ .UnsafeWriteKey (" to" ).WriteString (to.ToString ())
568+ .EndObject ();
569+ } else {
570+ builder.AddUrlParam (" projectId" , GetProjectId ());
571+ builder.AddUrlParam (" selectors" , BuildSelectorsProgram (selectors));
572+ builder.AddUrlParam (" from" , from.ToString ());
573+ builder.AddUrlParam (" to" , to.ToString ());
574+ }
563575
564- return builder.Build ();
576+ return { builder.Build (), w. Str () } ;
565577 }
566578
567579 std::tuple<TString, TString> BuildListMetricsHttpParams (const TSelectors& selectors, TInstant from, TInstant to) const {
@@ -573,13 +585,25 @@ class TSolomonAccessorClient : public ISolomonAccessorClient, public std::enable
573585 builder.AddPathComponent (Settings.GetProject ());
574586 builder.AddPathComponent (" sensors" );
575587
576- builder.AddUrlParam (" projectId" , GetProjectId ());
577- builder.AddUrlParam (" selectors" , BuildSelectorsProgram (selectors));
578- builder.AddUrlParam (" from" , from.ToString ());
579- builder.AddUrlParam (" to" , to.ToString ());
580- builder.AddUrlParam (" pageSize" , ToString (MaxListingPageSize));
588+ NJsonWriter::TBuf w;
581589
582- return { builder.Build (), " " };
590+ if (EnableSolomonClientPostApi) {
591+ w.BeginObject ()
592+ .UnsafeWriteKey (" projectId" ).WriteString (GetProjectId ())
593+ .UnsafeWriteKey (" selectors" ).WriteString (BuildSelectorsProgram (selectors))
594+ .UnsafeWriteKey (" from" ).WriteString (from.ToString ())
595+ .UnsafeWriteKey (" to" ).WriteString (to.ToString ())
596+ .UnsafeWriteKey (" pageSize" ).WriteLongLong (MaxListingPageSize)
597+ .EndObject ();
598+ } else {
599+ builder.AddUrlParam (" projectId" , GetProjectId ());
600+ builder.AddUrlParam (" selectors" , BuildSelectorsProgram (selectors));
601+ builder.AddUrlParam (" from" , from.ToString ());
602+ builder.AddUrlParam (" to" , to.ToString ());
603+ builder.AddUrlParam (" pageSize" , ToString (MaxListingPageSize));
604+ }
605+
606+ return { builder.Build (), w.Str () };
583607 }
584608
585609 std::tuple<TString, TString> BuildListMetricsLabelsHttpParams (const TSelectors& selectors, TInstant from, TInstant to) const {
@@ -592,13 +616,25 @@ class TSolomonAccessorClient : public ISolomonAccessorClient, public std::enable
592616 builder.AddPathComponent (" sensors" );
593617 builder.AddPathComponent (" labels" );
594618
595- builder.AddUrlParam (" projectId" , GetProjectId ());
596- builder.AddUrlParam (" selectors" , BuildSelectorsProgram (selectors));
597- builder.AddUrlParam (" from" , from.ToString ());
598- builder.AddUrlParam (" to" , to.ToString ());
599- builder.AddUrlParam (" limit" , " 100000" );
619+ NJsonWriter::TBuf w;
600620
601- return { builder.Build (), " " };
621+ if (EnableSolomonClientPostApi) {
622+ w.BeginObject ()
623+ .UnsafeWriteKey (" projectId" ).WriteString (GetProjectId ())
624+ .UnsafeWriteKey (" selectors" ).WriteString (BuildSelectorsProgram (selectors))
625+ .UnsafeWriteKey (" from" ).WriteString (from.ToString ())
626+ .UnsafeWriteKey (" to" ).WriteString (to.ToString ())
627+ .UnsafeWriteKey (" limit" ).WriteLongLong (100000 )
628+ .EndObject ();
629+ } else {
630+ builder.AddUrlParam (" projectId" , GetProjectId ());
631+ builder.AddUrlParam (" selectors" , BuildSelectorsProgram (selectors));
632+ builder.AddUrlParam (" from" , from.ToString ());
633+ builder.AddUrlParam (" to" , to.ToString ());
634+ builder.AddUrlParam (" limit" , " 100000" );
635+ }
636+
637+ return { builder.Build (), w.Str () };
602638 }
603639
604640 std::tuple<TString, TString> BuildGetPointsCountHttpParams (const TString& program, TInstant from, TInstant to) const {
@@ -692,7 +728,7 @@ class TSolomonAccessorClient : public ISolomonAccessorClient, public std::enable
692728 }
693729
694730private:
695- const TString DefaultReplica ;
731+ const bool EnableSolomonClientPostApi ;
696732 const ui64 MaxListingPageSize;
697733 const ui64 ListSizeLimit = 100 * 1024 * 1024 * 8 ;
698734 const NYql::NSo::NProto::TDqSolomonSource Settings;
@@ -713,9 +749,9 @@ ISolomonAccessorClient::Make(
713749 std::shared_ptr<NYdb::ICredentialsProvider> credentialsProvider) {
714750 const auto & settings = source.settings ();
715751
716- TString defaultReplica ;
717- if (auto it = settings.find (" solomonClientDefaultReplica " ); it != settings.end ()) {
718- defaultReplica = it->second ;
752+ bool enableSolomonClientPostApi = false ;
753+ if (auto it = settings.find (" enableSolomonClientPostApi " ); it != settings.end ()) {
754+ enableSolomonClientPostApi = FromString< bool >( it->second ) ;
719755 }
720756
721757 ui64 maxListingPageSize = 20000 ;
@@ -728,7 +764,7 @@ ISolomonAccessorClient::Make(
728764 maxApiInflight = FromString<ui64>(it->second );
729765 }
730766
731- return std::make_shared<TSolomonAccessorClient>(defaultReplica , maxListingPageSize, maxApiInflight, std::move (source), credentialsProvider);
767+ return std::make_shared<TSolomonAccessorClient>(enableSolomonClientPostApi , maxListingPageSize, maxApiInflight, std::move (source), credentialsProvider);
732768}
733769
734770} // namespace NYql::NSo
0 commit comments