Re: type cache cleanup improvements
Alexander Korotkov <aekorotkov@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Maintain RelIdToTypeIdCacheHash in TypeCacheOpcCallback()
- bb78e4267817 18.0 landed
-
Fix concurrrently in typcache_rel_type_cache.sql
- aa1e898dea66 18.0 landed
-
Avoid looping over all type cache entries in TypeCacheRelCallback()
- b85a9d046efd 18.0 landed
- c14d4acb8134 18.0 landed
-
Update header comment for lookup_type_cache()
- c1500a1ba7e1 18.0 landed
-
Revert: Avoid looping over all type cache entries in TypeCacheRelCallback()
- 8daa62a10c91 18.0 landed
-
Introduce hash_search_with_hash_value() function
- d0f020037e19 18.0 landed
-
Optimize InvalidateAttoptCacheCallback() and TypeCacheTypCallback()
- 40064a8ee1b3 18.0 landed
-
Refactor initial hash lookup in dynahash.c
- cc5ef90edd80 17.0 landed
-
Rationalize and improve error messages for some jsonpath items
- 92d2ab7554f9 17.0 cited
-
Avoid race in RelationBuildDesc() affecting CREATE INDEX CONCURRENTLY.
- fdd965d074d4 15.0 cited
-
Represent Lists as expansible arrays, not chains of cons-cells.
- 1cff1b95ab6d 13.0 cited
Attachments
- v15-0001-Update-header-comment-for-lookup_type_cache.patch (application/octet-stream) patch v15-0001
- v15-0002-Avoid-looping-over-all-type-cache-entries-in-Typ.patch (application/octet-stream) patch v15-0002
On Sun, Oct 20, 2024 at 9:00 PM Alexander Korotkov <aekorotkov@gmail.com> wrote: > On Sun, Oct 20, 2024 at 8:47 PM Alexander Korotkov <aekorotkov@gmail.com> wrote: > > On Tue, Oct 15, 2024 at 12:50 PM jian he <jian.universality@gmail.com> wrote: > > > build from source, DCLOBBER_CACHE_ALWAYS takes a very long time. > > > So I gave up. > > > > > > > > > in lookup_type_cache, we unconditionally do > > > in_progress_list_len++; > > > in_progress_list_len--; > > > > Yes, this should work OK when no errors. On error or interruption, > > finalize_in_progress_typentries() will clean the things up. > > > > > "static int in_progress_list_len;" > > > means in_progress_list_len value change is confined in > > > src/backend/utils/cache/typcache.c. > > > > Yep. > > > > > based on above information, i am still confused with > > > cleanup_in_progress_typentries, in_progress_list_len > > > is there any simple sql example to demo > > > cleanup_in_progress_typentries, in_progress_list_len> 0. > > > > I don't think there is simple sql to reliably reproduce that. In > > order to hit that, we must process invalidation messages in some > > (short) moment of time during lookup_type_cache(). You can reproduce > > that by setting a breakpoint in lookup_type_cache() and in parallel do > > something to invalidate the type cache entry (for instance, ALTER > > TABLE ... ADD COLUMN ... would invalidate the composite type). > > Oops, concurrent invalidation message is not enough here. So, > -DCLOBBER_CACHE_ALWAYS is also not enough to reproduce the situation. > Injection-point test is required. I'm going to add this. Here you go. The test with injection point is implemented. ------ Regards, Alexander Korotkov Supabase