On Sat, Apr 07, 2018 at 07:40:11PM -0400, Peter Eisentraut wrote:
> Committed with those changes.

Since commit 039eb6e added logical replication support for TRUNCATE, logical
apply of the TRUNCATE fails if it chooses a parallel index build:

cat >/tmp/most_parallel.conf <<EOCONF; make -C src/test/subscription check 
TEMP_CONFIG=/tmp/most_parallel.conf
# like n...@leadboat.com buildfarm members
log_line_prefix = '%m [%p:%l] %q%a '
log_connections = 'true'
log_disconnections = 'true'
log_statement = 'all'
fsync = off
authentication_timeout = '600s'
wal_sender_timeout = '18000s'
# not on v12
backtrace_functions = 'quickdie, GetTransactionSnapshot'
# as much parallelism as we can get
log_statement = all
wal_level = minimal
max_wal_senders = 0
force_parallel_mode = regress
min_parallel_index_scan_size = 0
min_parallel_table_scan_size = 0
parallel_setup_cost = 0
parallel_tuple_cost = 0
EOCONF

Symptom in src/test/subscription/tmp_check/log/010_truncate_subscriber.log:

2020-12-19 17:54:04.669 PST [3629509:1] LOG:  logical replication apply worker 
for subscription "sub1" has started
2020-12-19 17:54:04.682 PST [3629509:2] ERROR:  cannot take query snapshot 
during a parallel operation
2020-12-19 17:54:04.682 PST [3629509:3] BACKTRACE:  
        postgres: subscriber: logical replication worker for subscription 16411 
(GetTransactionSnapshot+0x168) [0x951ce8]
        postgres: subscriber: logical replication worker for subscription 16411 
(InitializeParallelDSM+0x16) [0x52cf86]
        postgres: subscriber: logical replication worker for subscription 16411 
(btbuild+0x26a) [0x50905a]
        postgres: subscriber: logical replication worker for subscription 16411 
(index_build+0x14b) [0x569c1b]
        postgres: subscriber: logical replication worker for subscription 16411 
(reindex_index+0x19a) [0x56caea]
        postgres: subscriber: logical replication worker for subscription 16411 
(reindex_relation+0xc0) [0x56d090]
        postgres: subscriber: logical replication worker for subscription 16411 
(ExecuteTruncateGuts+0x376) [0x62f0d6]
        postgres: subscriber: logical replication worker for subscription 16411 
() [0x78d592]
        postgres: subscriber: logical replication worker for subscription 16411 
(ApplyWorkerMain+0x5ab) [0x78e4eb]
        postgres: subscriber: logical replication worker for subscription 16411 
(StartBackgroundWorker+0x23f) [0x75522f]
        postgres: subscriber: logical replication worker for subscription 16411 
() [0x762a6d]
        postgres: subscriber: logical replication worker for subscription 16411 
() [0x7635ee]
        /lib64/libpthread.so.0(+0xf630) [0x7fe081e97630]
        /lib64/libc.so.6(__select+0x13) [0x7fe0805c0983]
        postgres: subscriber: logical replication worker for subscription 16411 
() [0x4887ac]
        postgres: subscriber: logical replication worker for subscription 16411 
(PostmasterMain+0x1118) [0x764c88]
        postgres: subscriber: logical replication worker for subscription 16411 
(main+0x6f2) [0x48aae2]
        /lib64/libc.so.6(__libc_start_main+0xf5) [0x7fe0804ed555]
        postgres: subscriber: logical replication worker for subscription 16411 
() [0x48ab49]
2020-12-19 17:54:04.683 PST [3629353:5] LOG:  background worker "logical 
replication worker" (PID 3629509) exited with exit code 1

(To see that particular failure at commit 039eb6e, one would need to
cherry-pick f90e80b to avoid an earlier failure.  One would also modify
PostgresNode to inject the parallelism settings, because PostgresNode did not
support TEMP_CONFIG in those days.)


Reply via email to