diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index 224cbb32ba..8399683569 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -871,6 +871,9 @@ ExecHashTableDestroy(HashJoinTable hashtable)
 		}
 	}
 
+	/* Also, free up accessors to shared tuplestores if any */
+	ExecParallelHashCloseBatchAccessors(hashtable);
+
 	/* Release working memory (batchCxt is a child, so it goes away too) */
 	MemoryContextDelete(hashtable->hashCxt);
 
@@ -2991,6 +2994,7 @@ ExecParallelHashCloseBatchAccessors(HashJoinTable hashtable)
 		sts_end_parallel_scan(hashtable->batches[i].outer_tuples);
 	}
 	pfree(hashtable->batches);
+	hashtable->nbatch = 0;
 	hashtable->batches = NULL;
 }
 
