[pgpool-general: 7426] Can logical replication be used with pgpool?

Gunnar Morling gunnar at hibernate.org
Mon Mar 1 23:27:30 JST 2021


Hi,

For Debezium [1], a tool for change data capture, we've received the
request to test streaming changes from Postgres via pgpool [2]. While
Debezium can successfully connect via JDBC and obtain an initial
snapshot of the data, streaming changes via logical replication fails,
the replication stream seems not to be propagated through pgpool (see
below for the exception).

Is this expected and logical replication cannot be used with pgpool,
or is there some kind of configuration that needs to be applied to
pgpool in order to use it with clients like Debezium?

Thanks a lot for any pointers,

--Gunnar

[1] https://debezium.io/
[2] https://issues.redhat.com/browse/DBZ-2803


------ Exception below ------
connect_1    | Caused by: org.postgresql.util.PSQLException: Database
connection failed when writing to copy
connect_1    | at
org.postgresql.core.v3.QueryExecutorImpl.flushCopy(QueryExecutorImpl.java:1080)
connect_1    | at
org.postgresql.core.v3.CopyDualImpl.flushCopy(CopyDualImpl.java:28)
connect_1    | at
org.postgresql.core.v3.replication.V3PGReplicationStream.updateStatusInternal(V3PGReplicationStream.java:193)
connect_1    | at
org.postgresql.core.v3.replication.V3PGReplicationStream.timeUpdateStatus(V3PGReplicationStream.java:184)
connect_1    | at
org.postgresql.core.v3.replication.V3PGReplicationStream.readInternal(V3PGReplicationStream.java:126)
connect_1    | at
org.postgresql.core.v3.replication.V3PGReplicationStream.readPending(V3PGReplicationStream.java:80)
connect_1    | at
io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.readPending(PostgresReplicationConnection.java:462)
connect_1    | at
io.debezium.connector.postgresql.PostgresStreamingChangeEventSource.searchWalPosition(PostgresStreamingChangeEventSource.java:271)
connect_1    | at
io.debezium.connector.postgresql.PostgresStreamingChangeEventSource.execute(PostgresStreamingChangeEventSource.java:131)
connect_1    | ... 7 more
connect_1    | Caused by: java.net.SocketException: Broken pipe (Write failed)
connect_1    | at
java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
connect_1    | at
java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110)
connect_1    | at
java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:150)
connect_1    | at
java.base/java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
connect_1    | at
java.base/java.io.BufferedOutputStream.flush(BufferedOutputStream.java:142)
connect_1    | at org.postgresql.core.PGStream.flush(PGStream.java:592)
connect_1    | at
org.postgresql.core.v3.QueryExecutorImpl.flushCopy(QueryExecutorImpl.java:1078)
connect_1    | ... 15 more


More information about the pgpool-general mailing list