diff --git a/src/backend/replication/logical/applyparallelworker.c b/src/backend/replication/logical/applyparallelworker.c
index 2e5914d5d9..4c52e94cc2 100644
--- a/src/backend/replication/logical/applyparallelworker.c
+++ b/src/backend/replication/logical/applyparallelworker.c
@@ -491,8 +491,10 @@ pa_allocate_worker(TransactionId xid)
 	}
 
 	winfo = pa_launch_parallel_worker();
-	if (!winfo)
+	if (!winfo) {
+		hash_destroy(ParallelApplyTxnHash);
 		return;
+	}
 
 	/* Create an entry for the requested transaction. */
 	entry = hash_search(ParallelApplyTxnHash, &xid, HASH_ENTER, &found);
