Thread

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix unexpected reversal of lists during catcache rehash

  1. A small problem when rehashing catalog cache

    cca5507 <cca5507@qq.com> — 2025-12-16T11:16:20Z

    Hi,
    
    When we search catalog cache, we move the searched tuple to the front of the list:
    
    ```
    		/*
    		 * We found a match in the cache.  Move it to the front of the list
    		 * for its hashbucket, in order to speed subsequent searches.  (The
    		 * most frequently accessed elements in any hashbucket will tend to be
    		 * near the front of the hashbucket's list.)
    		 */
    		dlist_move_head(bucket, &ct->cache_elem);
    ```
    
    If I understand correctly, we reverse the list in RehashCatCache() and RehashCatCacheLists():
    
    ```
    	/* Move all entries from old hash table to new. */
    	for (i = 0; i < cp->cc_nbuckets; i++)
    	{
    		dlist_mutable_iter iter;
    
    		dlist_foreach_modify(iter, &cp->cc_bucket[i])
    		{
    			CatCTup    *ct = dlist_container(CatCTup, cache_elem, iter.cur);
    			int			hashIndex = HASH_INDEX(ct->hash_value, newnbuckets);
    
    			dlist_delete(iter.cur);
    			dlist_push_head(&newbucket[hashIndex], &ct->cache_elem);
    		}
    	}
    ```
    
    Maybe "dlist_push_head" -> "dlist_push_tail"? Thoughts?
    
    --
    Regards,
    ChangAo Chen
    
  2. Re: A small problem when rehashing catalog cache

    cca5507 <cca5507@qq.com> — 2025-12-17T03:12:46Z

    Hi,
    
    Although this does not affect correctness, I'd like to propose a patch to fix it.
    
    --
    Regards,
    ChangAo Chen
    
  3. Re: A small problem when rehashing catalog cache

    Michael Paquier <michael@paquier.xyz> — 2025-12-17T03:35:21Z

    On Wed, Dec 17, 2025 at 11:12:46AM +0800, cca5507 wrote:
    > Although this does not affect correctness, I'd like to propose a
    > patch to fix it.
    
    That's an interesting point.
    
    Indeed, the code bothers putting a fresh matching entry at the
    beginning of a bucket, and the code does the opposite when moving
    entries around, which is inconsistent to say the least.  If we move
    the entries at the tail instead as you are suggesting the "freshness"
    would be preserved better.  This deserves a comment, at least.
    
    20cb18db4668 has added the RehashCatCache() part, with 473182c9523a
    copying the same pattern for RehashCatCacheLists().
    
    Thoughts or opinions from others?
    --
    Michael
    
  4. Re: A small problem when rehashing catalog cache

    cca5507 <cca5507@qq.com> — 2025-12-17T06:00:44Z

    > This deserves a comment, at least.
    
    How about adding this comment:
    
    We keep recently searched entries at the front of the list, so we should call dlist_push_tail() here.
    
    --
    Regards,
    ChangAo Chen