diff --git a/src/backend/storage/ipc/standby.c b/src/backend/storage/ipc/standby.c
index 7db86f7885..28d1c152bf 100644
--- a/src/backend/storage/ipc/standby.c
+++ b/src/backend/storage/ipc/standby.c
@@ -1283,6 +1283,9 @@ LogStandbySnapshot(void)
 	 */
 	running = GetRunningTransactionData();
 
+	/* GetRunningTransactionData() acquired XidGenLock, we must release it */
+	LWLockRelease(XidGenLock);
+
 	/*
 	 * GetRunningTransactionData() acquired ProcArrayLock, we must release it.
 	 * For Hot Standby this can be done before inserting the WAL record
@@ -1304,9 +1307,6 @@ LogStandbySnapshot(void)
 	if (wal_level >= WAL_LEVEL_LOGICAL)
 		LWLockRelease(ProcArrayLock);
 
-	/* GetRunningTransactionData() acquired XidGenLock, we must release it */
-	LWLockRelease(XidGenLock);
-
 	return recptr;
 }
 
