Both _set_final_exception/result called for the same ResponseFuture

Description

In case there are issues with connection to the server, and OperationTimedOut error is raised, ResponseFuture._errbacks are expectedly executed (in

method). However, the connection itself is not touched, and when it finally returns,

is called. As a result, we get both ResponseFuture._errbacks and ResponseFuture._callbacks executed.

Instead, driver code should make sure to have only one set of callbacks executed (i.e. if there is exception raised, don't execute ResponseFuture._callbacks).

Environment

None

Pull Requests

None

Activity

Show:
Jaume Marhuenda
August 12, 2017, 1:09 AM

Did some manual testing around this, the connections where returned correctly in different scenarios where an OTO happened.

Fixed

Assignee

Unassigned

Reporter

Roman Bodnarchuk

Fix versions

Labels

None

Reproduced in

3.6.0

PM Priority

None

External issue ID

None

Doc Impact

None

Reviewer

None

Size

None

Components

Sprint

Py P-ENG-TRIAGE

Affects versions

Priority

Minor