@@ -421,6 +421,10 @@ private void onInitResponse(YdbTopic.StreamWriteMessage.InitResponse response) {
421421 private void onWriteResponse (YdbTopic .StreamWriteMessage .WriteResponse response ) {
422422 List <YdbTopic .StreamWriteMessage .WriteResponse .WriteAck > acks = response .getAcksList ();
423423 logger .debug ("[{}] Received WriteResponse with {} WriteAcks" , streamId , acks .size ());
424+ WriteAck .Statistics statistics = null ;
425+ if (response .getWriteStatistics () != null ) {
426+ statistics = new WriteAck .Statistics (response .getWriteStatistics ());
427+ }
424428 int inFlightFreed = 0 ;
425429 long bytesFreed = 0 ;
426430 for (YdbTopic .StreamWriteMessage .WriteResponse .WriteAck ack : acks ) {
@@ -433,7 +437,7 @@ private void onWriteResponse(YdbTopic.StreamWriteMessage.WriteResponse response)
433437 inFlightFreed ++;
434438 bytesFreed += sentMessage .getSize ();
435439 sentMessages .remove ();
436- processWriteAck (sentMessage , ack );
440+ processWriteAck (sentMessage , statistics , ack );
437441 break ;
438442 }
439443 if (sentMessage .getSeqNo () < ack .getSeqNo ()) {
@@ -474,20 +478,20 @@ private void processMessage(YdbTopic.StreamWriteMessage.FromServer message) {
474478 }
475479 }
476480
477- private void processWriteAck (EnqueuedMessage message ,
481+ private void processWriteAck (EnqueuedMessage message , WriteAck . Statistics statistics ,
478482 YdbTopic .StreamWriteMessage .WriteResponse .WriteAck ack ) {
479483 logger .debug ("[{}] Received WriteAck with seqNo {} and status {}" , streamId , ack .getSeqNo (),
480484 ack .getMessageWriteStatusCase ());
481485 WriteAck resultAck ;
482486 switch (ack .getMessageWriteStatusCase ()) {
483487 case WRITTEN :
484488 WriteAck .Details details = new WriteAck .Details (ack .getWritten ().getOffset ());
485- resultAck = new WriteAck (ack .getSeqNo (), WriteAck .State .WRITTEN , details );
489+ resultAck = new WriteAck (ack .getSeqNo (), WriteAck .State .WRITTEN , details , statistics );
486490 break ;
487491 case SKIPPED :
488492 switch (ack .getSkipped ().getReason ()) {
489493 case REASON_ALREADY_WRITTEN :
490- resultAck = new WriteAck (ack .getSeqNo (), WriteAck .State .ALREADY_WRITTEN , null );
494+ resultAck = new WriteAck (ack .getSeqNo (), WriteAck .State .ALREADY_WRITTEN , null , statistics );
491495 break ;
492496 case REASON_UNSPECIFIED :
493497 default :
@@ -497,7 +501,7 @@ private void processWriteAck(EnqueuedMessage message,
497501 }
498502 break ;
499503 case WRITTEN_IN_TX :
500- resultAck = new WriteAck (ack .getSeqNo (), WriteAck .State .WRITTEN_IN_TX , null );
504+ resultAck = new WriteAck (ack .getSeqNo (), WriteAck .State .WRITTEN_IN_TX , null , statistics );
501505 break ;
502506 default :
503507 message .getFuture ().completeExceptionally (
@@ -519,5 +523,6 @@ private void closeDueToError(Status status, Throwable th) {
519523 protected void onStop () {
520524 logger .debug ("[{}] Session {} onStop called" , streamId , sessionId );
521525 }
526+
522527 }
523528}
0 commit comments