> 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?

Actually semaphores are used. Try to grep pool_semaphore_lock etc.
--
Tatsuo Ishii
SRA OSS, Inc. Japan
_______________________________________________
Pgpool-hackers mailing list
[email protected]
http://pgfoundry.org/mailman/listinfo/pgpool-hackers

Reply via email to