diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index 18919724af4a0c018e88d1405c6b4fc074a0a496..b5116703578ca96f6d781c5465664bd3cfa9988d 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -261,6 +261,7 @@ logicalrep_worker_launch(Oid dbid, Oid subid, const char *subname, Oid userid)
 	/* Bail if not found */
 	if (worker == NULL)
 	{
+		LWLockRelease(LogicalRepWorkerLock);
 		ereport(WARNING,
 				(errcode(ERRCODE_CONFIGURATION_LIMIT_EXCEEDED),
 				 errmsg("out of logical replication workers slots"),