Re: [Proposal] Fully WAL logged CREATE DATABASE - No Checkpoints

From: Neha Sharma <neha(dot)sharma(at)enterprisedb(dot)com>
To: Greg Nancarrow <gregn4422(at)gmail(dot)com>
Cc: Dilip Kumar <dilipbalaut(at)gmail(dot)com>, Ashutosh Sharma <ashu(dot)coek88(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: [Proposal] Fully WAL logged CREATE DATABASE - No Checkpoints
Date: 2021-12-09 03:12:59
Message-ID: CANiYTQvcnQXwxY7saK8j6zFZ4W+_or7aHUgsDPABL6CMHfKOJQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Dec 9, 2021 at 4:26 AM Greg Nancarrow <gregn4422(at)gmail(dot)com> wrote:

> On Thu, Dec 9, 2021 at 6:57 AM Neha Sharma <neha(dot)sharma(at)enterprisedb(dot)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
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2021-12-09 04:09:53 Re: Optionally automatically disable logical replication subscriptions on error
Previous Message Bharath Rupireddy 2021-12-09 02:49:06 Re: Is there any documentation on how to correctly create extensions in HA(primary-standby) setup?