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-cd6029e85...@enterprisedb.com Discussion: https://postgr.es/m/caa4ek1+wyn6zpahukclorewnx75mg0xhmwcfhvjqm2kurze...@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/c981d9145deae067bc67bc8f8bcd68b300ece3fe Modified Files -------------- src/backend/replication/logical/worker.c | 73 ++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 26 deletions(-)