[pgpool-hackers: 4282] Re: Fixing query cache bugs

Tatsuo Ishii ishii at sraoss.co.jp
Sun Feb 5 21:22:34 JST 2023


>> Hi,
>> 
>> I have found multiple query cache bugs.
>> 
>> 1) pool_add_item_shmem_cache() calls pool_init_cache_block() when
>>    there's no free cache item hash table entry. But this is
>>    unnecessary since pool_reuse_block() is already called from
>>    pool_add_item_shmem_cache(). This is actually harmless because the
>>    second pool_init_cache_block() call just set the same data as the
>>    first call of pool_init_cache_block(). It's just a waste of CPU
>>    cycle.
>> 
>> 2) The cache blocks are supposed to be initialized while Pgpool-II
>>    starts up but actually not. Each cache block has the free space
>>    length in the block header after initialization. Since the free
>>    space length is not set, pool_get_block() fails to find a cache
>>    block which has enough free space, and it calls pool_reuse_block(),
>>    which is actually unnecessary (you will see something like
>>    "pool_reuse_block: blockid: 0" in pgpool log). Since
>>    pool_reuse_block() returns a free block anyway, this is just a
>>    waste of CPU cyle but better to fix.
>> 
>> Attached is a proposed fix (along with assorted comment fixes).
> 
> Previous patch was incomplete. It lacked patches against
> pool_memqcache.h and pgpool_main.c.  Attached is the v2 patch.

Fix pushed.

Best reagards,
--
Tatsuo Ishii
SRA OSS LLC
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp


More information about the pgpool-hackers mailing list