On Wed, Jun 16, 2010 at 10:21 AM, Michael P. Soulier
<michael_soulier@mitel.com> wrote:
> Hi,
>
> I'm using Django with Postgres 8.3.9 on CentOS Linux.
>
> I'm trying to figure out why locking isn't working as I'm expecting. I have a
> an operation wrapped in a transaction where I explicitely grab an exclusive
> lock on my table. When another process concurrently runs to do the same, it
> should block on attempting to acquire the exclusive lock, no?
>
> That is not what I am seeing. I see two processes both doing this
>
> 2010-06-16 12:14:31.909608500 LOG: connection received: host=[local]
> 2010-06-16 12:14:31.909748500 DEBUG: forked new backend, pid=30726 socket=6
> 2010-06-16 12:14:31.909784500 LOG: connection authorized: user=tugdbuser
> database=tugd
> b
> 2010-06-16 12:14:31.911516500 LOG: statement: SET DATESTYLE TO 'ISO'
> 2010-06-16 12:14:31.911630500 LOG: statement: SHOW client_encoding
> 2010-06-16 12:14:31.911768500 LOG: statement: SHOW
> default_transaction_isolation
> 2010-06-16 12:14:31.911849500 LOG: statement: SET client_encoding = 'UTF8'
> 2010-06-16 12:14:31.911972500 LOG: statement: BEGIN; SET TRANSACTION
> ISOLATION LEVEL R
> EAD COMMITTED
> 2010-06-16 12:14:31.912028500 LOG: statement: SET TIME ZONE
> E'America/New_York'
> 2010-06-16 12:14:31.912373500 LOG: statement: SELECT version()
> ...skipping...
> 2010-06-16 12:14:31.913008500 LOG: statement: LOCK TABLE instances IN ROW
> EXCLUSIVE MODE
>
> The first lock does not seem to prevent the second from completing.
I only see one lock here.