Re: Report bytes and transactions actually sent downtream
Ashutosh Sharma <ashu.coek88@gmail.com>
From: Ashutosh Sharma <ashu.coek88@gmail.com>
To: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Cc: shveta malik <shveta.malik@gmail.com>,
Amit Kapila <amit.kapila16@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, "Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com>
Date: 2025-09-23T12:58:18Z
Lists: pgsql-hackers
> 0001 is the previous patch > 0002 changes addressing your and Bertrand's comments. > @@ -1573,6 +1573,13 @@ WalSndWriteData(LogicalDecodingContext *ctx, XLogRecPtr lsn, TransactionId xid, /* output previously gathered data in a CopyData packet */ pq_putmessage_noblock(PqMsg_CopyData, ctx->out->data, ctx->out->len); + /* + * If output plugin maintains statistics, update the amount of data sent + * downstream. + */ + if (ctx->stats) + ctx->stats->sentBytes += ctx->out->len + 1; /* +1 for the 'd' */ + Just a small observation: I think it’s actually pq_flush_if_writable() that writes the buffered data to the socket, not pq_putmessage_noblock (which is actually gathering data in the buffer and not sending). So it might make more sense to increment the sent pointer after the call to pq_flush_if_writable(). Should we also consider - pg_hton32((uint32) (len + 4)); -- the additional 4 bytes of data added to the send buffer. -- With Regards, Ashutosh Sharma.