From d49ac072a9f38bd69e011aac2c7a87fea492fb60 Mon Sep 17 00:00:00 2001
From: Georgiy Lebedev <g.lebedev@tarantool.org>
Date: Mon, 9 Jan 2023 14:47:59 +0300
Subject: [PATCH] iproto: do not record empty responses in flight recorder

If the output buffer savepoint passed to `tx_end_msg` is the same as the
connection's current writing position, it means the response is empty, so
it makes no sense to record it.

Needed for #7901

NO_CHANGELOG=refactoring
NO_DOC=refactoring
NO_TEST=refactoring
---
 src/box/iproto.cc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/box/iproto.cc b/src/box/iproto.cc
index 62d3f01d51..246749e2e5 100644
--- a/src/box/iproto.cc
+++ b/src/box/iproto.cc
@@ -1917,9 +1917,10 @@ tx_end_msg(struct iproto_msg *msg, struct obuf_svp *svp)
 		msg->stream->txn = txn_detach();
 	}
 	msg->connection->iproto_thread->tx.requests_in_progress--;
-	/* Log response to the flight recorder. */
 	struct obuf *out = msg->connection->tx.p_obuf;
-	flightrec_write_response(out, svp);
+	if (msg->connection->tx.p_obuf->used != svp->used)
+		/* Log response to the flight recorder. */
+		flightrec_write_response(out, svp);
 }
 
 /**
-- 
GitLab