Hello Robert, 31.03.2023 23:00, Robert Haas wrote:
That looks like a reasonable fix but I can't reproduce the problem locally. I thought the reason why that machine sees the problem might be that it uses -DRELCACHE_FORCE_RELEASE, but I tried that option here and the tests still pass. Anyone ideas how to reproduce?
I've managed to reproduce it using the following script: for ((i=1;i<=10;i++)); do echo "iteration $i" echo " CREATE ROLE sub_user; CREATE SUBSCRIPTION testsub CONNECTION 'dbname=db' PUBLICATION testpub WITH (connect = false); ALTER SUBSCRIPTION testsub ENABLE; DROP SUBSCRIPTION testsub; SELECT pg_sleep(0.001); DROP ROLE sub_user; " | psql psql -c "ALTER SUBSCRIPTION testsub DISABLE;" psql -c "ALTER SUBSCRIPTION testsub SET (slot_name = NONE);" psql -c "DROP SUBSCRIPTION testsub;" grep 'TRAP' server.log && break done iteration 3 CREATE ROLE ... ALTER SUBSCRIPTION WARNING: terminating connection because of crash of another server process DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because ano ther server process exited abnormally and possibly corrupted shared memory. HINT: In a moment you should be able to reconnect to the database and repeat your command. server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. connection to server was lost TRAP: failed Assert("IsTransactionState()"), File: "catcache.c", Line: 1208, PID: 1001242 Best regards, Alexander