Skip to content

Commit cb891ed

Browse files
committed
KESUS: local backups (ydb tools dump / restore) (#14199)
1 parent a16e3a8 commit cb891ed

File tree

3 files changed

+67
-27
lines changed

3 files changed

+67
-27
lines changed

include/ydb-cpp-sdk/client/coordination/coordination.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44

55
namespace Ydb {
66
namespace Coordination {
7+
class Config;
8+
class CreateNodeRequest;
79
class DescribeNodeResult;
8-
class SemaphoreSession;
910
class SemaphoreDescription;
11+
class SemaphoreSession;
1012
}
1113
}
1214

@@ -107,6 +109,8 @@ class TNodeDescription {
107109
const std::vector<NScheme::TPermissions>& GetEffectivePermissions() const;
108110
const Ydb::Coordination::DescribeNodeResult& GetProto() const;
109111

112+
void SerializeTo(Ydb::Coordination::CreateNodeRequest& creationRequest) const;
113+
110114
private:
111115
struct TImpl;
112116
std::shared_ptr<TImpl> Impl_;
@@ -189,7 +193,10 @@ struct TNodeSettings : public TOperationRequestSettings<TDerived> {
189193
FLUENT_SETTING_DEFAULT(ERateLimiterCountersMode, RateLimiterCountersMode, ERateLimiterCountersMode::UNSET);
190194
};
191195

192-
struct TCreateNodeSettings : public TNodeSettings<TCreateNodeSettings> { };
196+
struct TCreateNodeSettings : public TNodeSettings<TCreateNodeSettings> {
197+
TCreateNodeSettings() = default;
198+
TCreateNodeSettings(const Ydb::Coordination::Config& config);
199+
};
193200
struct TAlterNodeSettings : public TNodeSettings<TAlterNodeSettings> { };
194201
struct TDropNodeSettings : public TOperationRequestSettings<TDropNodeSettings> { };
195202
struct TDescribeNodeSettings : public TOperationRequestSettings<TDescribeNodeSettings> { };

src/api/protos/persqueue_error_codes_v1.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,6 @@ enum ErrorCode {
5959

6060
INVALID_ARGUMENT = 500040;
6161
VALIDATION_ERROR = 500080;
62+
63+
UNKNOWN_READ_RULE = 500032;
6264
}

src/client/coordination/coordination.cpp

Lines changed: 56 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ namespace NCoordination {
1717
using NThreading::TFuture;
1818
using NThreading::TPromise;
1919
using NThreading::NewPromise;
20-
using NYdbGrpc::TQueueClientFixedEvent;
2120

2221
namespace {
2322

@@ -35,30 +34,6 @@ inline TResultPromise<T> NewResultPromise() {
3534

3635
////////////////////////////////////////////////////////////////////////////////
3736

38-
template<class Settings>
39-
void ConvertSettingsToProtoConfig(
40-
const Settings& settings,
41-
Ydb::Coordination::Config* config)
42-
{
43-
if (settings.SelfCheckPeriod_) {
44-
config->set_self_check_period_millis(settings.SelfCheckPeriod_->MilliSeconds());
45-
}
46-
if (settings.SessionGracePeriod_) {
47-
config->set_session_grace_period_millis(settings.SessionGracePeriod_->MilliSeconds());
48-
}
49-
if (settings.ReadConsistencyMode_ != EConsistencyMode::UNSET) {
50-
config->set_read_consistency_mode(static_cast<Ydb::Coordination::ConsistencyMode>(settings.ReadConsistencyMode_));
51-
}
52-
if (settings.AttachConsistencyMode_ != EConsistencyMode::UNSET) {
53-
config->set_attach_consistency_mode(static_cast<Ydb::Coordination::ConsistencyMode>(settings.AttachConsistencyMode_));
54-
}
55-
if (settings.RateLimiterCountersMode_ != ERateLimiterCountersMode::UNSET) {
56-
config->set_rate_limiter_counters_mode(static_cast<Ydb::Coordination::RateLimiterCountersMode>(settings.RateLimiterCountersMode_));
57-
}
58-
}
59-
60-
////////////////////////////////////////////////////////////////////////////////
61-
6237
std::string GenerateProtectionKey(size_t size) {
6338
std::string key;
6439
if (size > 0) {
@@ -89,6 +64,12 @@ struct TNodeDescription::TImpl {
8964
Proto_ = desc;
9065
}
9166

67+
void SerializeTo(Ydb::Coordination::CreateNodeRequest& creationRequest) {
68+
auto& config = *creationRequest.mutable_config();
69+
config.CopyFrom(Proto_.config());
70+
config.clear_path();
71+
}
72+
9273
std::optional<TDuration> SelfCheckPeriod_;
9374
std::optional<TDuration> SessionGracePeriod_;
9475
EConsistencyMode ReadConsistencyMode_;
@@ -136,6 +117,10 @@ const Ydb::Coordination::DescribeNodeResult& TNodeDescription::GetProto() const
136117
return Impl_->Proto_;
137118
}
138119

120+
void TNodeDescription::SerializeTo(Ydb::Coordination::CreateNodeRequest& creationRequest) const {
121+
return Impl_->SerializeTo(creationRequest);
122+
}
123+
139124
////////////////////////////////////////////////////////////////////////////////
140125

141126
TSemaphoreSession::TSemaphoreSession() {
@@ -1807,6 +1792,52 @@ class TSessionContext : public TThrRefBase {
18071792

18081793
////////////////////////////////////////////////////////////////////////////////
18091794

1795+
namespace {
1796+
1797+
template<class Settings>
1798+
void ConvertSettingsToProtoConfig(
1799+
const Settings& settings,
1800+
Ydb::Coordination::Config* config)
1801+
{
1802+
if (settings.SelfCheckPeriod_) {
1803+
config->set_self_check_period_millis(settings.SelfCheckPeriod_->MilliSeconds());
1804+
}
1805+
if (settings.SessionGracePeriod_) {
1806+
config->set_session_grace_period_millis(settings.SessionGracePeriod_->MilliSeconds());
1807+
}
1808+
if (settings.ReadConsistencyMode_ != EConsistencyMode::UNSET) {
1809+
config->set_read_consistency_mode(static_cast<Ydb::Coordination::ConsistencyMode>(settings.ReadConsistencyMode_));
1810+
}
1811+
if (settings.AttachConsistencyMode_ != EConsistencyMode::UNSET) {
1812+
config->set_attach_consistency_mode(static_cast<Ydb::Coordination::ConsistencyMode>(settings.AttachConsistencyMode_));
1813+
}
1814+
if (settings.RateLimiterCountersMode_ != ERateLimiterCountersMode::UNSET) {
1815+
config->set_rate_limiter_counters_mode(static_cast<Ydb::Coordination::RateLimiterCountersMode>(settings.RateLimiterCountersMode_));
1816+
}
1817+
}
1818+
1819+
}
1820+
1821+
TCreateNodeSettings::TCreateNodeSettings(const Ydb::Coordination::Config& config) {
1822+
if (config.self_check_period_millis() != 0u) {
1823+
SelfCheckPeriod(TDuration::MilliSeconds(config.self_check_period_millis()));
1824+
}
1825+
if (config.session_grace_period_millis() != 0u) {
1826+
SessionGracePeriod(TDuration::MilliSeconds(config.session_grace_period_millis()));
1827+
}
1828+
if (config.read_consistency_mode() != Ydb::Coordination::CONSISTENCY_MODE_UNSET) {
1829+
ReadConsistencyMode(static_cast<EConsistencyMode>(config.read_consistency_mode()));
1830+
}
1831+
if (config.attach_consistency_mode() != Ydb::Coordination::CONSISTENCY_MODE_UNSET) {
1832+
AttachConsistencyMode(static_cast<EConsistencyMode>(config.attach_consistency_mode()));
1833+
}
1834+
if (config.rate_limiter_counters_mode() != Ydb::Coordination::RATE_LIMITER_COUNTERS_MODE_UNSET) {
1835+
RateLimiterCountersMode(static_cast<ERateLimiterCountersMode>(config.rate_limiter_counters_mode()));
1836+
}
1837+
}
1838+
1839+
////////////////////////////////////////////////////////////////////////////////
1840+
18101841
class TClient::TImpl : public TClientImplCommon<TClient::TImpl> {
18111842
public:
18121843
TImpl(std::shared_ptr<TGRpcConnectionsImpl>&& connections, const TCommonClientSettings& settings)

0 commit comments

Comments
 (0)