Skip to content

Commit 378f08e

Browse files
authored
Cursor.close() does not complete if it was already called (#1580)
See #1410 Signed-off-by: Thomas Segismont <[email protected]>
1 parent 1ce5b7b commit 378f08e

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

vertx-mysql-client/src/test/java/io/vertx/mysqlclient/tck/ProxySQLPreparedQueryTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@ public void testQueryCloseCursor(TestContext ctx) {
4545
super.testQueryCloseCursor(ctx);
4646
}
4747

48+
@Test
49+
@Ignore("Fetch command not supported by ProxySQL")
50+
@Override
51+
public void testQueryCloseCursorTwice(TestContext ctx) {
52+
super.testQueryCloseCursorTwice(ctx);
53+
}
54+
4855
@Test
4956
@Ignore("Fetch command not supported by ProxySQL")
5057
@Override

vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/CursorImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ private synchronized void close(Promise<Void> promise) {
118118
result = null;
119119
ps.closeCursor(id, promise);
120120
}
121+
} else {
122+
promise.complete();
121123
}
122124
}
123125
}

vertx-sql-client/src/test/java/io/vertx/sqlclient/tck/PreparedQueryTestBase.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package io.vertx.sqlclient.tck;
1212

1313
import io.vertx.core.AsyncResult;
14+
import io.vertx.core.Future;
1415
import io.vertx.core.Handler;
1516
import io.vertx.core.Vertx;
1617
import io.vertx.ext.unit.Async;
@@ -273,6 +274,19 @@ public void testQueryCloseCursor(TestContext ctx) {
273274
});
274275
}
275276

277+
@Test
278+
public void testQueryCloseCursorTwice(TestContext ctx) {
279+
Async async = ctx.async();
280+
testCursor(ctx, conn -> {
281+
conn
282+
.prepare("SELECT * FROM immutable")
283+
.onComplete(ctx.asyncAssertSuccess(ps -> {
284+
Cursor cursor = ps.cursor(Tuple.tuple());
285+
Future.all(cursor.close(), cursor.close()).onComplete(ctx.asyncAssertSuccess(v -> async.complete()));
286+
}));
287+
});
288+
}
289+
276290
@Test
277291
public void testQueryStreamCloseCursor(TestContext ctx) {
278292
Async async = ctx.async();

0 commit comments

Comments
 (0)