Improve the code to decide and process the apply action.
authorAmit Kapila <akapila@postgresql.org>
Tue, 17 Jan 2023 05:58:22 +0000 (11:28 +0530)
committerAmit Kapila <akapila@postgresql.org>
Tue, 17 Jan 2023 05:58:22 +0000 (11:28 +0530)
commitc981d9145deae067bc67bc8f8bcd68b300ece3fe
treec53b6a7684431b1d849eac41bcd161264df8b662
parent4f985aba6963b8669325e1c58585d04257977fda
Improve the code to decide and process the apply action.

The code that decides the apply action missed to handle non-transactional
messages and we didn't catch it in our testing as currently such messages
are simply ignored by the apply worker. This was introduced by changes in
commit 216a784829.

While testing this, I noticed that we forgot to reset stream_xid after
processing the stream stop message which could also result in the wrong
apply action after the fix for non-transactional messages.

In passing, change assert to elog for unexpected apply action in some of
the routines so as to catch the problems in the production environment, if
any.

Reported-by: Tomas Vondra
Author: Amit Kapila
Reviewed-by: Tomas Vondra, Sawada Masahiko, Hou Zhijie
Discussion: https://postgr.es/m/984ff689-adde-9977-affe-cd6029e850be@enterprisedb.com
Discussion: https://postgr.es/m/CAA4eK1+wyN6zpaHUkCLorEWNx75MG0xhMwcFhvjqm2KURZEAGw@mail.gmail.com
src/backend/replication/logical/worker.c