--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -525,6 +525,13 @@
 
 	ProcessProcSignalBarrier();
 
+	/*
+	 * A barrier callback that returned false wants to be retried, but our
+	 * latch is not set, so make sure we don't go back to sleep on the socket.
+	 */
+	if (ProcSignalBarrierPending)
+		SetLatch(MyLatch);
+
 	ExitOnAnyError = save_ExitOnAnyError;
 	whereToSendOutput = save_whereToSendOutput;
 }
