Search Postgresql Archives

Re: Clarification regarding managing advisory locks in postgresql

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 25, 2024 at 4:44 AM Sasmit Utkarsh <utkarshsasmit@xxxxxxxxx> wrote:
Okay Thanks. Also please help me understand the below scenarios

From the above statement, I understand is (please correct if I'm wrong here), When we fork a client process, each process gets its own database connection or transaction context.
So far so good
 
Therefore, locks acquired in one process (or transaction) do not directly affect locks in another process (or transaction).
Not following you here. By definition, a lock impacts other processes; that's the entire purpose.  The affect other processes in that two processes cannot take a lock on the same thing at the same time.
 
Now, I'm faced with another situation where I'm using libpq in C as client programs and while calling some function it acquires pg_advisory_lock for the request  with some identifier in transaction A. This can be thought of as “lock the operation with id = X”  and then make some SQL requests(retrieve) from the database. During that if it forks into another process B,

Client side code should not fork and preserve connections across the fork.  This is multi-threaded access to a connection, and generally speaking you should not have 2+ threads hitting the same connection returned from libpq.  This is undefined behavior, so that your questions below this I suspect are moot.

merlin

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux