Blair Zajac <bl...@orcaware.com> writes: >> + /* If we are using fulltext caches etc., we will allocate many large >> + chunks of memory of various sizes outside the cachde for those >> + fulltexts. Make sure, we use the memory wisely: use an allocator >> + that causes memory fragments to be given back to the OS early. */ >> + >> + if (apr_allocator_create(&allocator)) >> + return EXIT_FAILURE; >> + >> + apr_allocator_max_free_set(allocator, >> SVN_ALLOCATOR_RECOMMENDED_MAX_FREE); >> + >> /* Non-standard pool handling. The main thread never blocks to join >> the connection threads so it cannot clean up after each one. So >> separate pools, that can be cleared at thread exit, are used */ >> - connection_pool = svn_pool_create(NULL); >> + >> + connection_pool = svn_pool_create_ex(NULL, allocator); >> + apr_allocator_owner_set(allocator, connection_pool); > > > Shouldn't the allocator have a mutex registered with it, given that > svnserve is multithreaded?
No. I believe each thread gets its own allocator and pool, from which it creates subpools as required. When the thread exits it destroys the pool, which destroys the allocator since the pool has been set as the owner. So each allocator is only used by one thread. -- Philip