pgsql: Correctly handle relcache invalidation corner case during logica

Поиск
Список
Период
Сортировка
От Andres Freund
Тема pgsql: Correctly handle relcache invalidation corner case during logica
Дата
Msg-id E1Y8dn4-0003cQ-Ka@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Correctly handle relcache invalidation corner case during logical decoding.

When using a historic snapshot for logical decoding it can validly
happen that a relation that's in the relcache isn't visible to that
historic snapshot.  E.g. if a newly created relation is referenced in
the query that uses the SQL interface for logical decoding and a
sinval reset occurs.

The earlier commit that fixed the error handling for that corner case
already improves the situation as a ERROR is better than hitting an
assertion... But it's obviously not good enough.  So additionally
allow that case without an error if a historic snapshot is set up -
that won't allow an invalid entry to stay in the cache because it's a)
already marked invalid and will thus be rebuilt during the next access
b) the syscaches will be reset at the end of decoding.

There might be prettier solutions to handle this case, but all that we
could think of so far end up being much more complex than this quite
simple fix.

This fixes the assertion failures reported by the buildfarm (markhor,
tick, leech) after the introduction of new regression tests in
89fd41b390a4. The failure there weren't actually directly caused by
CLOBBER_CACHE_ALWAYS but the extraordinary long runtimes due to it
lead to sinval resets triggering the behaviour.

Discussion: 22459.1418656530@sss.pgh.pa.us

Backpatch to 9.4 where logical decoding was introduced.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/3fabed070530271771c2345dd7f60b0b28f0aae3

Modified Files
--------------
src/backend/utils/cache/relcache.c |   12 ++++++++++++
1 file changed, 12 insertions(+)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: pgsql: Document that Perl's Tie might add a trailing newline
Следующее
От: Andres Freund
Дата:
Сообщение: pgsql: Improve relcache invalidation handling of currently invisible re