Hi,
On 2026-04-14 15:37:56 +0200, Antonin Houska wrote:
> Andres Freund <andres@anarazel.de> wrote:
>
> > On 2026-04-12 15:31:20 +0200, Mihail Nikalayeu wrote:
> > > Instead of cancelling the backend entered the deadlock detector - it
> > > cancel some another (nearest hard edge) until it is possible to get the
> > > lock (either by
> > > reordering or directly).
> >
> > I don't think that's as good. The problem is that that way you're only
> > detecting the deadlocks once they have materialized (i.e. once repack actually
> > does the lock upgrade), rather than cancelling when we know that the problem
> > starts.
>
> This is my hack that tries to do that.
I still think this needs to be in the deadlock detector. The lock cycle just
needs to be a bit more complicated for a hack in JoinWaitQueue not to work.
There's no guarantee that the wait that triggers the deadlock is actually on
the relation being repacked.
Greetings,
Andres Freund