Am Montag 08 Dezember 2008 16:39:33 schrieb Hallvard B Furuseth:
Yes, this sounds familiar. I guess I mentioned it but didn't have time to check it. The offending if() comes from tpool.c rev 1.81, which was apparently a wrong fix to ITS#5194. rev 1.82 was the right fix. (Except I'm not so sure it was the _complete_ fix - might need to lock ldap_pvt_thread_pool_mutex while changing or even accessing *tpool, or something like that...)
Anyway, the patch looks correct to me, undoing rev 1.81.
Thanks very much for the clarification.
The current code is clear enough in retrospect - a thread pool pause in halts pool_destroy() since pool_resume() doesn't broadcast - and thus a cn=config update (or access?) aborts slapd shutdown:-(
It doesn't really abore shutdown in sense of slapd accepting requests again. slapd is completely lockup in such a condition. It doesn't accept requests anymore, neither does it shutdown completely.
Anyway, I've just applied the fix to HEAD.