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

Re: (ITS#5454) syncrepl refreshAndPersist stops receiving

Rein Tollevik wrote:
> Howard Chu skrev:
>> How about just moving the enable to after the runqueue manipulation is
>> done?
> That would still leave a glitch in the window open, unless the initial
> trylock is changed to a regular lock as your checking message suggests.
> But, doing that could result in all the threads ending up waiting for
> the lock if do_syncrepl of a refresh only replication is configured to
> run too often.  I assume the trylock is there to avoid this?

Yes, but I don't think that's a problem any more. If the scheduled task is 
still running when the next interval hits, the daemon task will just 
reschedule; it won't fire off a new thread for the task.

>> It also occurs to me that we probably don't even need to manipulate the
>> slapd runqueue in persist mode, when si->si_conn is already set. I.e.,
>> in that case we can only have gotten here because of a listener event,
>> and not because of a runqueue schedule.
> That is probably true.

Right, my patch avoids that now. Having looked at it again I think replacing 
the trylock with a regular lock is fine.
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/