Re: BUG #18616: Long-running hash index build can not be interrupted
Alexander Lakhin <exclusion@gmail.com>
From: Alexander Lakhin <exclusion@gmail.com>
To: Pavel Borisov <pashkin.elfe@gmail.com>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2024-09-13T18:00:00Z
Lists: pgsql-bugs
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Allow _h_indexbuild() to be interrupted.
- fae55f0bb385 18.0 landed
- 418c6a2c72d2 17.0 landed
- e0857898b87b 15.9 landed
- d23109f4bd65 16.5 landed
- b49013f2e86a 14.14 landed
- b27215dbb42b 13.17 landed
- 813ade54806c 12.21 landed
Hi Pavel, 13.09.2024 17:51, Pavel Borisov wrote: > > > Reproduced on all supported versions. > > I was unable to reproduce it on my machine with these settings. Tried statement timeouts 30-120s. Index build appears > to be in interruptible phase on my system. > But could you check in your environment with the following patch? > Thank you for paying attention to this! Yes, the patch works for me. The query is interrupted as expected. But I wonder, why don't you the see same? Could you please show the server log, with the following change applied and log_statement = 'all' backtrace_functions = 'ProcessInterrupts' ? --- a/src/backend/access/hash/hashsort.c +++ b/src/backend/access/hash/hashsort.c @@ -125,6 +125,7 @@ _h_indexbuild(HSpool *hspool, Relation heapRel) uint32 hashkey = 0; #endif +elog(LOG, "_h_indexbuild() start"); tuplesort_performsort(hspool->sortstate); while ((itup = tuplesort_getindextuple(hspool->sortstate, true)) != NULL) @@ -151,4 +152,5 @@ _h_indexbuild(HSpool *hspool, Relation heapRel) pgstat_progress_update_param(PROGRESS_CREATEIDX_TUPLES_DONE, ++tups_done); } +elog(LOG, "_h_indexbuild() end; tups_done: %ld", tups_done); } Best regards, Alexander