Subject: Re: pg_repack and locks

From: hubert depesz lubaczewski <[email-masked]>
Date: Mon, 13 Jan 2025 16:41:46 +0100

On Mon, Jan 13, 2025 at 12:40:06PM +0000, nicolas wrote:
> Hello everyone, 
> 
> We are using postgresql v12 and added the pg_repack package
> 
> Since I cannot stop other process, I use the “--no-kill-backend” and Pg_repack will wait indefinitly until pg_repack get the lock
> 
> I get sometimes a problem of lock:
> 
> sometimes, I get indefinitly this message : “NOTICE: Waiting for 1 transactions to finish. First PID: xxxx”
> 
> this is a real problem because the database is usd all the time.
> If I kill the process, a trigger on source table will still exist and  temporary tables and type still exists in the repack schema. The tables are not empty if data has been modified in the source table during the repack.
> 
> If I drop table repack tables, I will loose all data modifications done on source table
> how can I properly cleanup the database ?

Allow it to kill offending backends after some time? For example -T 7200?

Best regards,

depesz

---

From: <[email-masked]>
Date: Sun, 19 Jan 2025 13:51:53 +0100

Hi

Thanks for the help but this will not help, killing other process is not safe
The good way will be that pg_repack tools include a timeout so, that after expiration delay, he will stop waiting and discard the repack action

But thanks again for your proposition.
Regards,
Nicolas

-----Message d'origine-----
De : [email-masked] <[email-masked]> 
Envoyé : lundi 13 janvier 2025 16:42
À : nicolas <[email-masked]>
Cc : [email-masked]
Objet : Re: pg_repack and locks

On Mon, Jan 13, 2025 at 12:40:06PM +0000, nicolas wrote:
> Since I cannot stop other process, I use the “--no-kill-backend” and 
> Pg_repack will wait indefinitly until pg_repack get the lock
> 
> If I drop table repack tables, I will loose all data modifications 
> done on source table how can I properly cleanup the database ?

Best regards,

depesz

---

From: Boris Zentner <[email-masked]>
Date: Sun, 19 Jan 2025 14:50:51 +0100

Hi there,

I think you can use -T 3600 -D  If you don't want to kill the backends. 
--
Boris

> Am 19.01.2025 um 13:52 schrieb [email-masked]:
> 
> Hi
>