Re: BUG #15896: pg_upgrade from 10-or-earlier: TRAP: FailedAssertion(»!(metad->btm_version >= 3)«
От | Peter Geoghegan |
---|---|
Тема | Re: BUG #15896: pg_upgrade from 10-or-earlier: TRAP: FailedAssertion(»!(metad->btm_version >= 3)« |
Дата | |
Msg-id | CAH2-Wzmj6pz98qZ6+Ro-=tHvyBJ6q0yxHV8QLOr6O0mE20Nw9Q@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: BUG #15896: pg_upgrade from 10-or-earlier: TRAP: FailedAssertion(»!(metad->btm_version >= 3)« (Alvaro Herrera <alvherre@2ndquadrant.com>) |
Ответы |
Re: BUG #15896: pg_upgrade from 10-or-earlier: TRAP: FailedAssertion(»!(metad->btm_version >= 3)«
Re: BUG #15896: pg_upgrade from 10-or-earlier: TRAP: FailedAssertion(»!(metad->btm_version >= 3)« |
Список | pgsql-bugs |
On Fri, Jul 5, 2019 at 8:49 AM Alvaro Herrera <alvherre@2ndquadrant.com> wrote: > > TRAP: FailedAssertion(»!(metad->btm_version >= 3)«, Datei: > > »/build/postgresql-12-3URvLF/postgresql-12-12~beta2/build/../src/backend/access/nbtree/nbtpage.c«, > > Zeile: 665) > > Seems that _bt_getrootheight is too optimistic about the metapage > version it'll find. I suppose this could be handled by just not caching > the metapage if it is of the old version ... or maybe by calling > _bt_upgrademetapage(). The problem here predates v12 -- the call to _bt_cachemetadata() was added to _bt_getrootheight() by commit 0a64b45152b, which went into v11. My commit dd299df8189 added a new assertion that fails, but that's just a symptom -- I changed the code in _bt_getrootheight() to use a BTMetaPageData pointer to shared memory (i.e. a pointer to the authoritative version), rather than using the newly-out-of-sync cached version. It shouldn't be out-of-sync at all. _bt_getrootheight() is mostly just something that exists for the planner, so it has no business calling _bt_cachemetadata(), which will "upgrade" the cached metadata image from version 2 to version 3 if it happens to be on version 2. How can it be okay to upgrade the cached version without also upgrading the on-disk/shared_buffers version? This bug was hiding in plain sight. -- Peter Geoghegan
В списке pgsql-bugs по дате отправления: