Re: advancing snapshot's xmin

Heikki Linnakangas <heikki@enterprisedb.com>

From: "Heikki Linnakangas" <heikki@enterprisedb.com>
To: "Neil Conway" <neilc@samurai.com>
Cc: "Alvaro Herrera" <alvherre@commandprompt.com>, "Pg Hackers" <pgsql-hackers@postgresql.org>
Date: 2008-03-26T00:32:25Z
Lists: pgsql-hackers
Neil Conway wrote:
> On Tue, 2008-03-25 at 17:26 -0300, Alvaro Herrera wrote:
>> There is one hole here: contention on ProcArrayLock.  Basically, for
>> simple transactions we will need to update MyProc after every command.
> 
> If we're just updating MyProc->xmin, we only need to acquire
> ProcArrayLock in shared mode, right?

In fact, do you need a lock at all? We already assume that 
reading/writing a TransactionId is atomic in many places. We acquire 
ProcArrayLock at the end of transaction when we clear MyProc->xid, to 
ensure that we don't exit the set of running transactions while someone 
else is taking a snapshot, but AFAICS that's not necessary when we just 
advance MyProc->xmin.

-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com