Skip to content

YDB C++ SDK Import 1 #370

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Feb 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions include/ydb-cpp-sdk/client/bsconfig/storage_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,24 @@ namespace NYdb::inline V3::NStorageConfig {
struct TFetchStorageConfigResult : public TStatus {
TFetchStorageConfigResult(
TStatus&& status,
std::string&& config)
std::string&& config,
std::string&& storage_config)
: TStatus(std::move(status))
, Config_(std::move(config))
, StorageConfig_(std::move(storage_config))
{}

const std::string& GetConfig() const {
return Config_;
}

const std::string& GetStorageConfig() const {
return StorageConfig_;
}

private:
std::string Config_;
std::string StorageConfig_;
};

using TAsyncFetchStorageConfigResult = NThreading::TFuture<TFetchStorageConfigResult>;
Expand All @@ -39,10 +46,14 @@ class TStorageConfigClient {
~TStorageConfigClient();

// Replace config
TAsyncStatus ReplaceStorageConfig(const std::string& config);
TAsyncStatus ReplaceStorageConfig(const std::optional<TString>& yaml_config,
const std::optional<TString>& storage_yaml_config,
std::optional<bool> switch_dedicated_storage_section,
bool dedicated_config_mode);

// Fetch current cluster storage config
TAsyncFetchStorageConfigResult FetchStorageConfig(const TStorageConfigSettings& settings = {});
TAsyncFetchStorageConfigResult FetchStorageConfig(bool dedicated_storage_section, bool dedicated_cluster_section,
const TStorageConfigSettings& settings = {});

// Bootstrap cluster with automatic configuration
TAsyncStatus BootstrapCluster(const std::string& selfAssemblyUUID);
Expand Down
26 changes: 21 additions & 5 deletions include/ydb-cpp-sdk/client/debug/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,35 @@ class TTxProxyPingResult: public TStatus {
{}
};

class TActorChainPingResult: public TStatus {
public:
TActorChainPingResult(TStatus&& status)
: TStatus(std::move(status))
{}
};

////////////////////////////////////////////////////////////////////////////////

using TAsyncPlainGrpcPingResult = NThreading::TFuture<TPlainGrpcPingResult>;
using TAsyncGrpcProxyPingResult = NThreading::TFuture<TGrpcProxyPingResult>;
using TAsyncKqpProxyPingResult = NThreading::TFuture<TKqpProxyPingResult>;
using TAsyncSchemeCachePingResult = NThreading::TFuture<TSchemeCachePingResult>;
using TAsyncTxProxyPingResult = NThreading::TFuture<TTxProxyPingResult>;
using TAsyncActorChainPingResult = NThreading::TFuture<TActorChainPingResult>;

////////////////////////////////////////////////////////////////////////////////

struct TPlainGrpcPingSettings : public TOperationRequestSettings<TPlainGrpcPingSettings> {};
struct TGrpcProxyPingSettings : public TOperationRequestSettings<TGrpcProxyPingSettings> {};
struct TKqpProxyPingSettings : public TOperationRequestSettings<TKqpProxyPingSettings> {};
struct TSchemeCachePingSettings : public TOperationRequestSettings<TSchemeCachePingSettings> {};
struct TTxProxyPingSettings : public TOperationRequestSettings<TTxProxyPingSettings> {};
struct TPlainGrpcPingSettings : public TSimpleRequestSettings<TPlainGrpcPingSettings> {};
struct TGrpcProxyPingSettings : public TSimpleRequestSettings<TGrpcProxyPingSettings> {};
struct TKqpProxyPingSettings : public TSimpleRequestSettings<TKqpProxyPingSettings> {};
struct TSchemeCachePingSettings : public TSimpleRequestSettings<TSchemeCachePingSettings> {};
struct TTxProxyPingSettings : public TSimpleRequestSettings<TTxProxyPingSettings> {};

struct TActorChainPingSettings : public TSimpleRequestSettings<TActorChainPingSettings> {
FLUENT_SETTING_DEFAULT(size_t, ChainLength, 10);
FLUENT_SETTING_DEFAULT(size_t, WorkUsec, 5);
FLUENT_SETTING_DEFAULT(bool, NoTailChain, false);
};

////////////////////////////////////////////////////////////////////////////////

Expand All @@ -75,6 +89,8 @@ class TDebugClient {
TAsyncSchemeCachePingResult PingSchemeCache(const TSchemeCachePingSettings& settings);
TAsyncTxProxyPingResult PingTxProxy(const TTxProxyPingSettings& settings);

TAsyncActorChainPingResult PingActorChain(const TActorChainPingSettings& settings);

private:
class TImpl;
std::shared_ptr<TImpl> Impl_;
Expand Down
4 changes: 4 additions & 0 deletions include/ydb-cpp-sdk/client/query/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ class TSession {
class TImpl;
private:
TSession();
TSession(std::shared_ptr<TQueryClient::TImpl> client); // Create broken session
TSession(std::shared_ptr<TQueryClient::TImpl> client, TSession::TImpl* sessionImpl);

std::shared_ptr<TQueryClient::TImpl> Client_;
Expand Down Expand Up @@ -210,7 +211,10 @@ class TExecuteQueryPart : public TStreamPartStatus {
const TResultSet& GetResultSet() const { return *ResultSet_; }
TResultSet ExtractResultSet() { return std::move(*ResultSet_); }

bool HasStats() const { return Stats_.has_value(); }
const std::optional<TExecStats>& GetStats() const { return Stats_; }
TExecStats ExtractStats() const { return std::move(*Stats_); }

const std::optional<TTransaction>& GetTransaction() const { return Transaction_; }

TExecuteQueryPart(TStatus&& status, std::optional<TExecStats>&& queryStats, std::optional<TTransaction>&& tx)
Expand Down
1 change: 1 addition & 0 deletions include/ydb-cpp-sdk/client/query/query.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ struct TExecuteQuerySettings : public TRequestSettings<TExecuteQuerySettings> {
FLUENT_SETTING_DEFAULT(EStatsMode, StatsMode, EStatsMode::None);
FLUENT_SETTING_OPTIONAL(bool, ConcurrentResultSets);
FLUENT_SETTING(std::string, ResourcePool);
FLUENT_SETTING_OPTIONAL(std::chrono::milliseconds, StatsCollectPeriod);
};

struct TBeginTxSettings : public TRequestSettings<TBeginTxSettings> {};
Expand Down
16 changes: 14 additions & 2 deletions include/ydb-cpp-sdk/client/topic/control_plane.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ namespace NYdb::inline V3 {
}

namespace NYdb::inline V3::NTopic {

enum class EMeteringMode : uint32_t {
Unspecified = 0,
ReservedCapacity = 1,
Expand Down Expand Up @@ -187,6 +187,8 @@ friend struct TAutoPartitioningSettingsBuilder;
, DownUtilizationPercent_(downUtilizationPercent)
, UpUtilizationPercent_(upUtilizationPercent) {}

void SerializeTo(Ydb::Topic::AutoPartitioningSettings& proto) const;

EAutoPartitioningStrategy GetStrategy() const;
TDuration GetStabilizationWindow() const;
ui32 GetDownUtilizationPercent() const;
Expand Down Expand Up @@ -228,6 +230,8 @@ class TPartitioningSettings {
{
}

void SerializeTo(Ydb::Topic::PartitioningSettings& proto) const;

uint64_t GetMinActivePartitions() const;
uint64_t GetMaxActivePartitions() const;
uint64_t GetPartitionCountLimit() const;
Expand Down Expand Up @@ -437,8 +441,11 @@ struct TConsumerSettings {

using TAttributes = std::map<std::string, std::string>;

TConsumerSettings(TSettings& parent): Parent_(parent) {}
TConsumerSettings(TSettings& parent) : Parent_(parent) {}
TConsumerSettings(TSettings& parent, const std::string& name) : ConsumerName_(name), Parent_(parent) {}
TConsumerSettings(TSettings& parent, const Ydb::Topic::Consumer& proto);

void SerializeTo(Ydb::Topic::Consumer& proto) const;

FLUENT_SETTING(std::string, ConsumerName);
FLUENT_SETTING_DEFAULT(bool, Important, false);
Expand Down Expand Up @@ -526,6 +533,11 @@ struct TCreateTopicSettings : public TOperationRequestSettings<TCreateTopicSetti
using TSelf = TCreateTopicSettings;
using TAttributes = std::map<std::string, std::string>;

TCreateTopicSettings() = default;
TCreateTopicSettings(const Ydb::Topic::CreateTopicRequest& proto);

void SerializeTo(Ydb::Topic::CreateTopicRequest& proto) const;

FLUENT_SETTING(TPartitioningSettings, PartitioningSettings);

FLUENT_SETTING_DEFAULT(TDuration, RetentionPeriod, TDuration::Hours(24));
Expand Down
1 change: 1 addition & 0 deletions src/api/grpc/ydb_debug_v1.proto
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ service DebugService {
rpc PingKqpProxy(Debug.KqpProxyRequest) returns (Debug.KqpProxyResponse);
rpc PingSchemeCache(Debug.SchemeCacheRequest) returns (Debug.SchemeCacheResponse);
rpc PingTxProxy(Debug.TxProxyRequest) returns (Debug.TxProxyResponse);
rpc PingActorChain(Debug.ActorChainRequest) returns (Debug.ActorChainResponse);
}
10 changes: 8 additions & 2 deletions src/api/protos/ydb_bsconfig.proto
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ import "src/api/protos/ydb_operation.proto";

message ReplaceStorageConfigRequest {
Ydb.Operations.OperationParams operation_params = 1;
string yaml_config = 2;
optional string yaml_config = 2; // cluster yaml config
optional string storage_yaml_config = 3; // dedicated storage yaml config (when dual-config mode is enabled)
optional bool switch_dedicated_storage_section = 4; // if filled, can turn on or off dedicated section of YAML config
bool dedicated_config_mode = 5; // if true, then user expects system to work in dual-config mode
}

message ReplaceStorageConfigResponse {
Expand All @@ -27,14 +30,17 @@ message ReplaceStorageConfigResult {

message FetchStorageConfigRequest {
Ydb.Operations.OperationParams operation_params = 1;
bool dedicated_storage_section = 2;
bool dedicated_cluster_section = 3;
}

message FetchStorageConfigResponse {
Ydb.Operations.Operation operation = 1;
}

message FetchStorageConfigResult {
string yaml_config = 1;
optional string yaml_config = 1;
optional string storage_yaml_config = 2;
}

message BootstrapClusterRequest {
Expand Down
19 changes: 19 additions & 0 deletions src/api/protos/ydb_debug.proto
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,22 @@ message TxProxyResponse {
StatusIds.StatusCode status = 1;
repeated Ydb.Issue.IssueMessage issues = 2;
}

// Ping Actor Chain

message ActorChainRequest {

// number of actors to be created, default 10
uint32 ChainLength = 1;

// immitate work duration for each actor (approximate), default ~ 5 usec
uint32 WorkUsec = 2;

// don't use tail sends and registrations
bool NoTailChain = 3;
}

message ActorChainResponse {
StatusIds.StatusCode status = 1;
repeated Ydb.Issue.IssueMessage issues = 2;
}
8 changes: 7 additions & 1 deletion src/api/protos/ydb_query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,13 @@ message ExecuteQueryRequest {
// Allows to set size limitation (in bytes) for one result part
int64 response_part_limit_bytes = 9 [(Ydb.value) = "[0; 33554432]"];

string pool_id = 10; // Workload manager pool id
// Workload manager pool id
string pool_id = 10;

// Time interval for sending periodical query statistics.
// When query statistics are enabled (stats_mode != STATS_MODE_NONE), by default statistics will be sent only once after query execution is finished.
// In case when stats_period_ms is specified and is non-zero, query statistics will be additionally sent every stats_period_ms milliseconds beginning from the start of query execution.
int64 stats_period_ms = 11 [(Ydb.value) = ">= 0"];
}

message ResultSetMeta {
Expand Down
3 changes: 3 additions & 0 deletions src/api/protos/ydb_rate_limiter.proto
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@ message MeteringConfig {
// Default value is inherited from parent or equals 60 seconds for root.
uint64 billing_period_sec = 2;

// User-defined labels.
map<string, string> labels = 3 [(map_key).length.le = 256, (length).le = 10240, (size).le = 100];

// Billing metric JSON fields (inherited from parent if not set)
google.protobuf.Struct metric_fields = 10;
}
Expand Down
57 changes: 42 additions & 15 deletions src/client/bsconfig/storage_config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,51 @@ class TStorageConfigClient::TImpl : public TClientImplCommon<TStorageConfigClien
{
}

TAsyncStatus ReplaceStorageConfig(const std::string& config) {
TAsyncStatus ReplaceStorageConfig(const std::optional<TString>& yaml_config,
const std::optional<TString>& storage_yaml_config,
std::optional<bool> switch_dedicated_storage_section,
bool dedicated_config_mode) {
auto request = MakeRequest<Ydb::BSConfig::ReplaceStorageConfigRequest>();
request.set_yaml_config(config);

if (yaml_config) {
request.set_yaml_config(*yaml_config);
}
if (storage_yaml_config) {
request.set_storage_yaml_config(*storage_yaml_config);
}
if (switch_dedicated_storage_section) {
request.set_switch_dedicated_storage_section(*switch_dedicated_storage_section);
}
request.set_dedicated_config_mode(dedicated_config_mode);

return RunSimple<Ydb::BSConfig::V1::BSConfigService, Ydb::BSConfig::ReplaceStorageConfigRequest, Ydb::BSConfig::ReplaceStorageConfigResponse>(
std::move(request),
&Ydb::BSConfig::V1::BSConfigService::Stub::AsyncReplaceStorageConfig);
}

TAsyncFetchStorageConfigResult FetchStorageConfig(const TStorageConfigSettings& settings = {}) {
TAsyncFetchStorageConfigResult FetchStorageConfig(bool dedicated_storage_section, bool dedicated_cluster_section,
const TStorageConfigSettings& settings = {}) {
auto request = MakeOperationRequest<Ydb::BSConfig::FetchStorageConfigRequest>(settings);
if (dedicated_storage_section) {
request.set_dedicated_storage_section(true);
}
if (dedicated_cluster_section) {
request.set_dedicated_cluster_section(true);
}
auto promise = NThreading::NewPromise<TFetchStorageConfigResult>();

auto extractor = [promise] (google::protobuf::Any* any, TPlainStatus status) mutable {
NYdb::TStringType config;
if (Ydb::BSConfig::FetchStorageConfigResult result; any && any->UnpackTo(&result)) {
config = result.yaml_config();
}

TFetchStorageConfigResult val(TStatus(std::move(status)), std::string{std::move(config)});
promise.SetValue(std::move(val));
};
NYdb::TStringType config;
NYdb::TStringType storage_config;
if (Ydb::BSConfig::FetchStorageConfigResult result; any && any->UnpackTo(&result)) {
config = result.yaml_config();
storage_config = result.storage_yaml_config();
}

TFetchStorageConfigResult val(TStatus(std::move(status)), std::string{std::move(config)},
std::string{std::move(storage_config)});
promise.SetValue(std::move(val));
};

Connections_->RunDeferred<Ydb::BSConfig::V1::BSConfigService, Ydb::BSConfig::FetchStorageConfigRequest, Ydb::BSConfig::FetchStorageConfigResponse>(
std::move(request),
Expand All @@ -62,12 +85,16 @@ TStorageConfigClient::TStorageConfigClient(const TDriver& driver, const TCommonC

TStorageConfigClient::~TStorageConfigClient() = default;

TAsyncStatus TStorageConfigClient::ReplaceStorageConfig(const std::string& config) {
return Impl_->ReplaceStorageConfig(config);
TAsyncStatus TStorageConfigClient::ReplaceStorageConfig(const std::optional<TString>& yaml_config,
const std::optional<TString>& storage_yaml_config, std::optional<bool> switch_dedicated_storage_section,
bool dedicated_config_mode) {
return Impl_->ReplaceStorageConfig(yaml_config, storage_yaml_config, switch_dedicated_storage_section,
dedicated_config_mode);
}

TAsyncFetchStorageConfigResult TStorageConfigClient::FetchStorageConfig(const TStorageConfigSettings& settings) {
return Impl_->FetchStorageConfig(settings);
TAsyncFetchStorageConfigResult TStorageConfigClient::FetchStorageConfig(bool dedicated_storage_section,
bool dedicated_cluster_section, const TStorageConfigSettings& settings) {
return Impl_->FetchStorageConfig(dedicated_storage_section, dedicated_cluster_section, settings);
}

TAsyncStatus TStorageConfigClient::BootstrapCluster(const std::string& selfAssemblyUUID) {
Expand Down
28 changes: 27 additions & 1 deletion src/client/debug/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,28 @@ class TDebugClient::TImpl: public TClientImplCommon<TDebugClient::TImpl> {
return pingPromise;
}

auto PingActorChain(const TActorChainPingSettings& settings) {
auto pingPromise = NewPromise<TActorChainPingResult>();
auto responseCb = [pingPromise] (Debug::ActorChainResponse*, TPlainStatus status) mutable {
TActorChainPingResult val(TStatus(std::move(status)));
pingPromise.SetValue(std::move(val));
};

Debug::ActorChainRequest request;
request.set_chainlength(settings.ChainLength_);
request.set_workusec(settings.WorkUsec_);
request.set_notailchain(settings.NoTailChain_);

Connections_->Run<Debug::V1::DebugService, Debug::ActorChainRequest, Debug::ActorChainResponse>(
std::move(request),
responseCb,
&Debug::V1::DebugService::Stub::AsyncPingActorChain,
DbDriverState_,
TRpcRequestSettings::Make(settings));

return pingPromise;
}

~TImpl() = default;
};

Expand Down Expand Up @@ -73,4 +95,8 @@ TAsyncTxProxyPingResult TDebugClient::PingTxProxy(const TTxProxyPingSettings& se
settings, &Debug::V1::DebugService::Stub::AsyncPingTxProxy);
}

} // namespace NYdb::NDebug
TAsyncActorChainPingResult TDebugClient::PingActorChain(const TActorChainPingSettings& settings) {
return Impl_->PingActorChain(settings);
}

} // namespace NYdb::V3::NDebug
Loading
Loading