From 3cef499bbf779c96bda5c552eb1e4243e5c017d3 Mon Sep 17 00:00:00 2001 From: Alek5andr-Kotov Date: Tue, 11 Mar 2025 13:12:47 +0000 Subject: [PATCH 1/7] The 'use-heap-after-free` error in the Topic SDK code (#15088) --- src/client/topic/impl/topic_impl.h | 4 +-- src/client/topic/impl/transaction.h | 20 +++++++++--- src/client/topic/impl/write_session_impl.cpp | 33 ++++++++++++++------ src/client/topic/impl/write_session_impl.h | 20 ++++++------ 4 files changed, 51 insertions(+), 26 deletions(-) diff --git a/src/client/topic/impl/topic_impl.h b/src/client/topic/impl/topic_impl.h index c5dfe60741..06684fb70d 100644 --- a/src/client/topic/impl/topic_impl.h +++ b/src/client/topic/impl/topic_impl.h @@ -296,8 +296,8 @@ class TTopicClient::TImpl : public TClientImplCommon { { auto request = MakeOperationRequest(settings); - request.mutable_tx()->set_id(TStringType{GetTxId(tx)}); - request.mutable_tx()->set_session(TStringType{GetSessionId(tx)}); + request.mutable_tx()->set_id(tx.TxId); + request.mutable_tx()->set_session(tx.SessionId); for (auto& t : topics) { auto* topic = request.mutable_topics()->Add(); diff --git a/src/client/topic/impl/transaction.h b/src/client/topic/impl/transaction.h index 721ecf6193..c685e50f92 100644 --- a/src/client/topic/impl/transaction.h +++ b/src/client/topic/impl/transaction.h @@ -10,18 +10,21 @@ class TTransaction; namespace NYdb::inline V3::NTopic { -using TTransactionId = std::pair; +struct TTransactionId { + std::string SessionId; + std::string TxId; +}; inline -const std::string& GetSessionId(const TTransactionId& x) +bool operator==(const TTransactionId& lhs, const TTransactionId& rhs) { - return x.first; + return (lhs.SessionId == rhs.SessionId) && (lhs.TxId == rhs.TxId); } inline -const std::string& GetTxId(const TTransactionId& x) +bool operator!=(const TTransactionId& lhs, const TTransactionId& rhs) { - return x.second; + return !(lhs == rhs); } TTransactionId MakeTransactionId(const NTable::TTransaction& tx); @@ -30,3 +33,10 @@ TStatus MakeSessionExpiredError(); TStatus MakeCommitTransactionSuccess(); } + +template <> +struct THash { + size_t operator()(const NYdb::NTopic::TTransactionId& v) const noexcept { + return CombineHashes(THash()(v.SessionId), THash()(v.TxId)); + } +}; diff --git a/src/client/topic/impl/write_session_impl.cpp b/src/client/topic/impl/write_session_impl.cpp index 0fc63e9c62..ddfb6587ca 100644 --- a/src/client/topic/impl/write_session_impl.cpp +++ b/src/client/topic/impl/write_session_impl.cpp @@ -12,6 +12,12 @@ #include #include +template <> +void Out(IOutputStream& s, const NYdb::NTopic::TTransactionId& v) +{ + s << "{" << v.SessionId << ", " << v.TxId << "}"; +} + namespace NYdb::inline V3::NTopic { const TDuration UPDATE_TOKEN_PERIOD = TDuration::Hours(1); @@ -35,13 +41,22 @@ TTxIdOpt GetTransactionId(const Ydb::Topic::StreamWriteMessage_WriteRequest& req return TTxId(tx.session(), tx.id()); } -TTxIdOpt GetTransactionId(const NTable::TTransaction* tx) +TTxIdOpt GetTransactionId(const std::optional& tx) +{ + if (!tx) { + return std::nullopt; + } + + return TTxId(tx->SessionId, tx->TxId); +} + +std::optional MakeTransactionId(const NTable::TTransaction* tx) { if (!tx) { return std::nullopt; } - return TTxId(tx->GetSession().GetId(), tx->GetId()); + return TTransactionId{tx->GetSession().GetId(), tx->GetId()}; } } @@ -584,7 +599,7 @@ void TWriteSessionImpl::TrySignalAllAcksReceived(ui64 seqNo) ++txInfo->AckCount; LOG_LAZY(DbDriverState->Log, TLOG_DEBUG, - LogPrefixImpl() << "OnAck: seqNo=" << seqNo << ", txId=" << GetTxId(txId) << ", WriteCount=" << txInfo->WriteCount << ", AckCount=" << txInfo->AckCount); + LogPrefixImpl() << "OnAck: seqNo=" << seqNo << ", txId=" << txId << ", WriteCount=" << txInfo->WriteCount << ", AckCount=" << txInfo->AckCount); if (txInfo->CommitCalled && (txInfo->WriteCount == txInfo->AckCount)) { txInfo->AllAcksReceived.SetValue(MakeCommitTransactionSuccess()); @@ -631,7 +646,7 @@ void TWriteSessionImpl::WriteInternal(TContinuationToken&&, TWriteMessage&& mess ++txInfo->WriteCount; LOG_LAZY(DbDriverState->Log, TLOG_DEBUG, - LogPrefixImpl() << "OnWrite: seqNo=" << seqNo << ", txId=" << GetTxId(txId) << ", WriteCount=" << txInfo->WriteCount << ", AckCount=" << txInfo->AckCount); + LogPrefixImpl() << "OnWrite: seqNo=" << seqNo << ", txId=" << txId << ", WriteCount=" << txInfo->WriteCount << ", AckCount=" << txInfo->AckCount); } WrittenInTx[seqNo] = txId; } @@ -639,7 +654,7 @@ void TWriteSessionImpl::WriteInternal(TContinuationToken&&, TWriteMessage&& mess CurrentBatch.Add( seqNo, createdAtValue, message.Data, message.Codec, message.OriginalSize, message.MessageMeta_, - message.GetTxPtr() + MakeTransactionId(message.GetTxPtr()) ); FlushWriteIfRequiredImpl(); @@ -1412,10 +1427,10 @@ size_t TWriteSessionImpl::WriteBatchImpl() { if (!currMessage.MessageMeta.empty()) { OriginalMessagesToSend.emplace(id, createTs, datum.size(), std::move(currMessage.MessageMeta), - currMessage.Tx); + std::move(currMessage.Tx)); } else { OriginalMessagesToSend.emplace(id, createTs, datum.size(), - currMessage.Tx); + std::move(currMessage.Tx)); } } block.Data = std::move(CurrentBatch.Data); @@ -1523,8 +1538,8 @@ void TWriteSessionImpl::SendImpl() { auto* msgData = writeRequest->add_messages(); if (message.Tx) { - writeRequest->mutable_tx()->set_id(TStringType{message.Tx->GetId()}); - writeRequest->mutable_tx()->set_session(TStringType{message.Tx->GetSession().GetId()}); + writeRequest->mutable_tx()->set_id(message.Tx->TxId); + writeRequest->mutable_tx()->set_session(message.Tx->SessionId); } msgData->set_seq_no(GetSeqNoImpl(message.Id)); diff --git a/src/client/topic/impl/write_session_impl.h b/src/client/topic/impl/write_session_impl.h index 5a3a536d71..6fc44d20ec 100644 --- a/src/client/topic/impl/write_session_impl.h +++ b/src/client/topic/impl/write_session_impl.h @@ -164,18 +164,18 @@ class TWriteSessionImpl : public TContinuationTokenIssuer, std::optional Codec; ui32 OriginalSize; // only for coded messages std::vector> MessageMeta; - const NTable::TTransaction* Tx; + std::optional Tx; TMessage(uint64_t id, const TInstant& createdAt, std::string_view data, std::optional codec = {}, ui32 originalSize = 0, const std::vector>& messageMeta = {}, - const NTable::TTransaction* tx = nullptr) + std::optional&& tx = {}) : Id(id) , CreatedAt(createdAt) , DataRef(data) , Codec(codec) , OriginalSize(originalSize) , MessageMeta(messageMeta) - , Tx(tx) + , Tx(std::move(tx)) {} }; @@ -189,11 +189,11 @@ class TWriteSessionImpl : public TContinuationTokenIssuer, void Add(uint64_t id, const TInstant& createdAt, std::string_view data, std::optional codec, ui32 originalSize, const std::vector>& messageMeta, - const NTable::TTransaction* tx) { + std::optional&& tx) { if (StartedAt == TInstant::Zero()) StartedAt = TInstant::Now(); CurrentSize += codec ? originalSize : data.size(); - Messages.emplace_back(id, createdAt, data, codec, originalSize, messageMeta, tx); + Messages.emplace_back(id, createdAt, data, codec, originalSize, messageMeta, std::move(tx)); Acquired = false; } @@ -263,24 +263,24 @@ class TWriteSessionImpl : public TContinuationTokenIssuer, TInstant CreatedAt; size_t Size; std::vector> MessageMeta; - const NTable::TTransaction* Tx; + std::optional Tx; TOriginalMessage(const uint64_t id, const TInstant createdAt, const size_t size, - const NTable::TTransaction* tx) + std::optional&& tx) : Id(id) , CreatedAt(createdAt) , Size(size) - , Tx(tx) + , Tx(std::move(tx)) {} TOriginalMessage(const uint64_t id, const TInstant createdAt, const size_t size, std::vector>&& messageMeta, - const NTable::TTransaction* tx) + std::optional&& tx) : Id(id) , CreatedAt(createdAt) , Size(size) , MessageMeta(std::move(messageMeta)) - , Tx(tx) + , Tx(std::move(tx)) {} }; From 7ffbb743b1920d21fcc85ec3b248b2a427c19bdd Mon Sep 17 00:00:00 2001 From: Bulat Date: Tue, 11 Mar 2025 13:13:48 +0000 Subject: [PATCH 2/7] Added Ru return in GetConsumedRu method with streaming calls in C++ SDK (#15095) --- .../grpc_connections/grpc_connections.h | 4 ---- .../impl/ydb_internal/plain_status/status.cpp | 18 ++++++++++++++++++ .../impl/ydb_internal/plain_status/status.h | 11 +++++++---- src/client/table/impl/readers.cpp | 1 - src/client/types/status/status.cpp | 2 +- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/client/impl/ydb_internal/grpc_connections/grpc_connections.h b/src/client/impl/ydb_internal/grpc_connections/grpc_connections.h index b927d0c511..6d3012900b 100644 --- a/src/client/impl/ydb_internal/grpc_connections/grpc_connections.h +++ b/src/client/impl/ydb_internal/grpc_connections/grpc_connections.h @@ -459,7 +459,6 @@ class TGRpcConnectionsImpl } }; processor->AddFinishedCallback(std::move(finishedCallback)); - // TODO: Add headers for streaming calls. TPlainStatus status(std::move(grpcStatus), endpoint.GetEndpoint(), {}); responseCb(std::move(status), std::move(processor)); } else { @@ -468,7 +467,6 @@ class TGRpcConnectionsImpl if (grpcStatus.GRpcStatusCode != grpc::StatusCode::CANCELLED) { dbState->EndpointPool.BanEndpoint(endpoint.GetEndpoint()); } - // TODO: Add headers for streaming calls. TPlainStatus status(std::move(grpcStatus), endpoint.GetEndpoint(), {}); responseCb(std::move(status), nullptr); } @@ -560,7 +558,6 @@ class TGRpcConnectionsImpl } }; processor->AddFinishedCallback(std::move(finishedCallback)); - // TODO: Add headers for streaming calls. TPlainStatus status(std::move(grpcStatus), endpoint.GetEndpoint(), {}); connectedCallback(std::move(status), std::move(processor)); } else { @@ -569,7 +566,6 @@ class TGRpcConnectionsImpl if (grpcStatus.GRpcStatusCode != grpc::StatusCode::CANCELLED) { dbState->EndpointPool.BanEndpoint(endpoint.GetEndpoint()); } - // TODO: Add headers for streaming calls. TPlainStatus status(std::move(grpcStatus), endpoint.GetEndpoint(), {}); connectedCallback(std::move(status), nullptr); } diff --git a/src/client/impl/ydb_internal/plain_status/status.cpp b/src/client/impl/ydb_internal/plain_status/status.cpp index bb29e6583e..a0dcfb5fc4 100644 --- a/src/client/impl/ydb_internal/plain_status/status.cpp +++ b/src/client/impl/ydb_internal/plain_status/status.cpp @@ -1,6 +1,8 @@ #define INCLUDE_YDB_INTERNAL_H #include "status.h" +#include + #include namespace NYdb::inline V3 { @@ -62,10 +64,26 @@ TPlainStatus::TPlainStatus( std::string(value.begin(), value.end()) ); } + + InitCostInfo(); } TPlainStatus TPlainStatus::Internal(const std::string& message) { return { EStatus::CLIENT_INTERNAL_ERROR, "Internal client error: " + message }; } +void TPlainStatus::InitCostInfo() { + if (auto metaIt = Metadata.find(YDB_CONSUMED_UNITS_HEADER); metaIt != Metadata.end()) { + try { + CostInfo.set_consumed_units(std::stod(metaIt->second)); + } catch (std::exception& e) { + if (Ok()) { + Status = EStatus::CLIENT_INTERNAL_ERROR; + } + + Issues.AddIssue(NIssue::TIssue{"Failed to parse CostInfo from Metadata: " + std::string{e.what()}}); + } + } +} + } // namespace NYdb diff --git a/src/client/impl/ydb_internal/plain_status/status.h b/src/client/impl/ydb_internal/plain_status/status.h index b8a2ca71e1..79222b714b 100644 --- a/src/client/impl/ydb_internal/plain_status/status.h +++ b/src/client/impl/ydb_internal/plain_status/status.h @@ -18,7 +18,7 @@ struct TPlainStatus { NYdb::NIssue::TIssues Issues; std::string Endpoint; std::multimap Metadata; - Ydb::CostInfo ConstInfo; + Ydb::CostInfo CostInfo; TPlainStatus() : Status(EStatus::SUCCESS) @@ -35,7 +35,9 @@ struct TPlainStatus { , Issues(std::move(issues)) , Endpoint(endpoint) , Metadata(std::move(metadata)) - { } + { + InitCostInfo(); + } TPlainStatus(EStatus status, const std::string& message) : Status(status) @@ -51,7 +53,7 @@ struct TPlainStatus { template void SetCostInfo(T&& costInfo) { - ConstInfo = std::forward(costInfo); + CostInfo = std::forward(costInfo); } bool Ok() const { @@ -73,7 +75,8 @@ struct TPlainStatus { return ret; } - +private: + void InitCostInfo(); }; } // namespace NYdb diff --git a/src/client/table/impl/readers.cpp b/src/client/table/impl/readers.cpp index acb5f6dd58..1d15c4d9aa 100644 --- a/src/client/table/impl/readers.cpp +++ b/src/client/table/impl/readers.cpp @@ -78,7 +78,6 @@ TAsyncScanQueryPart TScanQueryPartIterator::TReaderImpl::ReadNext(std::shared_pt NYdb::NIssue::TIssues issues; NYdb::NIssue::IssuesFromMessage(self->Response_.issues(), issues); EStatus clientStatus = static_cast(self->Response_.status()); - // TODO: Add headers for streaming calls. TPlainStatus plainStatus{clientStatus, std::move(issues), self->Endpoint_, {}}; TStatus status{std::move(plainStatus)}; std::optional queryStats; diff --git a/src/client/types/status/status.cpp b/src/client/types/status/status.cpp index 1764499e40..dd5238a479 100644 --- a/src/client/types/status/status.cpp +++ b/src/client/types/status/status.cpp @@ -71,7 +71,7 @@ const std::multimap& TStatus::GetResponseMetadata() co } float TStatus::GetConsumedRu() const { - return Impl_->Status.ConstInfo.consumed_units(); + return Impl_->Status.CostInfo.consumed_units(); } void TStatus::Out(IOutputStream& out) const { From d320186bbdc8122a0671b9db0441ffe1a99d5a21 Mon Sep 17 00:00:00 2001 From: Alek5andr-Kotov Date: Tue, 11 Mar 2025 13:16:05 +0000 Subject: [PATCH 3/7] The `TxUsage::Write_Random_Sized_Messages_In_Wide_Transactions` test is running for a long time (#15178) --- src/client/topic/ut/topic_to_table_ut.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/topic/ut/topic_to_table_ut.cpp b/src/client/topic/ut/topic_to_table_ut.cpp index e0ae3a9a9a..50e534204c 100644 --- a/src/client/topic/ut/topic_to_table_ut.cpp +++ b/src/client/topic/ut/topic_to_table_ut.cpp @@ -3026,7 +3026,7 @@ Y_UNIT_TEST_F(Write_Random_Sized_Messages_In_Wide_Transactions, TFixture) // will make sure that when committing transactions, the division into blocks is taken into account. const size_t PARTITIONS_COUNT = 20; - const size_t TXS_COUNT = 100; + const size_t TXS_COUNT = 10; CreateTopic("topic_A", TEST_CONSUMER, PARTITIONS_COUNT); From dc5ec5066196db6f1183749bd46d2201854688f4 Mon Sep 17 00:00:00 2001 From: Vasily Gerasimov Date: Tue, 11 Mar 2025 13:16:21 +0000 Subject: [PATCH 4/7] Client certificates options in ydb cli (#8406) --- include/ydb-cpp-sdk/client/driver/driver.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ydb-cpp-sdk/client/driver/driver.h b/include/ydb-cpp-sdk/client/driver/driver.h index 9aad0ac0a2..c934c422cb 100644 --- a/include/ydb-cpp-sdk/client/driver/driver.h +++ b/include/ydb-cpp-sdk/client/driver/driver.h @@ -47,7 +47,7 @@ class TDriverConfig { //! default: 0 TDriverConfig& SetMaxClientQueueSize(size_t sz); //! Enable Ssl. - //! caCerts - The buffer containing the PEM encoding of the server root certificates. + //! caCerts - The buffer containing the PEM encoded root certificates for SSL/TLS connections. //! If this parameter is empty, the default roots will be used. TDriverConfig& UseSecureConnection(const std::string& caCerts = std::string()); TDriverConfig& UseClientCertificate(const std::string& clientCert, const std::string& clientPrivateKey); From 83bff86614a65d4acdd26ad9339578c3f675f6cb Mon Sep 17 00:00:00 2001 From: Bulat Date: Tue, 11 Mar 2025 13:17:10 +0000 Subject: [PATCH 5/7] [C++ SDK] Added metrics for QueryClient (#15213) --- .../client/extensions/solomon_stats/README.md | 0 src/client/impl/ydb_stats/stats.h | 93 +++++++++++-------- src/client/query/client.cpp | 36 ++++++- src/client/query/impl/exec_query.cpp | 2 +- src/client/table/impl/table_client.cpp | 5 +- src/client/table/impl/table_client.h | 1 - 6 files changed, 89 insertions(+), 48 deletions(-) rename {src => include/ydb-cpp-sdk}/client/extensions/solomon_stats/README.md (100%) diff --git a/src/client/extensions/solomon_stats/README.md b/include/ydb-cpp-sdk/client/extensions/solomon_stats/README.md similarity index 100% rename from src/client/extensions/solomon_stats/README.md rename to include/ydb-cpp-sdk/client/extensions/solomon_stats/README.md diff --git a/src/client/impl/ydb_stats/stats.h b/src/client/impl/ydb_stats/stats.h index 9226872c9a..d545764c88 100644 --- a/src/client/impl/ydb_stats/stats.h +++ b/src/client/impl/ydb_stats/stats.h @@ -160,7 +160,6 @@ struct TStatCollector { using TMetricRegistry = ::NMonitoring::TMetricRegistry; public: - struct TEndpointElectorStatCollector { TEndpointElectorStatCollector(::NMonitoring::TIntGauge* endpointCount = nullptr @@ -197,15 +196,19 @@ struct TStatCollector { TClientRetryOperationStatCollector() : MetricRegistry_(), Database_() {} - TClientRetryOperationStatCollector(::NMonitoring::TMetricRegistry* registry, const std::string& database) - : MetricRegistry_(registry), Database_(database) + TClientRetryOperationStatCollector(::NMonitoring::TMetricRegistry* registry, + const std::string& database, + const std::string& clientType) + : MetricRegistry_(registry) + , Database_(database) + , ClientType_(clientType) { } void IncSyncRetryOperation(const EStatus& status) { if (auto registry = MetricRegistry_.Get()) { std::string statusName = TStringBuilder() << status; std::string sensor = TStringBuilder() << "RetryOperation/" << UnderscoreToUpperCamel(statusName); - registry->Rate({ {"database", Database_}, {"sensor", sensor} })->Inc(); + registry->Rate({ {"database", Database_}, {"ydb_client", ClientType_}, {"sensor", sensor} })->Inc(); } } @@ -213,13 +216,14 @@ struct TStatCollector { if (auto registry = MetricRegistry_.Get()) { std::string statusName = TStringBuilder() << status; std::string sensor = TStringBuilder() << "RetryOperation/" << UnderscoreToUpperCamel(statusName); - registry->Rate({ {"database", Database_}, {"sensor", sensor} })->Inc(); + registry->Rate({ {"database", Database_}, {"ydb_client", ClientType_}, {"sensor", sensor} })->Inc(); } } private: TAtomicPointer<::NMonitoring::TMetricRegistry> MetricRegistry_; std::string Database_; + std::string ClientType_; }; struct TClientStatCollector { @@ -264,22 +268,11 @@ struct TStatCollector { RequestFailDueQueueOverflow_.Set(sensorsRegistry->Rate({ DatabaseLabel_, {"sensor", "Request/FailedDiscoveryQueueOverflow"} })); RequestFailDueNoEndpoint_.Set(sensorsRegistry->Rate({ DatabaseLabel_, {"sensor", "Request/FailedNoEndpoint"} })); RequestFailDueTransportError_.Set(sensorsRegistry->Rate({ DatabaseLabel_, {"sensor", "Request/FailedTransportError"} })); - CacheMiss_.Set(sensorsRegistry->Rate({ DatabaseLabel_, {"sensor", "Request/ClientQueryCacheMiss"} })); - ActiveSessions_.Set(sensorsRegistry->IntGauge({ DatabaseLabel_, {"sensor", "Sessions/InUse"} })); - InPoolSessions_.Set(sensorsRegistry->IntGauge({ DatabaseLabel_, {"sensor", "Sessions/InPool"} })); - Waiters_.Set(sensorsRegistry->IntGauge({ DatabaseLabel_, {"sensor", "Sessions/WaitForReturn"} })); SessionCV_.Set(sensorsRegistry->IntGauge({ DatabaseLabel_, {"sensor", "SessionBalancer/Variation"} })); - SessionRemovedDueBalancing_.Set(sensorsRegistry->Rate({ DatabaseLabel_, {"sensor", "SessionBalancer/SessionsRemoved"} })); - RequestMigrated_.Set(sensorsRegistry->Rate({ DatabaseLabel_, {"sensor", "SessionBalancer/RequestsMigrated"} })); - FakeSessions_.Set(sensorsRegistry->Rate({ DatabaseLabel_, {"sensor", "Sessions/SessionsLimitExceeded"} })); GRpcInFlight_.Set(sensorsRegistry->IntGauge({ DatabaseLabel_, {"sensor", "Grpc/InFlight"} })); RequestLatency_.Set(sensorsRegistry->HistogramRate({ DatabaseLabel_, {"sensor", "Request/Latency"} }, ::NMonitoring::ExponentialHistogram(20, 2, 1))); - QuerySize_.Set(sensorsRegistry->HistogramRate({ DatabaseLabel_, {"sensor", "Request/QuerySize"} }, - ::NMonitoring::ExponentialHistogram(20, 2, 32))); - ParamsSize_.Set(sensorsRegistry->HistogramRate({ DatabaseLabel_, {"sensor", "Request/ParamsSize"} }, - ::NMonitoring::ExponentialHistogram(10, 2, 32))); ResultSize_.Set(sensorsRegistry->HistogramRate({ DatabaseLabel_, {"sensor", "Request/ResultSize"} }, ::NMonitoring::ExponentialHistogram(20, 2, 32))); } @@ -336,31 +329,57 @@ struct TStatCollector { TEndpointElectorStatCollector GetEndpointElectorStatCollector() { if (auto registry = MetricRegistryPtr_.Get()) { - auto endpointCoint = registry->IntGauge({ {"database", Database_}, {"sensor", "Endpoints/Total"} }); - auto pessimizationRatio = registry->IntGauge({ {"database", Database_}, {"sensor", "Endpoints/BadRatio"} }); - auto activeEndpoints = registry->IntGauge({ {"database", Database_}, {"sensor", "Endpoints/Good"} }); + auto endpointCoint = registry->IntGauge({ DatabaseLabel_, {"sensor", "Endpoints/Total"} }); + auto pessimizationRatio = registry->IntGauge({ DatabaseLabel_, {"sensor", "Endpoints/BadRatio"} }); + auto activeEndpoints = registry->IntGauge({ DatabaseLabel_, {"sensor", "Endpoints/Good"} }); return TEndpointElectorStatCollector(endpointCoint, pessimizationRatio, activeEndpoints); - } else { - return TEndpointElectorStatCollector(); } + + return TEndpointElectorStatCollector(); } - TSessionPoolStatCollector GetSessionPoolStatCollector() { - if (!IsCollecting()) { - return TSessionPoolStatCollector(); + TSessionPoolStatCollector GetSessionPoolStatCollector(const std::string& clientType) { + if (auto registry = MetricRegistryPtr_.Get()) { + auto activeSessions = registry->IntGauge({ DatabaseLabel_, {"ydb_client", clientType}, + {"sensor", "Sessions/InUse"} }); + auto inPoolSessions = registry->IntGauge({ DatabaseLabel_, {"ydb_client", clientType}, + {"sensor", "Sessions/InPool"} }); + auto fakeSessions = registry->Rate({ DatabaseLabel_, {"ydb_client", clientType}, + {"sensor", "Sessions/SessionsLimitExceeded"} }); + auto waiters = registry->IntGauge({ DatabaseLabel_, {"ydb_client", clientType}, + {"sensor", "Sessions/WaitForReturn"} }); + + return TSessionPoolStatCollector(activeSessions, inPoolSessions, fakeSessions, waiters); } - return TSessionPoolStatCollector(ActiveSessions_.Get(), InPoolSessions_.Get(), FakeSessions_.Get(), Waiters_.Get()); + return TSessionPoolStatCollector(); } - TClientStatCollector GetClientStatCollector() { - if (IsCollecting()) { - return TClientStatCollector(CacheMiss_.Get(), QuerySize_.Get(), ParamsSize_.Get(), - SessionRemovedDueBalancing_.Get(), RequestMigrated_.Get(), - TClientRetryOperationStatCollector(MetricRegistryPtr_.Get(), Database_)); - } else { - return TClientStatCollector(); + TClientStatCollector GetClientStatCollector(const std::string& clientType) { + if (auto registry = MetricRegistryPtr_.Get()) { + ::NMonitoring::TRate* cacheMiss = nullptr; + ::NMonitoring::TRate* sessionRemovedDueBalancing = nullptr; + ::NMonitoring::TRate* requestMigrated = nullptr; + + if (clientType == "Table") { + cacheMiss = registry->Rate({ DatabaseLabel_, {"ydb_client", clientType}, + {"sensor", "Request/ClientQueryCacheMiss"} }); + sessionRemovedDueBalancing = registry->Rate({ DatabaseLabel_, {"ydb_client", clientType}, + {"sensor", "SessionBalancer/SessionsRemoved"} }); + requestMigrated = registry->Rate({ DatabaseLabel_, {"ydb_client", clientType}, + {"sensor", "SessionBalancer/RequestsMigrated"} }); + } + + auto querySize = registry->HistogramRate({ DatabaseLabel_, {"ydb_client", clientType}, + {"sensor", "Request/QuerySize"} }, ::NMonitoring::ExponentialHistogram(20, 2, 32)); + auto paramsSize = registry->HistogramRate({ DatabaseLabel_, {"ydb_client", clientType}, + {"sensor", "Request/ParamsSize"} }, ::NMonitoring::ExponentialHistogram(10, 2, 32)); + + return TClientStatCollector(cacheMiss, querySize, paramsSize, sessionRemovedDueBalancing, requestMigrated, + TClientRetryOperationStatCollector(MetricRegistryPtr_.Get(), Database_, clientType)); } + + return TClientStatCollector(); } bool IsCollecting() { @@ -374,6 +393,7 @@ struct TStatCollector { void IncGRpcInFlightByHost(const std::string& host); void DecGRpcInFlightByHost(const std::string& host); + private: const std::string Database_; const ::NMonitoring::TLabel DatabaseLabel_; @@ -384,18 +404,9 @@ struct TStatCollector { TAtomicCounter<::NMonitoring::TRate> RequestFailDueNoEndpoint_; TAtomicCounter<::NMonitoring::TRate> RequestFailDueTransportError_; TAtomicCounter<::NMonitoring::TRate> DiscoveryFailDueTransportError_; - TAtomicPointer<::NMonitoring::TIntGauge> ActiveSessions_; - TAtomicPointer<::NMonitoring::TIntGauge> InPoolSessions_; - TAtomicPointer<::NMonitoring::TIntGauge> Waiters_; TAtomicCounter<::NMonitoring::TIntGauge> SessionCV_; - TAtomicCounter<::NMonitoring::TRate> SessionRemovedDueBalancing_; - TAtomicCounter<::NMonitoring::TRate> RequestMigrated_; - TAtomicCounter<::NMonitoring::TRate> FakeSessions_; - TAtomicCounter<::NMonitoring::TRate> CacheMiss_; TAtomicCounter<::NMonitoring::TIntGauge> GRpcInFlight_; TAtomicHistogram<::NMonitoring::THistogram> RequestLatency_; - TAtomicHistogram<::NMonitoring::THistogram> QuerySize_; - TAtomicHistogram<::NMonitoring::THistogram> ParamsSize_; TAtomicHistogram<::NMonitoring::THistogram> ResultSize_; }; diff --git a/src/client/query/client.cpp b/src/client/query/client.cpp index 0fef4f75fb..9888dd6115 100644 --- a/src/client/query/client.cpp +++ b/src/client/query/client.cpp @@ -67,15 +67,25 @@ class TQueryClient::TImpl: public TClientImplCommon, public , Settings_(settings) , SessionPool_(Settings_.SessionPoolSettings_.MaxActiveSessions_) { + SetStatCollector(DbDriverState_->StatCollector.GetClientStatCollector("Query")); + SessionPool_.SetStatCollector(DbDriverState_->StatCollector.GetSessionPoolStatCollector("Query")); } ~TImpl() { // TODO: Drain sessions. } + void SetStatCollector(const NSdkStats::TStatCollector::TClientStatCollector& collector) { + QuerySizeHistogram_.Set(collector.QuerySize); + ParamsSizeHistogram_.Set(collector.ParamsSize); + RetryOperationStatCollector_ = collector.RetryOperationStatCollector; + } + TAsyncExecuteQueryIterator StreamExecuteQuery(const std::string& query, const TTxControl& txControl, const std::optional& params, const TExecuteQuerySettings& settings, const std::optional& session = {}) { + CollectQuerySize(query); + CollectParamsSize(params ? ¶ms->GetProtoMap() : nullptr); return TExecQueryImpl::StreamExecuteQuery( Connections_, DbDriverState_, query, txControl, params, settings, session); } @@ -84,6 +94,8 @@ class TQueryClient::TImpl: public TClientImplCommon, public const std::optional& params, const TExecuteQuerySettings& settings, const std::optional& session = {}) { + CollectQuerySize(query); + CollectParamsSize(params ? ¶ms->GetProtoMap() : nullptr); return TExecQueryImpl::ExecuteQuery( Connections_, DbDriverState_, query, txControl, params, settings, session); } @@ -500,14 +512,34 @@ class TQueryClient::TImpl: public TClientImplCommon, public } void CollectRetryStatAsync(EStatus status) { - Y_UNUSED(status); + RetryOperationStatCollector_.IncAsyncRetryOperation(status); } void CollectRetryStatSync(EStatus status) { - Y_UNUSED(status); + RetryOperationStatCollector_.IncSyncRetryOperation(status); + } + + void CollectQuerySize(const std::string& query) { + if (QuerySizeHistogram_.IsCollecting()) { + QuerySizeHistogram_.Record(query.size()); + } + } + + void CollectParamsSize(const ::google::protobuf::Map* params) { + if (params && ParamsSizeHistogram_.IsCollecting()) { + size_t size = 0; + for (auto& keyvalue: *params) { + size += keyvalue.second.ByteSizeLong(); + } + ParamsSizeHistogram_.Record(size); + } } private: + NSdkStats::TStatCollector::TClientRetryOperationStatCollector RetryOperationStatCollector_; + NSdkStats::TAtomicHistogram<::NMonitoring::THistogram> QuerySizeHistogram_; + NSdkStats::TAtomicHistogram<::NMonitoring::THistogram> ParamsSizeHistogram_; + TClientSettings Settings_; NSessionPool::TSessionPool SessionPool_; }; diff --git a/src/client/query/impl/exec_query.cpp b/src/client/query/impl/exec_query.cpp index bc76b358a6..a91bc7c4b0 100644 --- a/src/client/query/impl/exec_query.cpp +++ b/src/client/query/impl/exec_query.cpp @@ -247,7 +247,7 @@ TFuture> StreamExecuteQueryIm } if (settings.StatsCollectPeriod_) { - request.set_stats_period_ms((*settings.StatsCollectPeriod_).count()); + request.set_stats_period_ms(settings.StatsCollectPeriod_->count()); } if (txControl.HasTx()) { diff --git a/src/client/table/impl/table_client.cpp b/src/client/table/impl/table_client.cpp index af68960e83..723a1dacd3 100644 --- a/src/client/table/impl/table_client.cpp +++ b/src/client/table/impl/table_client.cpp @@ -26,8 +26,8 @@ TTableClient::TImpl::TImpl(std::shared_ptr&& connections, return; } - SetStatCollector(DbDriverState_->StatCollector.GetClientStatCollector()); - SessionPool_.SetStatCollector(DbDriverState_->StatCollector.GetSessionPoolStatCollector()); + SetStatCollector(DbDriverState_->StatCollector.GetClientStatCollector("Table")); + SessionPool_.SetStatCollector(DbDriverState_->StatCollector.GetSessionPoolStatCollector("Table")); } TTableClient::TImpl::~TImpl() { @@ -987,7 +987,6 @@ void TTableClient::TImpl::SetStatCollector(const NSdkStats::TStatCollector::TCli ParamsSizeHistogram.Set(collector.ParamsSize); RetryOperationStatCollector = collector.RetryOperationStatCollector; SessionRemovedDueBalancing.Set(collector.SessionRemovedDueBalancing); - RequestMigrated.Set(collector.RequestMigrated); } TAsyncBulkUpsertResult TTableClient::TImpl::BulkUpsert(const std::string& table, TValue&& rows, const TBulkUpsertSettings& settings) { diff --git a/src/client/table/impl/table_client.h b/src/client/table/impl/table_client.h index 879025e4c7..4cd1118347 100644 --- a/src/client/table/impl/table_client.h +++ b/src/client/table/impl/table_client.h @@ -315,7 +315,6 @@ class TTableClient::TImpl: public TClientImplCommon, public NSdkStats::TAtomicHistogram<::NMonitoring::THistogram> QuerySizeHistogram; NSdkStats::TAtomicHistogram<::NMonitoring::THistogram> ParamsSizeHistogram; NSdkStats::TAtomicCounter<::NMonitoring::TRate> SessionRemovedDueBalancing; - NSdkStats::TAtomicCounter<::NMonitoring::TRate> RequestMigrated; private: NSessionPool::TSessionPool SessionPool_; From 9b9754ca154a9be9dbae88011951041b55f9383b Mon Sep 17 00:00:00 2001 From: Bulat Date: Tue, 11 Mar 2025 13:26:01 +0000 Subject: [PATCH 6/7] Change C++ SDK namespace from V3 to Dev (#15478) --- include/ydb-cpp-sdk/client/draft/ydb_replication.h | 4 ++-- include/ydb-cpp-sdk/client/draft/ydb_view.h | 4 ++-- include/ydb-cpp-sdk/client/monitoring/monitoring.h | 2 +- include/ydb-cpp-sdk/client/params/params.h | 2 +- include/ydb-cpp-sdk/client/query/client.h | 2 +- include/ydb-cpp-sdk/client/query/query.h | 2 +- include/ydb-cpp-sdk/client/query/stats.h | 4 ++-- include/ydb-cpp-sdk/client/query/tx.h | 2 +- .../ydb-cpp-sdk/client/rate_limiter/rate_limiter.h | 2 +- include/ydb-cpp-sdk/client/result/result.h | 2 +- include/ydb-cpp-sdk/client/retry/retry.h | 2 +- include/ydb-cpp-sdk/client/table/table.h | 14 +++++++------- include/ydb-cpp-sdk/client/topic/client.h | 2 +- include/ydb-cpp-sdk/client/topic/codecs.h | 2 +- include/ydb-cpp-sdk/client/topic/control_plane.h | 14 +++++++------- include/ydb-cpp-sdk/client/topic/counters.h | 2 +- include/ydb-cpp-sdk/client/topic/errors.h | 2 +- include/ydb-cpp-sdk/client/topic/retry_policy.h | 2 +- include/ydb-cpp-sdk/library/issue/yql_issue.h | 8 ++++++-- include/ydb-cpp-sdk/library/jwt/jwt.h | 4 +++- .../library/operation_id/operation_id.h | 6 ++++-- .../library/string_utils/helpers/helpers.h | 6 +++++- .../ydb-cpp-sdk/library/string_utils/misc/misc.h | 4 ++++ include/ydb-cpp-sdk/type_switcher.h | 14 ++++---------- src/api/protos/ydb_cms.proto | 4 ++++ src/client/draft/ydb_dynamic_config.cpp | 2 +- .../impl/federated_read_session.cpp | 2 +- .../federated_topic/impl/federated_read_session.h | 2 +- .../impl/federated_read_session_event.cpp | 2 +- .../federated_topic/impl/federated_topic.cpp | 2 +- .../federated_topic/impl/federated_topic_impl.h | 2 +- .../impl/federated_write_session.cpp | 2 +- .../federated_topic/impl/federated_write_session.h | 2 +- .../federated_topic/impl/federation_observer.cpp | 2 +- .../federated_topic/impl/federation_observer.h | 2 +- .../persqueue_public/include/control_plane.h | 2 +- src/library/decimal/yql_decimal.cpp | 6 +++++- src/library/decimal/yql_decimal.h | 6 +++++- src/library/decimal/yql_wide_int.h | 6 +++++- src/library/grpc/client/grpc_client_low.cpp | 4 +++- src/library/grpc/client/grpc_client_low.h | 4 +++- src/library/grpc/client/grpc_common.h | 4 +++- src/library/grpc/common/constants.h | 2 ++ src/library/issue/utf8.cpp | 6 +++++- src/library/issue/utf8.h | 8 +++++++- src/library/issue/yql_issue.cpp | 8 ++++++-- src/library/issue/yql_issue_message.cpp | 6 +++++- src/library/issue/yql_issue_message.h | 6 +++++- src/library/jwt/jwt.cpp | 5 +++-- src/library/operation_id/operation_id.cpp | 6 ++++-- src/library/persqueue/obfuscate/obfuscate.cpp | 4 +++- src/library/persqueue/obfuscate/obfuscate.h | 4 +++- .../persqueue/topic_parser_public/topic_parser.cpp | 4 +++- .../persqueue/topic_parser_public/topic_parser.h | 4 +++- src/library/string_utils/helpers/helpers.cpp | 6 +++++- src/library/uuid/uuid.cpp | 3 ++- src/library/uuid/uuid.h | 3 +++ .../draft/ydb_scripting_response_headers_ut.cpp | 5 ++--- tests/unit/client/draft/ydb_view_ut.cpp | 7 +++---- 59 files changed, 162 insertions(+), 89 deletions(-) diff --git a/include/ydb-cpp-sdk/client/draft/ydb_replication.h b/include/ydb-cpp-sdk/client/draft/ydb_replication.h index 2448d3b01c..ba8a872bfb 100644 --- a/include/ydb-cpp-sdk/client/draft/ydb_replication.h +++ b/include/ydb-cpp-sdk/client/draft/ydb_replication.h @@ -163,7 +163,7 @@ class TReplicationDescription { }; class TDescribeReplicationResult: public NScheme::TDescribePathResult { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; const Ydb::Replication::DescribeReplicationResult& GetProto() const; public: @@ -188,4 +188,4 @@ class TReplicationClient { std::shared_ptr Impl_; }; -} // namespace NYdb::V3::NReplication +} // namespace NYdb::NReplication diff --git a/include/ydb-cpp-sdk/client/draft/ydb_view.h b/include/ydb-cpp-sdk/client/draft/ydb_view.h index 7426b03252..be59862f46 100644 --- a/include/ydb-cpp-sdk/client/draft/ydb_view.h +++ b/include/ydb-cpp-sdk/client/draft/ydb_view.h @@ -31,7 +31,7 @@ class TViewDescription { }; class TDescribeViewResult : public NScheme::TDescribePathResult { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; const Ydb::View::DescribeViewResult& GetProto() const; public: @@ -55,4 +55,4 @@ class TViewClient { std::shared_ptr Impl_; }; -} // namespace NYdb::V3::NView +} // namespace NYdb::NView diff --git a/include/ydb-cpp-sdk/client/monitoring/monitoring.h b/include/ydb-cpp-sdk/client/monitoring/monitoring.h index f8dfc27994..72866e8762 100644 --- a/include/ydb-cpp-sdk/client/monitoring/monitoring.h +++ b/include/ydb-cpp-sdk/client/monitoring/monitoring.h @@ -33,7 +33,7 @@ struct TSelfCheckSettings : public TOperationRequestSettings }; class TSelfCheckResult : public TStatus { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; public: TSelfCheckResult(TStatus&& status, Ydb::Monitoring::SelfCheckResult&& result); private: diff --git a/include/ydb-cpp-sdk/client/params/params.h b/include/ydb-cpp-sdk/client/params/params.h index 89a30d0ce6..3caf946544 100644 --- a/include/ydb-cpp-sdk/client/params/params.h +++ b/include/ydb-cpp-sdk/client/params/params.h @@ -43,7 +43,7 @@ class TParams { friend class NExperimental::TStreamQueryClient; friend class NQuery::TExecQueryImpl; friend class NQuery::TQueryClient; - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; public: bool Empty() const; diff --git a/include/ydb-cpp-sdk/client/query/client.h b/include/ydb-cpp-sdk/client/query/client.h index 8238633e96..eee15547c1 100644 --- a/include/ydb-cpp-sdk/client/query/client.h +++ b/include/ydb-cpp-sdk/client/query/client.h @@ -267,4 +267,4 @@ class TExecuteQueryResult : public TStatus { std::optional Transaction_; }; -} // namespace NYdb::V3::NQuery +} // namespace NYdb::NQuery diff --git a/include/ydb-cpp-sdk/client/query/query.h b/include/ydb-cpp-sdk/client/query/query.h index 6f460df125..7e2f1788fa 100644 --- a/include/ydb-cpp-sdk/client/query/query.h +++ b/include/ydb-cpp-sdk/client/query/query.h @@ -185,4 +185,4 @@ class TFetchScriptResultsResult : public TStatus { using TAsyncFetchScriptResultsResult = NThreading::TFuture; using TAsyncExecuteQueryResult = NThreading::TFuture; -} // namespace NYdb::V3::NQuery +} // namespace NYdb::NQuery diff --git a/include/ydb-cpp-sdk/client/query/stats.h b/include/ydb-cpp-sdk/client/query/stats.h index 0b7ca6cc6d..034fb0c594 100644 --- a/include/ydb-cpp-sdk/client/query/stats.h +++ b/include/ydb-cpp-sdk/client/query/stats.h @@ -17,7 +17,7 @@ namespace NYdb::inline V3 { namespace NYdb::inline V3::NQuery { class TExecStats { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; public: TExecStats() = default; @@ -42,4 +42,4 @@ class TExecStats { std::shared_ptr Impl_; }; -} // namespace NYdb::V3::NQuery +} // namespace NYdb::NQuery diff --git a/include/ydb-cpp-sdk/client/query/tx.h b/include/ydb-cpp-sdk/client/query/tx.h index f435bc8fe4..7b7690d2b3 100644 --- a/include/ydb-cpp-sdk/client/query/tx.h +++ b/include/ydb-cpp-sdk/client/query/tx.h @@ -116,4 +116,4 @@ struct TTxControl { : TxSettings_(txSettings) {} }; -} // namespace NYdb::V3::NQuery +} // namespace NYdb::NQuery diff --git a/include/ydb-cpp-sdk/client/rate_limiter/rate_limiter.h b/include/ydb-cpp-sdk/client/rate_limiter/rate_limiter.h index 05f4df0643..ada271cf8f 100644 --- a/include/ydb-cpp-sdk/client/rate_limiter/rate_limiter.h +++ b/include/ydb-cpp-sdk/client/rate_limiter/rate_limiter.h @@ -320,4 +320,4 @@ class TRateLimiterClient { std::shared_ptr Impl_; }; -} // namespace NYdb::V3::NRateLimiter +} // namespace NYdb::NRateLimiter diff --git a/include/ydb-cpp-sdk/client/result/result.h b/include/ydb-cpp-sdk/client/result/result.h index 4fe057b663..38772ef64a 100644 --- a/include/ydb-cpp-sdk/client/result/result.h +++ b/include/ydb-cpp-sdk/client/result/result.h @@ -32,7 +32,7 @@ bool operator!=(const TColumn& col1, const TColumn& col2); //! Collection of rows, represents result of query or part of the result in case of stream operations class TResultSet { friend class TResultSetParser; - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; public: TResultSet(const Ydb::ResultSet& proto); TResultSet(Ydb::ResultSet&& proto); diff --git a/include/ydb-cpp-sdk/client/retry/retry.h b/include/ydb-cpp-sdk/client/retry/retry.h index 748bd3a4bf..3c656a6a84 100644 --- a/include/ydb-cpp-sdk/client/retry/retry.h +++ b/include/ydb-cpp-sdk/client/retry/retry.h @@ -41,4 +41,4 @@ struct TRetryOperationSettings { } }; -} // namespace NYdb::V3::NRetry +} // namespace NYdb::NRetry diff --git a/include/ydb-cpp-sdk/client/table/table.h b/include/ydb-cpp-sdk/client/table/table.h index e83101f28d..e26c6ec67f 100644 --- a/include/ydb-cpp-sdk/client/table/table.h +++ b/include/ydb-cpp-sdk/client/table/table.h @@ -272,7 +272,7 @@ struct TKMeansTreeSettings { //! Represents index description class TIndexDescription { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; public: TIndexDescription( @@ -349,7 +349,7 @@ class TBuildIndexOperation : public TOperation { //! Represents changefeed description class TChangefeedDescription { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; public: class TInitialScanProgress { @@ -655,7 +655,7 @@ enum class EStoreType { //! Represents table description class TTableDescription { friend class TTableBuilder; - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; using EUnit = TValueSinceUnixEpochModeSettings::EUnit; @@ -1092,8 +1092,8 @@ using TAsyncScanQueryPartIterator = NThreading::TFuture; struct TCreateSessionSettings : public TOperationRequestSettings {}; -using TBackoffSettings = NYdb::V3::NRetry::TBackoffSettings; -using TRetryOperationSettings = NYdb::V3::NRetry::TRetryOperationSettings; +using TBackoffSettings = NYdb::NRetry::TBackoffSettings; +using TRetryOperationSettings = NYdb::NRetry::TRetryOperationSettings; struct TSessionPoolSettings { using TSelf = TSessionPoolSettings; @@ -2221,7 +2221,7 @@ class TExternalDataSourceDescription { class TImpl; std::shared_ptr Impl_; - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; const Ydb::Table::DescribeExternalDataSourceResult& GetProto() const; }; @@ -2247,7 +2247,7 @@ class TExternalTableDescription { class TImpl; std::shared_ptr Impl_; - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; const Ydb::Table::DescribeExternalTableResult& GetProto() const; }; diff --git a/include/ydb-cpp-sdk/client/topic/client.h b/include/ydb-cpp-sdk/client/topic/client.h index 1b1ea70c80..83d324f7e4 100644 --- a/include/ydb-cpp-sdk/client/topic/client.h +++ b/include/ydb-cpp-sdk/client/topic/client.h @@ -61,4 +61,4 @@ class TTopicClient { std::shared_ptr Impl_; }; -} // namespace NYdb::V3::NTopic +} // namespace NYdb::NTopic diff --git a/include/ydb-cpp-sdk/client/topic/codecs.h b/include/ydb-cpp-sdk/client/topic/codecs.h index a91c87afee..857ab0bd3f 100644 --- a/include/ydb-cpp-sdk/client/topic/codecs.h +++ b/include/ydb-cpp-sdk/client/topic/codecs.h @@ -93,4 +93,4 @@ class TCodecMap { TAdaptiveLock Lock; }; -} // namespace NYdb::V3::NTopic +} // namespace NYdb::NTopic diff --git a/include/ydb-cpp-sdk/client/topic/control_plane.h b/include/ydb-cpp-sdk/client/topic/control_plane.h index b2fa18b792..72f2394f42 100644 --- a/include/ydb-cpp-sdk/client/topic/control_plane.h +++ b/include/ydb-cpp-sdk/client/topic/control_plane.h @@ -267,7 +267,7 @@ struct TAlterPartitioningSettings { }; class TTopicDescription { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; public: TTopicDescription(Ydb::Topic::DescribeTopicResult&& desc); @@ -330,7 +330,7 @@ class TTopicDescription { }; class TConsumerDescription { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; public: TConsumerDescription(Ydb::Topic::DescribeConsumerResult&& desc); @@ -350,7 +350,7 @@ class TConsumerDescription { }; class TPartitionDescription { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; public: TPartitionDescription(Ydb::Topic::DescribePartitionResult&& desc); @@ -365,7 +365,7 @@ class TPartitionDescription { // Result for describe topic request. struct TDescribeTopicResult : public TStatus { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; TDescribeTopicResult(TStatus&& status, Ydb::Topic::DescribeTopicResult&& result); @@ -377,7 +377,7 @@ struct TDescribeTopicResult : public TStatus { // Result for describe consumer request. struct TDescribeConsumerResult : public TStatus { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; TDescribeConsumerResult(TStatus&& status, Ydb::Topic::DescribeConsumerResult&& result); @@ -389,7 +389,7 @@ struct TDescribeConsumerResult : public TStatus { // Result for describe partition request. struct TDescribePartitionResult: public TStatus { - friend class NYdb::V3::TProtoAccessor; + friend class NYdb::TProtoAccessor; TDescribePartitionResult(TStatus&& status, Ydb::Topic::DescribePartitionResult&& result); @@ -768,4 +768,4 @@ struct TDescribePartitionSettings: public TOperationRequestSettings {}; -} // namespace NYdb::V3::NTopic +} // namespace NYdb::NTopic diff --git a/include/ydb-cpp-sdk/client/topic/counters.h b/include/ydb-cpp-sdk/client/topic/counters.h index 69568c3e17..3ac13c1a45 100644 --- a/include/ydb-cpp-sdk/client/topic/counters.h +++ b/include/ydb-cpp-sdk/client/topic/counters.h @@ -169,4 +169,4 @@ inline bool HasNullCounters(TReaderCounters& counters) { #undef TOPIC_COUNTERS_HISTOGRAM_SETUP -} // namespace NYdb::V3::NTopic +} // namespace NYdb::NTopic diff --git a/include/ydb-cpp-sdk/client/topic/errors.h b/include/ydb-cpp-sdk/client/topic/errors.h index e36a820fe1..5141b9d2ca 100644 --- a/include/ydb-cpp-sdk/client/topic/errors.h +++ b/include/ydb-cpp-sdk/client/topic/errors.h @@ -10,4 +10,4 @@ namespace NYdb::inline V3::NTopic { ERetryErrorClass GetRetryErrorClass(EStatus status); ERetryErrorClass GetRetryErrorClassV2(EStatus status); -} // namespace NYdb::V3::NTopic +} // namespace NYdb::NTopic diff --git a/include/ydb-cpp-sdk/client/topic/retry_policy.h b/include/ydb-cpp-sdk/client/topic/retry_policy.h index 3460a5659e..fe63ea459c 100644 --- a/include/ydb-cpp-sdk/client/topic/retry_policy.h +++ b/include/ydb-cpp-sdk/client/topic/retry_policy.h @@ -38,4 +38,4 @@ struct IRetryPolicy: ::IRetryPolicy { std::function customRetryClassFunction = {}); }; -} // namespace NYdb::V3::NTopic +} // namespace NYdb::NTopic diff --git a/include/ydb-cpp-sdk/library/issue/yql_issue.h b/include/ydb-cpp-sdk/library/issue/yql_issue.h index 01779537a2..7ceab9be9b 100644 --- a/include/ydb-cpp-sdk/library/issue/yql_issue.h +++ b/include/ydb-cpp-sdk/library/issue/yql_issue.h @@ -14,7 +14,9 @@ #include #include -namespace NYdb::NIssue { +namespace NYdb { +inline namespace V3 { +namespace NIssue { using TIssueCode = uint32_t; constexpr TIssueCode DEFAULT_ERROR = 0; @@ -329,7 +331,9 @@ class TErrorException : public yexception { TIssue ExceptionToIssue(const std::exception& e, const TPosition& pos = TPosition()); std::optional TryParseTerminationMessage(std::string_view& message); -} // namespace NYql +} +} +} template <> void Out(IOutputStream& out, const NYdb::NIssue::TPosition& pos); diff --git a/include/ydb-cpp-sdk/library/jwt/jwt.h b/include/ydb-cpp-sdk/library/jwt/jwt.h index 4d3d90f315..986ef07343 100644 --- a/include/ydb-cpp-sdk/library/jwt/jwt.h +++ b/include/ydb-cpp-sdk/library/jwt/jwt.h @@ -3,6 +3,7 @@ #include namespace NYdb { +inline namespace V3 { struct TJwtParams { std::string PrivKey; @@ -17,4 +18,5 @@ std::string MakeSignedJwt( const TDuration& lifetime = TDuration::Hours(1) ); -} // namespace NYdb +} +} diff --git a/include/ydb-cpp-sdk/library/operation_id/operation_id.h b/include/ydb-cpp-sdk/library/operation_id/operation_id.h index ed509e1684..a8d5411cb5 100644 --- a/include/ydb-cpp-sdk/library/operation_id/operation_id.h +++ b/include/ydb-cpp-sdk/library/operation_id/operation_id.h @@ -9,6 +9,7 @@ namespace Ydb { } namespace NKikimr { +inline namespace V3 { namespace NOperationId { class TOperationId { @@ -69,5 +70,6 @@ TOperationId::EKind ParseKind(const std::string_view value); std::string FormatPreparedQueryIdCompat(const std::string& str); bool DecodePreparedQueryIdCompat(const std::string& in, std::string& out); -} // namespace NOperationId -} // namespace NKikimr +} +} +} diff --git a/include/ydb-cpp-sdk/library/string_utils/helpers/helpers.h b/include/ydb-cpp-sdk/library/string_utils/helpers/helpers.h index 09c31c959c..743c32f892 100644 --- a/include/ydb-cpp-sdk/library/string_utils/helpers/helpers.h +++ b/include/ydb-cpp-sdk/library/string_utils/helpers/helpers.h @@ -2,6 +2,8 @@ #include +namespace NYdb { +inline namespace V3 { namespace NUtils { char* ToLower(char* str) noexcept(noexcept(std::tolower(0))); @@ -80,4 +82,6 @@ std::string Join(const R&... r) { template std::basic_string FromAscii(const std::string_view& s); -} // namespace NUtils +} +} +} diff --git a/include/ydb-cpp-sdk/library/string_utils/misc/misc.h b/include/ydb-cpp-sdk/library/string_utils/misc/misc.h index 20beb71f72..85a1238577 100644 --- a/include/ydb-cpp-sdk/library/string_utils/misc/misc.h +++ b/include/ydb-cpp-sdk/library/string_utils/misc/misc.h @@ -7,6 +7,8 @@ #include +namespace NYdb { +inline namespace V3 { namespace NUtils { template @@ -58,4 +60,6 @@ void GetNext(std::string_view& s, D delim, std::optional& para } } +} +} } \ No newline at end of file diff --git a/include/ydb-cpp-sdk/type_switcher.h b/include/ydb-cpp-sdk/type_switcher.h index 107c259a39..d0efd61d7d 100644 --- a/include/ydb-cpp-sdk/type_switcher.h +++ b/include/ydb-cpp-sdk/type_switcher.h @@ -1,17 +1,11 @@ #pragma once -#ifdef YDB_SDK_USE_STD_STRING - #include + namespace NYdb { -using TStringType = std::string; -} +inline namespace Dev { -#else +using TStringType = std::string; -#include -namespace NYdb { -using TStringType = TString; } - -#endif +} diff --git a/src/api/protos/ydb_cms.proto b/src/api/protos/ydb_cms.proto index 806bb63bb5..c72751609f 100644 --- a/src/api/protos/ydb_cms.proto +++ b/src/api/protos/ydb_cms.proto @@ -63,6 +63,10 @@ message DatabaseOptions { bool disable_external_subdomain = 2; // Transaction plan resolution in milliseconds uint32 plan_resolution = 3; + // Number of coordinators (server default is used when zero) + uint32 coordinators = 4; + // Number of mediators (server default is used when zero) + uint32 mediators = 5; } // A set of quotas for schema operations diff --git a/src/client/draft/ydb_dynamic_config.cpp b/src/client/draft/ydb_dynamic_config.cpp index de1a1a8b08..723cdbe466 100644 --- a/src/client/draft/ydb_dynamic_config.cpp +++ b/src/client/draft/ydb_dynamic_config.cpp @@ -464,4 +464,4 @@ TAsyncFetchStartupConfigResult TDynamicConfigClient::FetchStartupConfig(const TC return Impl_->FetchStartupConfig(settings); } -} // namespace NYdb::V3::NDynamicConfig +} // namespace NYdb::NDynamicConfig diff --git a/src/client/federated_topic/impl/federated_read_session.cpp b/src/client/federated_topic/impl/federated_read_session.cpp index 90343c3d46..ca93e7eb7b 100644 --- a/src/client/federated_topic/impl/federated_read_session.cpp +++ b/src/client/federated_topic/impl/federated_read_session.cpp @@ -288,4 +288,4 @@ bool TFederatedReadSessionImpl::Close(TDuration timeout) { return result; } -} // namespace NYdb::V3::NFederatedTopic +} // namespace NYdb::NFederatedTopic diff --git a/src/client/federated_topic/impl/federated_read_session.h b/src/client/federated_topic/impl/federated_read_session.h index 9b7d4cf9a6..c93b9722bd 100644 --- a/src/client/federated_topic/impl/federated_read_session.h +++ b/src/client/federated_topic/impl/federated_read_session.h @@ -246,4 +246,4 @@ class TFederatedReadSession : public IFederatedReadSession, } }; -} // namespace NYdb::V3::NFederatedTopic +} // namespace NYdb::NFederatedTopic diff --git a/src/client/federated_topic/impl/federated_read_session_event.cpp b/src/client/federated_topic/impl/federated_read_session_event.cpp index 5c54f02570..00cb5127b7 100644 --- a/src/client/federated_topic/impl/federated_read_session_event.cpp +++ b/src/client/federated_topic/impl/federated_read_session_event.cpp @@ -165,4 +165,4 @@ std::string DebugString(const TReadSessionEvent::TEvent& event) { return std::visit([](const auto& ev) { return ev.DebugString(); }, event); } -} // namespace NYdb::V3::NFederatedTopic +} // namespace NYdb::Dev::NFederatedTopic diff --git a/src/client/federated_topic/impl/federated_topic.cpp b/src/client/federated_topic/impl/federated_topic.cpp index f74e05e384..ca1a1caa3f 100644 --- a/src/client/federated_topic/impl/federated_topic.cpp +++ b/src/client/federated_topic/impl/federated_topic.cpp @@ -86,4 +86,4 @@ void TFederatedTopicClient::OverrideCodec(NTopic::ECodec codecId, std::unique_pt return Impl_->OverrideCodec(codecId, std::move(codecImpl)); } -} // namespace NYdb::V3::NFederatedTopic +} // namespace NYdb::NFederatedTopic diff --git a/src/client/federated_topic/impl/federated_topic_impl.h b/src/client/federated_topic/impl/federated_topic_impl.h index 73be8e544e..164dd82cd6 100644 --- a/src/client/federated_topic/impl/federated_topic_impl.h +++ b/src/client/federated_topic/impl/federated_topic_impl.h @@ -89,4 +89,4 @@ class TFederatedTopicClient::TImpl { TAdaptiveLock Lock; }; -} // namespace NYdb::V3::NFederatedTopic +} // namespace NYdb::NFederatedTopic diff --git a/src/client/federated_topic/impl/federated_write_session.cpp b/src/client/federated_topic/impl/federated_write_session.cpp index 5d6b312fc6..217936058d 100644 --- a/src/client/federated_topic/impl/federated_write_session.cpp +++ b/src/client/federated_topic/impl/federated_write_session.cpp @@ -467,4 +467,4 @@ bool TFederatedWriteSessionImpl::Close(TDuration timeout) { } } -} // namespace NYdb::V3::NFederatedTopic +} // namespace NYdb::NFederatedTopic diff --git a/src/client/federated_topic/impl/federated_write_session.h b/src/client/federated_topic/impl/federated_write_session.h index 670558d69f..d9701662d9 100644 --- a/src/client/federated_topic/impl/federated_write_session.h +++ b/src/client/federated_topic/impl/federated_write_session.h @@ -206,4 +206,4 @@ class TFederatedWriteSession : public NTopic::IWriteSession, } }; -} // namespace NYdb::V3::NFederatedTopic +} // namespace NYdb::NFederatedTopic diff --git a/src/client/federated_topic/impl/federation_observer.cpp b/src/client/federated_topic/impl/federation_observer.cpp index 7d720c785a..467dabfbbe 100644 --- a/src/client/federated_topic/impl/federation_observer.cpp +++ b/src/client/federated_topic/impl/federation_observer.cpp @@ -200,4 +200,4 @@ IOutputStream& operator<<(IOutputStream& out, TFederatedDbState const& state) { return out << " }"; } -} // namespace NYdb::V3::NFederatedTopic +} // namespace NYdb::NFederatedTopic diff --git a/src/client/federated_topic/impl/federation_observer.h b/src/client/federated_topic/impl/federation_observer.h index 84e6cf1694..baf9aec4f5 100644 --- a/src/client/federated_topic/impl/federation_observer.h +++ b/src/client/federated_topic/impl/federation_observer.h @@ -121,4 +121,4 @@ class TFederatedDbObserver : public NTopic::TContextOwner #include -namespace NYdb::NDecimal { +namespace NYdb { +inline namespace V3 { +namespace NDecimal { static const TUint128 Ten(10U); @@ -249,3 +251,5 @@ bool IsValid(const std::string_view& str) { } } +} +} diff --git a/src/library/decimal/yql_decimal.h b/src/library/decimal/yql_decimal.h index d768a1e1b3..4fc0d17687 100644 --- a/src/library/decimal/yql_decimal.h +++ b/src/library/decimal/yql_decimal.h @@ -7,7 +7,9 @@ #include #include -namespace NYdb::NDecimal { +namespace NYdb { +inline namespace V3 { +namespace NDecimal { #ifdef _win_ #ifndef DONT_USE_NATIVE_INT128 @@ -52,3 +54,5 @@ TInt128 FromHalfs(ui64 lo, i64 hi); bool IsValid(const std::string_view& str); } +} +} diff --git a/src/library/decimal/yql_wide_int.h b/src/library/decimal/yql_wide_int.h index 00a9cbe575..83fea49458 100644 --- a/src/library/decimal/yql_wide_int.h +++ b/src/library/decimal/yql_wide_int.h @@ -6,7 +6,9 @@ #include #include -namespace NYdb::NDecimal { +namespace NYdb { +inline namespace V3 { +namespace NDecimal { #ifndef _win_ typedef __int128 i128_t; @@ -342,3 +344,5 @@ template<> struct TPairOf { typedef ui128_t Type; }; template struct TPairOf {}; } +} +} diff --git a/src/library/grpc/client/grpc_client_low.cpp b/src/library/grpc/client/grpc_client_low.cpp index a2b959c311..b4421b2f1c 100644 --- a/src/library/grpc/client/grpc_client_low.cpp +++ b/src/library/grpc/client/grpc_client_low.cpp @@ -21,6 +21,7 @@ #include namespace NYdbGrpc { +inline namespace V3 { void EnableGRpcTracing() { grpc_tracer_set_enabled("tcp", true); @@ -603,4 +604,5 @@ grpc_socket_mutator* NImpl::CreateGRpcKeepAliveSocketMutator(const TTcpKeepAlive return nullptr; } -} // namespace NGRpc +} +} diff --git a/src/library/grpc/client/grpc_client_low.h b/src/library/grpc/client/grpc_client_low.h index 72d355783b..3772dcba98 100644 --- a/src/library/grpc/client/grpc_client_low.h +++ b/src/library/grpc/client/grpc_client_low.h @@ -26,6 +26,7 @@ * This file should not be used in high level code without special reason */ namespace NYdbGrpc { +inline namespace V3 { const size_t DEFAULT_NUM_THREADS = 2; @@ -1437,4 +1438,5 @@ class TGRpcClientLow std::mutex JoinMutex_; }; -} // namespace NGRpc +} +} diff --git a/src/library/grpc/client/grpc_common.h b/src/library/grpc/client/grpc_common.h index 7ae782ebc8..ea2f7ce68c 100644 --- a/src/library/grpc/client/grpc_common.h +++ b/src/library/grpc/client/grpc_common.h @@ -11,6 +11,7 @@ #include namespace NYdbGrpc { +inline namespace V3 { struct TGRpcClientConfig { std::string Locator; // format host:port @@ -84,4 +85,5 @@ inline std::shared_ptr CreateChannelInterface(const TGRp } } -} // namespace NGRpc +} +} diff --git a/src/library/grpc/common/constants.h b/src/library/grpc/common/constants.h index 14ff710534..b67a892208 100644 --- a/src/library/grpc/common/constants.h +++ b/src/library/grpc/common/constants.h @@ -3,7 +3,9 @@ #include namespace NYdbGrpc { +inline namespace V3 { constexpr uint64_t DEFAULT_GRPC_MESSAGE_SIZE_LIMIT = 64000000; } +} diff --git a/src/library/issue/utf8.cpp b/src/library/issue/utf8.cpp index 39ca0eec4e..9355b8179d 100644 --- a/src/library/issue/utf8.cpp +++ b/src/library/issue/utf8.cpp @@ -2,7 +2,9 @@ #include -namespace NYdb::NIssue { +namespace NYdb { +inline namespace V3 { +namespace NIssue { namespace { @@ -56,3 +58,5 @@ bool IsUtf8(const std::string_view& str) { } } +} +} diff --git a/src/library/issue/utf8.h b/src/library/issue/utf8.h index 66141bf299..6dc8ec9667 100644 --- a/src/library/issue/utf8.h +++ b/src/library/issue/utf8.h @@ -1,9 +1,15 @@ #pragma once +#include + #include -namespace NYdb::NIssue { +namespace NYdb { +inline namespace V3 { +namespace NIssue { bool IsUtf8(const std::string_view& str); } +} +} diff --git a/src/library/issue/yql_issue.cpp b/src/library/issue/yql_issue.cpp index ef139fd588..b7e73df2d1 100644 --- a/src/library/issue/yql_issue.cpp +++ b/src/library/issue/yql_issue.cpp @@ -17,7 +17,9 @@ #include #include -namespace NYdb::NIssue { +namespace NYdb { +inline namespace V3 { +namespace NIssue { std::string SeverityToString(ESeverity severity) { switch (severity) { @@ -272,7 +274,9 @@ std::optional TryParseTerminationMessage(std::string_view& message) { return std::nullopt; } -} // namspace NYql +} +} +} template <> void Out(IOutputStream& out, const NYdb::NIssue::TPosition& pos) { diff --git a/src/library/issue/yql_issue_message.cpp b/src/library/issue/yql_issue_message.cpp index 65fae80044..0a4fdb73a5 100644 --- a/src/library/issue/yql_issue_message.cpp +++ b/src/library/issue/yql_issue_message.cpp @@ -8,7 +8,9 @@ #include -namespace NYdb::NIssue { +namespace NYdb { +inline namespace V3 { +namespace NIssue { TIssue IssueFromMessage(const Ydb::Issue::IssueMessage& issueMessage) { TIssue topIssue; @@ -91,3 +93,5 @@ void IssuesToMessage(const TIssues& issues, ::google::protobuf::RepeatedPtrField } } +} +} diff --git a/src/library/issue/yql_issue_message.h b/src/library/issue/yql_issue_message.h index 0629b90b2c..964f6f2e56 100644 --- a/src/library/issue/yql_issue_message.h +++ b/src/library/issue/yql_issue_message.h @@ -4,7 +4,9 @@ #include -namespace NYdb::NIssue { +namespace NYdb { +inline namespace V3 { +namespace NIssue { TIssue IssueFromMessage(const Ydb::Issue::IssueMessage& issueMessage); void IssuesFromMessage(const ::google::protobuf::RepeatedPtrField& message, TIssues& issues); @@ -13,3 +15,5 @@ void IssueToMessage(const TIssue& topIssue, Ydb::Issue::IssueMessage* message); void IssuesToMessage(const TIssues& issues, ::google::protobuf::RepeatedPtrField* message); } +} +} diff --git a/src/library/jwt/jwt.cpp b/src/library/jwt/jwt.cpp index 5f11c7d67a..d3a086bb07 100644 --- a/src/library/jwt/jwt.cpp +++ b/src/library/jwt/jwt.cpp @@ -6,6 +6,7 @@ #include namespace NYdb { +inline namespace V3 { std::string MakeSignedJwt(const TJwtParams& params, const TDuration& lifetime) { // this constant works on all envs (internal IAM, preprod cloud, prod cloud) @@ -53,5 +54,5 @@ TJwtParams ParseJwtParams(const std::string& jsonParamsStr) { return result; } -} // namespace NYdb - +} +} diff --git a/src/library/operation_id/operation_id.cpp b/src/library/operation_id/operation_id.cpp index 650699fe78..1a24ff493b 100644 --- a/src/library/operation_id/operation_id.cpp +++ b/src/library/operation_id/operation_id.cpp @@ -10,6 +10,7 @@ #include namespace NKikimr { +inline namespace V3 { namespace NOperationId { using namespace NUri; @@ -305,5 +306,6 @@ TOperationId::EKind ParseKind(const std::string_view value) { return TOperationId::UNUSED; } -} // namespace NOperationId -} // namespace NKikimr +} +} +} diff --git a/src/library/persqueue/obfuscate/obfuscate.cpp b/src/library/persqueue/obfuscate/obfuscate.cpp index 0c260a743b..d2fbdbfaae 100644 --- a/src/library/persqueue/obfuscate/obfuscate.cpp +++ b/src/library/persqueue/obfuscate/obfuscate.cpp @@ -3,6 +3,7 @@ #include namespace NPersQueue { +inline namespace V3 { std::string ObfuscateString(std::string str) { ui32 publicPartSize = Min(4, str.size() / 4); @@ -12,4 +13,5 @@ std::string ObfuscateString(std::string str) { return str; } -} // namespace NPersQueue +} +} diff --git a/src/library/persqueue/obfuscate/obfuscate.h b/src/library/persqueue/obfuscate/obfuscate.h index bd30949f2b..d2a85191c2 100644 --- a/src/library/persqueue/obfuscate/obfuscate.h +++ b/src/library/persqueue/obfuscate/obfuscate.h @@ -3,7 +3,9 @@ #include namespace NPersQueue { +inline namespace V3 { std::string ObfuscateString(std::string str); -} // namespace NPersQueue +} +} diff --git a/src/library/persqueue/topic_parser_public/topic_parser.cpp b/src/library/persqueue/topic_parser_public/topic_parser.cpp index a5e760b914..413b54146d 100644 --- a/src/library/persqueue/topic_parser_public/topic_parser.cpp +++ b/src/library/persqueue/topic_parser_public/topic_parser.cpp @@ -5,6 +5,7 @@ #include namespace NPersQueue { +inline namespace V3 { bool CorrectName(const std::string& topic) { if (!std::string_view{topic}.starts_with("rt3.")) @@ -151,4 +152,5 @@ std::string ConvertOldConsumerName(const std::string& consumer) { } -} // namespace NPersQueue +} +} diff --git a/src/library/persqueue/topic_parser_public/topic_parser.h b/src/library/persqueue/topic_parser_public/topic_parser.h index 1d8122c085..82e4237ba7 100644 --- a/src/library/persqueue/topic_parser_public/topic_parser.h +++ b/src/library/persqueue/topic_parser_public/topic_parser.h @@ -3,6 +3,7 @@ #include namespace NPersQueue { +inline namespace V3 { std::string GetDC(const std::string& topic); @@ -29,4 +30,5 @@ std::string ConvertOldProducerName(const std::string& producer); std::string ConvertOldConsumerName(const std::string& consumer); -} // namespace NPersQueue +} +} diff --git a/src/library/string_utils/helpers/helpers.cpp b/src/library/string_utils/helpers/helpers.cpp index a7d626fd18..e9b8702689 100644 --- a/src/library/string_utils/helpers/helpers.cpp +++ b/src/library/string_utils/helpers/helpers.cpp @@ -4,6 +4,8 @@ #include #include +namespace NYdb { +inline namespace V3 { namespace NUtils { namespace { void DoSplit(std::string_view src, std::string_view& l, std::string_view& r, size_t pos, size_t len) { @@ -242,4 +244,6 @@ std::u32string FromAscii(const std::string_view& s) { return res; } -} // namespace NUtils +} +} +} diff --git a/src/library/uuid/uuid.cpp b/src/library/uuid/uuid.cpp index af69eee648..c9e6fe076f 100644 --- a/src/library/uuid/uuid.cpp +++ b/src/library/uuid/uuid.cpp @@ -3,6 +3,7 @@ #include namespace NYdb { +inline namespace V3 { namespace NUuid { static void WriteHexDigit(ui8 digit, IOutputStream& out) { @@ -79,4 +80,4 @@ void UuidHalfsToByteString(ui64 low, ui64 hi, IOutputStream& out) { } } - +} diff --git a/src/library/uuid/uuid.h b/src/library/uuid/uuid.h index f1b23dfcc8..e2ee6ea2ff 100644 --- a/src/library/uuid/uuid.h +++ b/src/library/uuid/uuid.h @@ -1,4 +1,5 @@ #pragma once + #include #include @@ -9,6 +10,7 @@ class IOutputStream; namespace NYdb { +inline namespace V3 { namespace NUuid { static constexpr ui32 UUID_LEN = 16; @@ -123,3 +125,4 @@ inline void UuidBytesToHalfs(const char *str, size_t sz, ui64 &high, ui64 &low) } } +} diff --git a/tests/unit/client/draft/ydb_scripting_response_headers_ut.cpp b/tests/unit/client/draft/ydb_scripting_response_headers_ut.cpp index 342b726b68..affb4fdbf6 100644 --- a/tests/unit/client/draft/ydb_scripting_response_headers_ut.cpp +++ b/tests/unit/client/draft/ydb_scripting_response_headers_ut.cpp @@ -6,11 +6,10 @@ #include using namespace NYdb; -using namespace NYdb::V3::NScripting; Y_UNIT_TEST_SUITE(ResponseHeaders) { Y_UNIT_TEST(PassHeader) { - TMockSlyDbProxy slyDbProxy; + NScripting::TMockSlyDbProxy slyDbProxy; std::string addr = "localhost:10000"; @@ -19,7 +18,7 @@ Y_UNIT_TEST_SUITE(ResponseHeaders) { auto config = TDriverConfig() .SetEndpoint(addr); TDriver driver(config); - TScriptingClient client(driver); + NScripting::TScriptingClient client(driver); auto result = client.ExecuteYqlScript("SMTH").GetValueSync(); auto metadata = result.GetResponseMetadata(); diff --git a/tests/unit/client/draft/ydb_view_ut.cpp b/tests/unit/client/draft/ydb_view_ut.cpp index 73ea9b90b6..7414f2ead9 100644 --- a/tests/unit/client/draft/ydb_view_ut.cpp +++ b/tests/unit/client/draft/ydb_view_ut.cpp @@ -6,23 +6,22 @@ #include using namespace NYdb; -using namespace NYdb::V3::NView; Y_UNIT_TEST_SUITE(ViewClient) { Y_UNIT_TEST(Basic) { TString addr = "localhost:2000"; - TViewDummyService viewService; + NView::TViewDummyService viewService; auto server = StartGrpcServer(addr, viewService); auto config = TDriverConfig().SetEndpoint(addr); TDriver driver(config); - TViewClient client(driver); + NView::TViewClient client(driver); auto result = client.DescribeView("any").ExtractValueSync(); UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); auto queryText = result.GetViewDescription().GetQueryText(); - UNIT_ASSERT_STRINGS_EQUAL(queryText, DummyQueryText); + UNIT_ASSERT_STRINGS_EQUAL(queryText, NView::DummyQueryText); } } From 0db11c6d20b90890cb0320e6bcf196dd9c538562 Mon Sep 17 00:00:00 2001 From: Bulat Date: Tue, 11 Mar 2025 16:07:08 +0000 Subject: [PATCH 7/7] Increment YDB C++ SDK version to v3.2.2 (#15585) --- src/client/resources/ydb_sdk_version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/resources/ydb_sdk_version.txt b/src/client/resources/ydb_sdk_version.txt index a4f52a5dbb..acf9bf09db 100644 --- a/src/client/resources/ydb_sdk_version.txt +++ b/src/client/resources/ydb_sdk_version.txt @@ -1 +1 @@ -3.2.0 \ No newline at end of file +3.2.2 \ No newline at end of file