Comment 3 for bug 1549980

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to designate (master)

Reviewed: https://review.openstack.org/284912
Committed: https://git.openstack.org/cgit/openstack/designate/commit/?id=d5d0706705c64dba847cea5a30b4a6be39ecd63f
Submitter: Jenkins
Branch: master

commit d5d0706705c64dba847cea5a30b4a6be39ecd63f
Author: Rahman Syed <email address hidden>
Date: Thu Feb 25 14:12:53 2016 -0600

    Improve error handling for TCP connections

    In the abstract DNSService's _dns_handle_tcp method, error handling
    is broken in a way that stops the main loop for handling TCP
    connections.

    Because socket.timeout is a subclass of socket.error, the error
    handling block for socket.timeout is never reached.

    Because of this, error handling of a TCP timeout is sent to the
    socket.error block. Due to the way eventlet hijacks these errors,
    the errorcode is not available and a KeyError is raised. This
    KeyError interferes with the main loop because it is not caught.

    Further improvement may include ensuring that these main loops
    can never die due to unexpected exceptions.

    Many thanks to Erik Andersson for pointing out the issue, which
    was seemingly innocuous but ended up being the cause of our
    problems.

    Closes-bug: 1549980
    Change-Id: I47e1260a0818cc42cbd56e4d296e083f8fcbbae5