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

Re: (ITS#3671) disconnecting a syncrepl consumer deadlocks the provider

rhafer@suse.de wrote:

>Full_Name: Ralf Haferkamp
>Version: HEAD
>OS: Linux (Kernel 2.6)
>URL: ftp://ftp.openldap.org/incoming/
>Submission from: (NULL) (
>While experimenting a bit with the syncprov overlay of current CVS HEAD I ran
>across this issue. I configured the consumer as "refreshAndPersist". While
>adding some entries to the provider I pulled the network plug from the machine
>running consumer slapd. After a short while the provider is completely locked it
>doesn't answer any requests anymore.
Hm, that's annoying. Can you get a gdb backtrace of this situation? At a 
guess, some number of threads are tied up waiting for the syncprov 
modify lock, and syncprov is tied up waiting for TCP to get an ACK from 
one of its sent responses. The situation should free itself up when the 
TCP timeout expires on the connection. The only way to avoid the lockup 
I suppose is to dup the target entry and release the modify lock on it 
before attempting to send the reply. Much more memory intensive, but it 
may be the only way out. And some number of threads will still wind up 
getting blocked trying to send their replies.

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