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

Re: commit: ldap/tests/scripts defines.sh test035-meta test036-meta-concurrency



Pierangelo Masarati wrote:

The bad news is that under some circumstances back-meta still happens to hang waiting for a result from a target that is not willing to send any. I've worked it around by re-issuing the anonymous bind exactly once after the configured retries on ldap_result() have been attempted unsuccessfully. Unfortunately this occurs so few times and under so heavy load that first of all it's unrealistic, and it's pretty difficult to track. In fact, in these cases I can easily attach the back-meta with gdb and see it retry indefinitely, but there's no clue in attaching the remote server, because that has anything to do with the operation, and its logs don't say anything about the problem. The libldap is waiting on a message that'll never come. So re-issuing the operation seems to be the right approach.

I think I've spotted the cause. I was doing something that could be interesting, but right now seems inappropriate, and it is having some undesired side effect. When doing reads, what's needed is a unique target, holding the search base. If none cannot be identified by looking at the target's naming contexts, an internal search is performed, using the request DN as base, and a sizelimit of 1. If exactly one target is found, it is used; otherwise, an error is returned because no exact base can be selected. I might need to tweak this a bit, but that's how it works. The point is that meta_back_search(), in case of a match when the scope is BASE, was actually returing result and abandoning the other operations. This, and I don't know why, could result in the abandoned targets refuse to respond to the anonymous bind immediately after the abandon. Currently I have no clue. For other reasons, i turned that feature off, and now that abandons don't occur any longer, the problem doesn't show up any more.


p.

--
Pierangelo Masarati
mailto:pierangelo.masarati@sys-net.it



   SysNet - via Dossi,8 27100 Pavia Tel: +390382573859 Fax: +390382476497