Re: "PANIC: could not open critical system index 2662" - twice
Kirk Wolak <wolakk@gmail.com>
From: Kirk Wolak <wolakk@gmail.com>
To: Evgeny Morozov <postgresql3@realityexists.net>
Cc: Thomas Munro <thomas.munro@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, PostgreSQL General <pgsql-general@postgresql.org>
Date: 2023-05-11T23:00:03Z
Lists: pgsql-general
On Wed, May 10, 2023 at 9:32 AM Evgeny Morozov < postgresql3@realityexists.net> wrote: > On 10/05/2023 6:39 am, Kirk Wolak wrote: > > It could be as simple as creating temp tables in the other database (since > I believe pg_class was hit). > > We do indeed create temp tables, both in other databases and in the ones > being tested. (We also create non-temp tables there.) > > > Also, not sure if the OP has a set of things done after he creates the DB > that may help? > > Basically we read rows from the source database, create some partitions of > tables in the target database, insert into a temp table there using BULK > COPY, then using a regular INSERT copy from the temp tables to the new > partitions. > > > Now that the probem has been reproduced and understood by the PG > developers, could anyone explain why PG crashed entirely with the "PANIC" > error back in April when only specific databases were corrupted, not any > global objects necesary for PG to run? And why did it not crash with the > "PANIC" on this occasion? > I understand the question as: Why would it PANIC on non-system data corruption, but not on system data corruption? To which my guess is: Because System Data Corruption, on startup is probably a use case, and we want to report, and come up as much as possible. Whereas the OTHER code did a PANIC simply because it was BOTH unexpected, and NOT Where it was in a place it could move forward. Meaning it had no idea if it read in bad data, or if it CREATED the bad data. As a programmer, you will find much more robust code on startup checking than in the middle of doing something else. But just a guess. Someone deeper into the code might explain it better. And you COULD go dig through the source to compare the origination of the error messages? Kirk...
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Handle DROP DATABASE getting interrupted
- f66403749df7 15.4 landed
- 1c38e7ae17b6 11.21 landed
- 034a9fcd2bb8 12.16 landed
- 81ce000067e3 13.12 landed
- d11efe830385 14.9 landed
- a4b4cc1d60f7 16.0 landed
- c66a7d75e652 17.0 landed
-
Remove the restriction that the relmap must be 512 bytes.
- d8cd0c6c95c0 16.0 cited