• Fujii Masao's avatar
    Fix bug in LWLock statistics mechanism. · 3ccc66da
    Fujii Masao authored
    Previously PostgreSQL built with -DLWLOCK_STATS could report
    more than one LWLock statistics entries for the same backend
    process and the same LWLock. This is strange and only one
    statistics should be output in that case, instead.
    
    The cause of this issue is that the key variable used for
    LWLock stats hash table was not fully initialized. The key
    consists of two fields and they were initialized. But
    the following 4 bytes allocated in the key variable for
    the alignment was not initialized. So even if the same key
    was specified, hash_search(HASH_ENTER) could not find
    the existing entry for that key and created new one.
    
    This commit fixes this issue by initializing the key
    variable with zero. As the side effect of this commit,
    the volume of LWLock statistics output would be reduced
    very much.
    
    Back-patch to v10, where commit 3761fe3c introduced the issue.
    
    Author: Fujii Masao
    Reviewed-by: Julien Rouhaud, Kyotaro Horiguchi
    Discussion: https://postgr.es/m/26359edb-798a-568f-d93a-6aafac49752d@oss.nttdata.com
    3ccc66da
lwlock.c 50.5 KB