postgres.git / summary / log / commit / refs

commit    b6090ed96b60374560251c6f3ec65309c9ce4b96
Author:   Masahiko Sawada <msawada@postgresql.org>
Date:     Tue Aug 19 19:11:37 2025 +0000
First released in: 13.23, 14.20, 15.15, 16.11, 17.7, 18.0

    Add CHECK_FOR_INTERRUPTS in contrib/pg_buffercache functions.
    
    This commit adds CHECK_FOR_INTERRUPTS to loops iterating over shared
    buffers in several pg_buffercache functions, allowing them to be
    interrupted during long-running operations.
    
    Backpatch to all supported versions. Add CHECK_FOR_INTERRUPTS to the
    loop in pg_buffercache_pages() in all supported branches, and to
    pg_buffercache_summary() and pg_buffercache_usage_counts() in version
    16 and newer.
    
    Author: SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
    Discussion: https://postgr.es/m/CAHg+QDcejeLx7WunFT3DX6XKh1KshvGKa8F5au8xVhqVvvQPRw@mail.gmail.com
    Backpatch-through: 13


contrib/pg_buffercache/pg_buffercache_pages.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contrib/pg_buffercache/pg_buffercache_pages.c b/contrib/pg_buffercache/pg_buffercache_pages.c index 3ae0a018e10..54bcd5799a3 100644 --- a/contrib/pg_buffercache/pg_buffercache_pages.c +++ b/contrib/pg_buffercache/pg_buffercache_pages.c @@ -153,6 +153,8 @@ pg_buffercache_pages(PG_FUNCTION_ARGS) BufferDesc *bufHdr; uint32 buf_state; + CHECK_FOR_INTERRUPTS(); + bufHdr = GetBufferDescriptor(i); /* Lock each buffer header before inspecting. */ buf_state = LockBufHdr(bufHdr); @@ -266,6 +268,8 @@ pg_buffercache_summary(PG_FUNCTION_ARGS) BufferDesc *bufHdr; uint32 buf_state; + CHECK_FOR_INTERRUPTS(); + /* * This function summarizes the state of all headers. Locking the * buffer headers wouldn't provide an improved result as the state of @@ -326,6 +330,8 @@ pg_buffercache_usage_counts(PG_FUNCTION_ARGS) uint32 buf_state = pg_atomic_read_u32(&bufHdr->state); int usage_count; + CHECK_FOR_INTERRUPTS(); + usage_count = BUF_STATE_GET_USAGECOUNT(buf_state); usage_counts[usage_count]++; [parent: 288a817bcb04]