Skip to content

Commit 8f09fc5

Browse files
authored
Compress cluster state content (#29467)
1 parent b5ca96b commit 8f09fc5

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

ydb/core/grpc_services/rpc_cluster_state.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <ydb/library/actors/core/hfunc.h>
1414
#include <ydb/library/actors/interconnect/interconnect.h>
1515
#include <library/cpp/digest/old_crc/crc.h>
16+
#include <library/cpp/streams/bzip2/bzip2.h>
1617

1718
#include <util/random/shuffle.h>
1819

@@ -289,7 +290,7 @@ class TClusterStateRPC : public TRpcRequestActor<TClusterStateRPC, TEvClusterSta
289290

290291
void Handle(NKikimr::NCountersInfo::TEvCountersInfoResponse::TPtr& ev) {
291292
ui32 idx = ev.Get()->Cookie;
292-
Counters[idx].push_back(std::make_pair(std::move(ev->Get()->Record.GetResponse()), TInstant::Now()));
293+
Counters[idx].push_back(std::make_pair(Pack(std::move(ev->Get()->Record.GetResponse())), TInstant::Now()));
293294
NodeStateInfoReceived(idx);
294295
}
295296

@@ -383,14 +384,23 @@ class TClusterStateRPC : public TRpcRequestActor<TClusterStateRPC, TEvClusterSta
383384
}
384385
}
385386

387+
TString Pack(const TString& data) {
388+
TString dataPack;
389+
TStringOutput output(dataPack);
390+
TBZipCompress compress(&output);
391+
compress.Write(data);
392+
compress.Finish();
393+
return dataPack;
394+
}
395+
386396
void AddBlock(Ydb::Monitoring::ClusterStateResult& result, const TString& name, const auto& obj) {
387397
google::protobuf::util::JsonPrintOptions jsonOpts;
388398
jsonOpts.add_whitespace = true;
389399
TString data;
390400
google::protobuf::util::MessageToJsonString(obj, &data, jsonOpts);
391401
auto* block = result.Addblocks();
392402
block->Setname(name);
393-
block->Setcontent(data);
403+
block->Setcontent(Pack(data));
394404
block->Mutabletimestamp()->set_seconds(TInstant::Now().Seconds());
395405
}
396406

ydb/public/api/protos/ydb_monitoring.proto

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,11 @@ message ClusterStateResponse {
249249

250250
message ClusterStateResultBlock {
251251
string name = 1;
252-
string content = 2;
252+
bytes content = 2;
253253
google.protobuf.Timestamp timestamp = 3;
254254
}
255255

256256
message ClusterStateResult {
257-
string result = 1; // deprecated
257+
reserved 1; // deprecated
258258
repeated ClusterStateResultBlock blocks = 2;
259259
}

ydb/public/lib/ydb_cli/commands/ydb_state.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include <chrono>
88
#include <util/generic/xrange.h>
9+
#include <util/stream/mem.h>
910
#include <library/cpp/streams/bzip2/bzip2.h>
1011

1112
namespace NYdb::NConsoleClient {
@@ -111,13 +112,12 @@ int TCommandClusterStateFetch::Run(TConfig& config) {
111112

112113
TFileOutput out(FileName);
113114
TBZipCompress compress(&out);
114-
TString r = proto.Getresult();
115-
if (!r.empty()) {
116-
TARFile::ToStream(compress, "result.json", r, TInstant::Now());
117-
}
118115
for (ui32 i : xrange(proto.blocksSize())) {
119116
auto& block = proto.Getblocks(i);
120-
TARFile::ToStream(compress, block.Getname(), block.Getcontent(), TInstant::Seconds(block.Gettimestamp().seconds()));
117+
TString data = block.Getcontent();
118+
TMemoryInput input(data.data(), data.size());
119+
TBZipDecompress decompress(&input);
120+
TARFile::ToStream(compress, block.Getname(), decompress.ReadAll(), TInstant::Seconds(block.Gettimestamp().seconds()));
121121
}
122122
return EXIT_SUCCESS;
123123
}

0 commit comments

Comments
 (0)