2424import tech .ydb .topic .TopicRpc ;
2525import tech .ydb .topic .description .Codec ;
2626import tech .ydb .topic .description .Consumer ;
27+ import tech .ydb .topic .description .ConsumerStats ;
2728import tech .ydb .topic .description .MeteringMode ;
29+ import tech .ydb .topic .description .MultipleWindowsStat ;
2830import tech .ydb .topic .description .PartitionInfo ;
31+ import tech .ydb .topic .description .PartitionStats ;
2932import tech .ydb .topic .description .SupportedCodecs ;
3033import tech .ydb .topic .description .TopicDescription ;
3134import tech .ydb .topic .read .AsyncReader ;
3235import tech .ydb .topic .read .SyncReader ;
3336import tech .ydb .topic .read .impl .AsyncReaderImpl ;
37+ import tech .ydb .topic .read .impl .OffsetsRangeImpl ;
3438import tech .ydb .topic .read .impl .SyncReaderImpl ;
3539import tech .ydb .topic .settings .AlterConsumerSettings ;
3640import tech .ydb .topic .settings .AlterPartitioningSettings ;
@@ -260,8 +264,9 @@ private TopicDescription mapDescribeTopic(YdbTopic.DescribeTopicResult result) {
260264 .setPartitionId (partition .getPartitionId ())
261265 .setActive (partition .getActive ())
262266 .setChildPartitionIds (partition .getChildPartitionIdsList ())
263- .setParentPartitionIds (partition .getParentPartitionIdsList ());
264- // TODO: read partition stats
267+ .setParentPartitionIds (partition .getParentPartitionIdsList ())
268+ .setPartitionStats (fromProto (partition .getPartitionStats ()));
269+
265270 partitions .add (partitionBuilder .build ());
266271 }
267272 description .setPartitions (partitions );
@@ -285,8 +290,7 @@ private TopicDescription mapDescribeTopic(YdbTopic.DescribeTopicResult result) {
285290 consumerSupportedCodecsBuilder .addCodec (codecFromProto (codec ));
286291 }
287292 consumerBuilder .setSupportedCodecs (consumerSupportedCodecsBuilder .build ());
288-
289- // TODO: set consumer stats
293+ consumerBuilder .setStats (fromProto (consumer .getConsumerStats ()));
290294
291295 consumers .add (consumerBuilder .build ());
292296 }
@@ -399,6 +403,47 @@ private static YdbTopic.SupportedCodecs toProto(SupportedCodecs supportedCodecs)
399403 return codecsBuilder .build ();
400404 }
401405
406+ private static PartitionStats fromProto (YdbTopic .PartitionStats partitionStats ) {
407+ return PartitionStats .newBuilder ()
408+ .setPartitionOffsets (
409+ new OffsetsRangeImpl (
410+ partitionStats .getPartitionOffsets ().getStart (),
411+ partitionStats .getPartitionOffsets ().getEnd ()
412+ )
413+ ).setStoreSizeBytes (
414+ partitionStats .getStoreSizeBytes ()
415+ ).setLastWriteTime (
416+ ProtobufUtils .protoToInstant (partitionStats .getLastWriteTime ())
417+ ).setMaxWriteTimeLag (
418+ ProtobufUtils .protoToDuration (partitionStats .getMaxWriteTimeLag ())
419+ ).setBytesWritten (
420+ new MultipleWindowsStat (
421+ partitionStats .getBytesWritten ().getPerMinute (),
422+ partitionStats .getBytesWritten ().getPerHour (),
423+ partitionStats .getBytesWritten ().getPerDay ()
424+ )
425+ ).setPartitionNodeId (
426+ partitionStats .getPartitionNodeId ()
427+ ).build ();
428+ }
429+
430+ private static ConsumerStats fromProto (YdbTopic .Consumer .ConsumerStats consumerStats ) {
431+ return ConsumerStats .newBuilder ()
432+ .setMinPartitionsLastReadTime (
433+ ProtobufUtils .protoToInstant (consumerStats .getMinPartitionsLastReadTime ())
434+ ).setMaxReadTimeLag (
435+ ProtobufUtils .protoToDuration (consumerStats .getMaxReadTimeLag ())
436+ ).setMaxWriteTimeLag (
437+ ProtobufUtils .protoToDuration (consumerStats .getMaxWriteTimeLag ())
438+ ).setBytesRead (
439+ new MultipleWindowsStat (
440+ consumerStats .getBytesRead ().getPerMinute (),
441+ consumerStats .getBytesRead ().getPerHour (),
442+ consumerStats .getBytesRead ().getPerDay ()
443+ )
444+ ).build ();
445+ }
446+
402447 @ Override
403448 public void close () {
404449 logger .debug ("TopicClientImpl.close() is called" );
0 commit comments