- 
                Notifications
    You must be signed in to change notification settings 
- Fork 208
Open
Description
Version
4.5.3
Context
CursorImpl.close never finishes promise in case of it's already closed, all logic in !closed branch.
  private synchronized void close(Promise<Void> promise) {
    if (!closed) {
....
Steps to reproduce
sqlConnection.prepare("select * from test")
        .compose(preparedStatement ->
        {
            Cursor cursor = preparedStatement.cursor();
            return cursor.read(1)
                    .compose(rowSet -> {
                        Future<Void> close1 = cursor.close();
                        Future<Void> close2 = cursor.close();
                        return Future.join(close1, close2)
                                .onComplete(ar -> {
                                    // never gets called
                                });
                    });
        });