[Pgpool-hackers] Concurrent BackendInfo read/write access
Defenestrator
defenestrationism at gmail.com
Wed Sep 3 00:15:32 UTC 2008
Hello,
I'm looking at the source code for PGPool II 2.1. And I have a question
regarding concurrent read/write access to the BackendInfo structure in
shared memory. There are calls like VALID_BACKEND(i) or
BACKEND_INFO(i).backend_status = CON_DOWN, which seem to be called
concurrently without holding any mutexes. It seems that setting the
backend_status is ok, since it's an enum and is an atomic operation.
However, VALID_BACKEND() isn't really an atomic operation, but may still be
ok:
((BACKEND_INFO(backend_id).backend_status == CON_UP) || \
(BACKEND_INFO(backend_id).backend_status == CON_CONNECT_WAIT))
A bigger issue seems to be that without the use of mutexes or semaphores,
how does PGPool guarantee the memory state for the backend status is
consistent across different processor cores?
Thanks for any input.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://pgfoundry.org/pipermail/pgpool-hackers/attachments/20080902/40de78ab/attachment.html
More information about the Pgpool-hackers
mailing list