Thread: BUG #16771: Server process killed by signal 9, after recovery drop tablespace failed
BUG #16771: Server process killed by signal 9, after recovery drop tablespace failed
From
PG Bug reporting form
Date:
The following bug has been logged on the website: Bug reference: 16771 Logged by: Bo Chen Email address: bchen90@163.com PostgreSQL version: 11.8 Operating system: euleros v2r7 x86_64 Description: hi I encounter a problem of drop tablespace failed for reasion 'tablespace is not empty'. The problem occurs in the following scenarios: I start a transaction to create some table located in an alreaedy created tablespace, before the transaction commits, the process of creating data is killed by somebady with signal 9. when the database recoveried I try to drop the tablesapce, it failed for 'tablespace is not empty'. Does this bug need to be resolved ? regards, ChenBo Following is the scenarios: postgres=# start transaction; START TRANSACTION postgres=# create table test1(id text) tablespace test; create table test2(id text) tablespace test; create table test3(id text) tablespace test; create table test4(id text) tablespace test; create table test5(id text) tablespace test; create table test6(id text) tablespace test; create table test7(id text) tablespace test; create table test8(id text) tablespace test; create table test9(id text) tablespace test;CREATE TABLE postgres=# CREATE TABLE postgres=# CREATE TABLE postgres=# CREATE TABLE postgres=# CREATE TABLE postgres=# CREATE TABLE postgres=# CREATE TABLE postgres=# CREATE TABLE postgres=# CREATE TABLE postgres=# 2020-12-11 19:10:54.408 UTC [2909] LOG: server process (PID 2921) was terminated by signal 9: Killed [postgres@host-192-168-0-7 data]$ psql -d postgres -U postgres -p 5432 psql (11.8) Type "help" for help. postgres=# drop tablespace test; 2020-12-11 19:11:36.518 UTC [3299] ERROR: tablespace "test" is not empty 2020-12-11 19:11:36.518 UTC [3299] STATEMENT: drop tablespace test; ERROR: tablespace "test" is not empty postgres=# select * from test1; 2020-12-11 19:11:48.684 UTC [3299] ERROR: relation "test1" does not exist at character 15 2020-12-11 19:11:48.684 UTC [3299] STATEMENT: select * from test1; ERROR: relation "test1" does not exist LINE 1: select * from test1; ^ postgres=#
Re: BUG #16771: Server process killed by signal 9, after recovery drop tablespace failed
From
Kyotaro Horiguchi
Date:
Hello. At Fri, 11 Dec 2020 11:34:47 +0000, PG Bug reporting form <noreply@postgresql.org> wrote in > The following bug has been logged on the website: > > Bug reference: 16771 > Logged by: Bo Chen > Email address: bchen90@163.com > PostgreSQL version: 11.8 > Operating system: euleros v2r7 x86_64 > Description: > > hi > > I encounter a problem of drop tablespace failed for reasion 'tablespace is > not empty'. The problem occurs in the following scenarios: > > I start a transaction to create some table located in an alreaedy created > tablespace, before the transaction commits, the process of creating data is > killed by somebady with signal 9. when the database recoveried I try to drop > the tablesapce, it failed for 'tablespace is not empty'. > > Does this bug need to be resolved ? It seems to be a known behavior that hasn't been fixed for a long time. It comes from a mechanism in PostgreSQL called "pending deletes", by which deletion of underlynig files is delayed until commit/abort time. Since the "to-be-deleted at abort" infomation is not persistent, it should be lost if the server crashed before the transaction ends. I happend to be proposing a patch [*1] for another issue and I realized that the approach could solve this issue as well. *1: https://www.postgresql.org/message-id/20201225.091252.53717619425847881.horikyota.ntt%40gmail.com regards. -- Kyotaro Horiguchi NTT Open Source Software Center