From 3169a60e5cc7b7c9f6866362b990c74fc49af0bd Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Tue, 1 Aug 2023 19:53:45 -0700 Subject: [PATCH] Restored interrupts [skip ci] --- src/hnswbuild.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/hnswbuild.c b/src/hnswbuild.c index cb9369b..6a4de17 100644 --- a/src/hnswbuild.c +++ b/src/hnswbuild.c @@ -84,6 +84,12 @@ HnswBuildAppendPage(Relation index, Buffer *buf, Page *page, GenericXLogState ** GenericXLogFinish(*state); UnlockReleaseBuffer(*buf); + /* Can take a while, so ensure we can interrupt */ + /* Needs to be called when no buffer locks are held */ + LockBuffer(newbuf, BUFFER_LOCK_UNLOCK); + CHECK_FOR_INTERRUPTS(); + LockBuffer(newbuf, BUFFER_LOCK_EXCLUSIVE); + /* Prepare new page */ *buf = newbuf; *state = GenericXLogStart(index); @@ -202,6 +208,10 @@ CreateNeighborPages(HnswBuildState * buildstate) GenericXLogState *state; Size neighborsz = HNSW_NEIGHBOR_TUPLE_SIZE(e->level, m); + /* Can take a while, so ensure we can interrupt */ + /* Needs to be called when no buffer locks are held */ + CHECK_FOR_INTERRUPTS(); + buf = ReadBufferExtended(index, forkNum, e->neighborPage, RBM_NORMAL, NULL); LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); state = GenericXLogStart(index);