On Thu, Dec 9, 2021 at 4:26 AM Greg Nancarrow <gregn4...@gmail.com> wrote:
> On Thu, Dec 9, 2021 at 6:57 AM Neha Sharma <neha.sha...@enterprisedb.com> > wrote: > > > > While testing the v7 patches, I am observing a crash with the below test > case. > > > > Test case: > > create tablespace tab location '<dir_path>/test_dir'; > > create tablespace tab1 location '<dir_path>/test_dir1'; > > create database test tablespace tab; > > \c test > > create table t( a int PRIMARY KEY,b text); > > CREATE OR REPLACE FUNCTION large_val() RETURNS TEXT LANGUAGE SQL AS > 'select array_agg(md5(g::text))::text from generate_series(1, 256) g'; > > insert into t values (generate_series(1,2000000), large_val()); > > alter table t set tablespace tab1 ; > > \c postgres > > create database test1 template test; > > alter database test set tablespace pg_default; > > alter database test set tablespace tab; > > \c test1 > > alter table t set tablespace tab; > > > > Logfile says: > > 2021-12-08 23:31:58.855 +04 [134252] PANIC: could not fsync file > "base/16386/4152": No such file or directory > > 2021-12-08 23:31:59.398 +04 [134251] LOG: checkpointer process (PID > 134252) was terminated by signal 6: Aborted > > > > I tried to reproduce the issue using your test scenario, but I needed > to reduce the amount of inserted data (so reduced 2000000 to 20000) > due to disk space. > I then consistently get an error like the following: > > postgres=# alter database test set tablespace pg_default; > ERROR: could not create file > "pg_tblspc/16385/PG_15_202111301/16386/36395": File exists > > (this only happens when the patch is used) > > Yes, I was also getting this, and moving further we get a crash when we alter the table of database test1. Below is the output of the test at my end. postgres=# create tablespace tab1 location '/home/edb/PGsources/postgresql/inst/bin/rep_test1'; CREATE TABLESPACE postgres=# create tablespace tab location '/home/edb/PGsources/postgresql/inst/bin/rep_test'; CREATE TABLESPACE postgres=# create database test tablespace tab; CREATE DATABASE postgres=# \c test You are now connected to database "test" as user "edb". test=# create table t( a int PRIMARY KEY,b text); CREATE TABLE test=# CREATE OR REPLACE FUNCTION large_val() RETURNS TEXT LANGUAGE SQL AS 'select array_agg(md5(g::text))::text from generate_series(1, 256) g'; CREATE FUNCTION test=# insert into t values (generate_series(1,2000000), large_val()); INSERT 0 2000000 test=# alter table t set tablespace tab1 ; ALTER TABLE test=# \c postgres You are now connected to database "postgres" as user "edb". postgres=# create database test1 template test; CREATE DATABASE postgres=# alter database test set tablespace pg_default; ERROR: could not create file "pg_tblspc/16384/PG_15_202111301/16386/2016395": File exists postgres=# alter database test set tablespace tab; ALTER DATABASE postgres=# \c test1 You are now connected to database "test1" as user "edb". test1=# alter table t set tablespace tab; 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 another 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. The connection to the server was lost. Attempting reset: Failed. !?> > > Regards, > Greg Nancarrow > Fujitsu Australia >