Marko Kreen wrote:
On 3/30/09, Heikki Linnakangas <heikki.linnakan...@enterprisedb.com> wrote:
Agreed. And more importantly, it puts the onus of getting it right into
CountActiveBackends, which is the one who's breaking the rules. We don't
necessarily need to clear the pointer in ProcArrayRemove either, the count
doesn't need to be accurate.
Without reset in ProcArrayRemove we may use some ancient pointer that
may point to garbage? I don't think it's good coding style to allow
that to happen.
Well, that can happen anyway. CountActiveBackends() could fetch the
pointer and determine that it's not NULL, just before ProcArrayRemove
clears it.
I agree it's a bit dirty, but seems safe as the PGPROC entries are in
shared memory.
(clearing the pointer might be a good idea anyway, though, for debugging
purposes)
Also, are there other functions that try lockless access on proc_array?
We do set fields in MyProc without holding the lock, but that should be
fine.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers