diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index 37a030b5f5e4e1536c44227672be05ffcff88537..38f7a3f1c36bccd290a76dab00a33fc4a2fdbe27 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -837,7 +837,7 @@ WalSndLoop(void) if (pq_is_send_pending()) wakeEvents |= WL_SOCKET_WRITEABLE; - else + else if (MyWalSnd->sendKeepalive) { WalSndKeepalive(output_message); /* Try to flush pending output to the client */ diff --git a/src/include/replication/walsender_private.h b/src/include/replication/walsender_private.h index 66234cd8b5925d81b535522983fdc75da1d40c75..45cd7444cdfc8558bf86e7afe275d721ee95b245 100644 --- a/src/include/replication/walsender_private.h +++ b/src/include/replication/walsender_private.h @@ -37,6 +37,7 @@ typedef struct WalSnd XLogRecPtr sentPtr; /* WAL has been sent up to this point */ bool needreload; /* does currently-open file need to be * reloaded? */ + bool sendKeepalive; /* do we send keepalives on this connection? */ /* * The xlog locations that have been written, flushed, and applied by