public inbox for [email protected]
help / color / mirror / Atom feedFrom: Nico Heller <[email protected]>
To: Greg Sabino Mullane <[email protected]>
Cc: [email protected]
Subject: Re: Guarantee order of batched pg_advisory_xact_lock
Date: Wed, 18 Feb 2026 21:19:36 +0000
Message-ID: <[email protected]> (raw)
In-Reply-To: <CAKAnmmJoX=KJyH2g8tWtbSoqJp7nnyeBChaLgF6bbGv1zGLzwg@mail.gmail.com>
References: <[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<CAKAnmmJoX=KJyH2g8tWtbSoqJp7nnyeBChaLgF6bbGv1zGLzwg@mail.gmail.com>
On 2/17/26 15:55, Greg Sabino Mullane wrote:
> On Mon, Feb 16, 2026 at 12:45 PM Nico Heller <[email protected]>
> wrote:
>
> Does anyone have any idea what the root cause of my issue is? I
> appreciate any insight.
> As I said, hash collisions can be rules out, sadly.
>
>
> Well, you could set log_statement to 'all' for a bit to see *exactly*
> what each of the deadlocking processes are doing. Alternatively,
> perhaps you can write a hashextendedkey() function that outputs
> arguments and results to a log and/or a table.
I will give that a shot, thank you
>
> keysToLock is a text[] parameter which is pre-sorted in our
> application
>
>
> Would not hurt to triple-check this part as well. Could show us the
> app code? Maybe put in some sort of global assert in the app to verify
> that things are indeed sorted as you think they are.
I am 100% sure this is the case, as the code base isn't huge and we have
central component which is *always* used to acquire advisory locks.
It looks as follows, in pseudo Kotlin code:
class LockingRepository(val sqlClient: SqlClient) {
@Transactional(propagation = MANDATORY) // enforces a transaction
is already active, using pg_advisory_xact_lock is senseless otherwise
fun acquireLocks(keys: List<String>) =
sqlClient.query(<QUERY_HERE>).param(:keys, sort(keys)).execute()
private fun sort(keys: List<String>) = keys.sort() // as I said,
it's sorted in some arbitrary way
}
>
> Cheers,
> Greg
>
> --
> Crunchy Data - https://www.crunchydata.com
> Enterprise Postgres Software Products & Tech Support
>
view thread (6+ messages)
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: Guarantee order of batched pg_advisory_xact_lock
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox