Commit f8795d2e authored by Michael Paquier's avatar Michael Paquier

Fix oversight from 9e149c84 with spin-lock handling

Calling an external function while a pin-lock is held is a bad idea as
those are designed to be short-lived.  The stress of a first commit into
a large git history may contribute to that.

Reported-by: Andres Freund
Discussion: https://postgr.es/m/20180611164952.vmxdpdpirdtkdsz6@alap3.anarazel.de
parent 69025c5a
......@@ -999,6 +999,7 @@ ReplicationSlotReserveWal(void)
while (true)
{
XLogSegNo segno;
XLogRecPtr restart_lsn;
/*
* For logical slots log a standby snapshot and start logical decoding
......@@ -1016,8 +1017,9 @@ ReplicationSlotReserveWal(void)
XLogRecPtr flushptr;
/* start at current insert position */
restart_lsn = GetXLogInsertRecPtr();
SpinLockAcquire(&slot->mutex);
slot->data.restart_lsn = GetXLogInsertRecPtr();
slot->data.restart_lsn = restart_lsn;
SpinLockRelease(&slot->mutex);
/* make sure we have enough information to start */
......@@ -1028,8 +1030,9 @@ ReplicationSlotReserveWal(void)
}
else
{
restart_lsn = GetRedoRecPtr();
SpinLockAcquire(&slot->mutex);
slot->data.restart_lsn = GetRedoRecPtr();
slot->data.restart_lsn = restart_lsn;
SpinLockRelease(&slot->mutex);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment