[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: back-config, overlays

Pierangelo Masarati wrote:

There will not be any active operations when back-config is operating.
Remember that on write operations it suspends the thread pool before it
does anything else. As such, you can perform whatever cleanup is
required, issuing ldap_unbind()s on all of the cached connections,
without regard to locking or any other concerns, before returning from
the config handler.

I've noticed the "suspend" of the thread pool; maybe I'm overlooking it, but my understanding is that it essentially stops execution of other threads at the point they are. When they resume, they continue execution from the point they were suspended. If a threasd in back-ldap resumes __after__ a call to ldap_back_getconn(), then the thread has a pointer to a ldapconn structure, which will contain a NULL ld, but I think back-ldap does not check it before passing to ldap_* calls. In this case we'd need to always check lc->lc_ld before calling any client library function.

No, it does not pre-empt. It prevents new jobs from starting in the thread pool and waits for running jobs to finish. Otherwise it would be impossible to do any changes safely.

 -- Howard Chu
 Chief Architect, Symas Corp.       Director, Highland Sun
 http://www.symas.com               http://highlandsun.com/hyc
 Symas: Premier OpenSource Development and Support