• Fujii Masao's avatar
    Add memory barriers for PgBackendStatus.st_changecount protocol. · 38628db8
    Fujii Masao authored
    st_changecount protocol needs the memory barriers to ensure that
    the apparent order of execution is as it desires. Otherwise,
    for example, the CPU might rearrange the code so that st_changecount
    is incremented twice before the modification on a machine with
    weak memory ordering. This surprising result can lead to bugs.
    
    This commit introduces the macros to load and store st_changecount
    with the memory barriers. These are called before and after
    PgBackendStatus entries are modified or copied into private memory,
    in order to prevent CPU from reordering PgBackendStatus access.
    
    Per discussion on pgsql-hackers, we decided not to back-patch this
    to 9.4 or before until we get an actual bug report about this.
    
    Patch by me. Review by Robert Haas.
    38628db8
pgstat.c 137 KB