> 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
