Skip to content

Commit a995392

Browse files
committed
Moved commit "Report & show replication lag" from ydb repo
1 parent 27c607b commit a995392

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

include/ydb-cpp-sdk/client/draft/ydb_replication.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
#include <optional>
77

8+
#include <util/datetime/base.h>
9+
810
namespace Ydb::Replication {
911
class ConnectionParams;
1012
class DescribeReplicationResult;
@@ -56,7 +58,17 @@ class TConnectionParams: private TCommonClientSettings {
5658
> Credentials_;
5759
};
5860

59-
struct TRunningState {};
61+
struct TRunningState {
62+
public:
63+
TRunningState() = default;
64+
explicit TRunningState(const std::optional<TDuration>& lag);
65+
66+
const std::optional<TDuration>& GetLag() const;
67+
68+
private:
69+
std::optional<TDuration> Lag_;
70+
};
71+
6072
struct TDoneState {};
6173

6274
class TErrorState {

src/client/draft/ydb_replication.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <src/client/common_client/impl/client.h>
1111
#include <ydb-cpp-sdk/client/proto/accessor.h>
1212

13+
#include <google/protobuf/util/time_util.h>
1314
#include <google/protobuf/repeated_field.h>
1415

1516
namespace NYdb {
@@ -58,6 +59,15 @@ const TOAuthCredentials& TConnectionParams::GetOAuthCredentials() const {
5859
return std::get<TOAuthCredentials>(Credentials_);
5960
}
6061

62+
TRunningState::TRunningState(const std::optional<TDuration>& lag)
63+
: Lag_(lag)
64+
{
65+
}
66+
67+
const std::optional<TDuration>& TRunningState::GetLag() const {
68+
return Lag_;
69+
}
70+
6171
class TErrorState::TImpl {
6272
public:
6373
NYql::TIssues Issues;
@@ -77,6 +87,10 @@ const NYql::TIssues& TErrorState::GetIssues() const {
7787
return Impl_->Issues;
7888
}
7989

90+
TDuration DurationToDuration(const google::protobuf::Duration& value) {
91+
return TDuration::MilliSeconds(google::protobuf::util::TimeUtil::DurationToMilliseconds(value));
92+
}
93+
8094
template <typename T>
8195
NYql::TIssues IssuesFromMessage(const ::google::protobuf::RepeatedPtrField<T>& message) {
8296
NYql::TIssues issues;
@@ -100,7 +114,8 @@ TReplicationDescription::TReplicationDescription(const Ydb::Replication::Describ
100114

101115
switch (desc.state_case()) {
102116
case Ydb::Replication::DescribeReplicationResult::kRunning:
103-
State_ = TRunningState();
117+
State_ = TRunningState(desc.running().has_lag()
118+
? std::make_optional(DurationToDuration(desc.running().lag())) : std::nullopt);
104119
break;
105120

106121
case Ydb::Replication::DescribeReplicationResult::kError:

0 commit comments

Comments
 (0)