[libvirt] [PATCH 2/4] rpc: Discard non-blocking calls only when necessary

Peter Krempa pkrempa at redhat.com
Wed Apr 25 14:38:43 UTC 2012


On 04/25/2012 02:07 PM, Jiri Denemark wrote:
> Currently, non-blocking calls are either sent immediately or discarded
> in case sending would block. This was implemented based on the
> assumption that the non-blocking keepalive call is not needed as there
> are other calls in the queue which would keep the connection alive.
> However, if those calls are no-reply calls (such as those carrying
> stream data), the remote party knows the connection is alive but since
> we don't get any reply from it, we think the connection is dead.
>
> This is most visible in tunnelled migration. If it happens to be longer
> than keepalive timeout (30s by default), it may be unexpectedly aborted
> because the connection is considered to be dead.
>
> With this patch, we only discard non-blocking calls when the last call
> with a thread is completed and thus there is no thread left to keep
> sending the remaining non-blocking calls.
> ---

ACK.

Peter




More information about the libvir-list mailing list