Fix HNSW insert and vacuum race

This commit is contained in:
Bhagyesh Chaturvedi
2026-06-23 06:00:23 +00:00
parent 0dbc1a27c0
commit ffe28bb954

View File

@@ -584,13 +584,16 @@ MarkDeleted(HnswVacuumState * vacuumstate)
BufferAccessStrategy bas = vacuumstate->bas; BufferAccessStrategy bas = vacuumstate->bas;
/* /*
* Wait for index scans to complete. Scans before this point may contain * Wait for index scans and inserts to complete. Scans and inserts before
* tuples about to be deleted. Scans after this point will not, since the * this point may contain tuples about to be deleted. Scans and inserts
* graph has been repaired. * after this point will not, since the graph has been repaired.
*/ */
LockPage(index, HNSW_SCAN_LOCK, ExclusiveLock); LockPage(index, HNSW_SCAN_LOCK, ExclusiveLock);
UnlockPage(index, HNSW_SCAN_LOCK, ExclusiveLock); UnlockPage(index, HNSW_SCAN_LOCK, ExclusiveLock);
LockPage(index, HNSW_UPDATE_LOCK, ExclusiveLock);
UnlockPage(index, HNSW_UPDATE_LOCK, ExclusiveLock);
while (BlockNumberIsValid(blkno)) while (BlockNumberIsValid(blkno))
{ {
Buffer buf; Buffer buf;