Re: Extension Enhancement: Buffer Invalidation in pg_buffercache - Mailing list pgsql-hackers

From jian he
Subject Re: Extension Enhancement: Buffer Invalidation in pg_buffercache
Date
Msg-id CACJufxHe9CZQD0orxhBJMi8VT9iJzmJ7Eodbnkd4LqEOQD7x7A@mail.gmail.com
Whole thread Raw
In response to Re: Extension Enhancement: Buffer Invalidation in pg_buffercache  (Japin Li <japinli@hotmail.com>)
Responses Re: Extension Enhancement: Buffer Invalidation in pg_buffercache
List pgsql-hackers

the following will also crash. no idea why.
begin;
    select count(*) from onek;
    select relpages from pg_class where relname = 'onek'; --queryA

    SELECT count(*) FROM pg_buffercache WHERE relfilenode = pg_relation_filenode('onek'::regclass); --queryB

    insert into onek values(default);
   
    select count(pg_buffercache_invalidate(bufferid)) from
    pg_buffercache where relfilenode = pg_relation_filenode('onek'::regclass);

---------------------------------
queryA returns 35, queryB returns 37.
----------------------------------
crash info:
test_dev=*#     insert into onek values(default);
INSERT 0 1
test_dev=*#     select count(pg_buffercache_invalidate(bufferid)) from
    pg_buffercache where relfilenode = pg_relation_filenode('onek'::regclass);
TRAP: failed Assert("resarr->nitems < resarr->maxitems"), File: "../../Desktop/pg_sources/main/postgres/src/backend/utils/resowner/resowner.c", Line: 275, PID: 1533312
postgres: jian test_dev [local] SELECT(ExceptionalCondition+0xa1)[0x55fc8f8d14e1]
postgres: jian test_dev [local] SELECT(+0x9e7ab3)[0x55fc8f915ab3]
postgres: jian test_dev [local] SELECT(ResourceOwnerRememberBuffer+0x1d)[0x55fc8f91696d]
postgres: jian test_dev [local] SELECT(+0x78ab17)[0x55fc8f6b8b17]
postgres: jian test_dev [local] SELECT(TryInvalidateBuffer+0x6d)[0x55fc8f6c507d]
/home/jian/postgres/pg16_test/lib/pg_buffercache.so(pg_buffercache_invalidate+0x3d)[0x7f2361837abd]
postgres: jian test_dev [local] SELECT(+0x57eebc)[0x55fc8f4acebc]
postgres: jian test_dev [local] SELECT(ExecInterpExprStillValid+0x3c)[0x55fc8f4a6e2c]
postgres: jian test_dev [local] SELECT(+0x5a0f16)[0x55fc8f4cef16]
postgres: jian test_dev [local] SELECT(+0x5a3588)[0x55fc8f4d1588]
postgres: jian test_dev [local] SELECT(+0x58f747)[0x55fc8f4bd747]
postgres: jian test_dev [local] SELECT(standard_ExecutorRun+0x1f0)[0x55fc8f4b29f0]
postgres: jian test_dev [local] SELECT(ExecutorRun+0x46)[0x55fc8f4b2d16]
postgres: jian test_dev [local] SELECT(+0x7eb3b0)[0x55fc8f7193b0]
postgres: jian test_dev [local] SELECT(PortalRun+0x1eb)[0x55fc8f71b7ab]
postgres: jian test_dev [local] SELECT(+0x7e8cf4)[0x55fc8f716cf4]
postgres: jian test_dev [local] SELECT(PostgresMain+0x134f)[0x55fc8f71869f]
postgres: jian test_dev [local] SELECT(+0x70f80c)[0x55fc8f63d80c]
postgres: jian test_dev [local] SELECT(PostmasterMain+0x1758)[0x55fc8f63f278]
postgres: jian test_dev [local] SELECT(main+0x27e)[0x55fc8f27067e]
/lib/x86_64-linux-gnu/libc.so.6(+0x29d90)[0x7f2361629d90]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80)[0x7f2361629e40]
postgres: jian test_dev [local] SELECT(_start+0x25)[0x55fc8f272bb5]
2023-07-04 16:56:13.088 CST [1532822] LOG:  server process (PID 1533312) was terminated by signal 6: Aborted
2023-07-04 16:56:13.088 CST [1532822] DETAIL:  Failed process was running: select count(pg_buffercache_invalidate(bufferid)) from
            pg_buffercache where relfilenode = pg_relation_filenode('onek'::regclass);
2023-07-04 16:56:13.088 CST [1532822] LOG:  terminating any other active server processes
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: 2023-07-04 16:56:13.091 CST [1533381] FATAL:  the database system is in recovery mode
Failed.
The connection to the server was lost. Attempting reset: Failed.


pgsql-hackers by date:

Previous
From: Daniel Gustafsson
Date:
Subject: Re: ALTER TABLE SET ACCESS METHOD on partitioned tables
Next
From: Japin Li
Date:
Subject: Re: Extension Enhancement: Buffer Invalidation in pg_buffercache