From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Don't use Asserts to check for violations of replication protoco |
Date: | 2021-06-12 16:59:33 |
Message-ID: | E1ls6yr-0007pj-9k@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Don't use Asserts to check for violations of replication protocol.
Using an Assert to check the validity of incoming messages is an
extremely poor decision. In a debug build, it should not be that easy
for a broken or malicious remote client to crash the logrep worker.
The consequences could be even worse in non-debug builds, which will
fail to make such checks at all, leading to who-knows-what misbehavior.
Hence, promote every Assert that could possibly be triggered by wrong
or out-of-order replication messages to a full test-and-ereport.
To avoid bloating the set of messages the translation team has to cope
with, establish a policy that replication protocol violation error
reports don't need to be translated. Hence, all the new messages here
use errmsg_internal(). A couple of old messages are changed likewise
for consistency.
Along the way, fix some non-idiomatic or outright wrong uses of
hash_search().
Most of these mistakes are new with the "streaming replication"
patch (commit 464824323), but a couple go back a long way.
Back-patch as appropriate.
Discussion: https://postgr.es/m/1719083.1623351052@sss.pgh.pa.us
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/fe6a20ce54cbbb6fcfe9f6675d563af836ae799a
Modified Files
--------------
src/backend/replication/logical/reorderbuffer.c | 2 +-
src/backend/replication/logical/worker.c | 118 +++++++++++++++++-------
2 files changed, 85 insertions(+), 35 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2021-06-12 17:29:45 | pgsql: Ensure pg_filenode_relation(0, 0) returns NULL. |
Previous Message | Andrew Dunstan | 2021-06-12 12:56:29 | pgsql: Fix new recovery test for use under msys |