Re: Failures in constraints regression test, "read only 0 of 8192 bytes"
Heikki Linnakangas <hlinnaka@iki.fi>
From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Alexander Lakhin <exclusion@gmail.com>,
Thomas Munro <thomas.munro@gmail.com>
Cc: Tomas Vondra <tomas.vondra@enterprisedb.com>,
Ronan Dunklau <ronan.dunklau@aiven.io>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-06-20T22:52:37Z
Lists: pgsql-hackers
Attachments
- 0001-Fix-relcache-invalidation-when-relfilelocator-is-upd.patch (text/x-patch) patch 0001
On 19/06/2024 23:00, Alexander Lakhin wrote: > Please look at a new anomaly, that I've discovered in master. > > ... > > triggers a segfault: > 2024-06-19 19:22:49.009 UTC [1607210:6] LOG: server process (PID 1607671) was terminated by signal 11: Segmentation fault > > ... > > server.log might also contain: > 2024-06-19 19:25:38.060 UTC [1618682:5] psql ERROR: could not read blocks 3..3 in file "base/28531/28840": read only 0 > of 8192 bytes Thanks for the report! I was not able to reproduce the segfault, but I do see the "could not read blocks" error very quickly with the script. In commit af0e7deb4a, I removed the call to RelationCloseSmgr() from RelationCacheInvalidate(). I thought it was no longer needed, because we no longer free the underlying SmgrRelation. However, it meant that if the relfilenode of the relation was changed, the relation keeps pointing to the SMgrRelation of the old relfilenode. So we still need the RelationCloseSmgr() call, in case the relfilenode has changed. Per attached patch. -- Heikki Linnakangas Neon (https://neon.tech)
Commits
-
Fix relcache invalidation when relfilelocator is updated
- 441ef5e1badc 17.0 landed
-
Don't destroy SMgrRelations at relcache invalidation
- af0e7deb4a1c 17.0 landed
-
Add a new slot sync worker to synchronize logical slots.
- 93db6cbda037 17.0 cited