Domagoj Smoljanovic <[email protected]> writes:
> I have pg_restore running in parallel (3 or more) and processing large amount
> of data that is in partitioned tables. However it seems that sometime
> deadlock appears when one process is trying to process primary key on parent
> table while data still hasn’t been loaded into partitions. And acquires
> Exclusive Lock on the whole table. Then another process comes and tries to
> load one of the partitions with SharedLock but it fails.
> This of course doesn’t happen always; depending on the course of actions of
> the pg_restore. But often enough to cause frustration.
> Process 15858 waits for AccessShareLock on relation 233358134 of database
> 233346697; blocked by process 15861.
> Process 15861 waits for AccessExclusiveLock on relation 233374757 of database
> 233346697; blocked by process 15858.
> Process 15858: TRUNCATE TABLE ONLY myschema."myTable:2020-09-01";
> Process 15861: ALTER TABLE ONLY myschema."myTable" ADD CONSTRAINT
> "pk_myTable" PRIMARY KEY ("ID", date);
Hm, this seems related to 2ba5b2db7, but not the same thing.
Alvaro, any thoughts?
regards, tom lane