Ich implementiere eine RESTful-API mit Vert.x. Ich habe seinen asynchronen jdbc-Client mit MySQL und c3p0 als Verbindungspool verwendet.vert.x async jdbc schließt keine Verbindungen
Mein Problem ist, dass obwohl die CloseConnection-Handler erfolgreich ist, die eigentliche Datenbankverbindung nicht geschlossen und wiederverwendet wird. Der Pool wird in Sekunden voll, was Folgendes ergibt: BasicResourcePool: 204 - Test erwerben - Pool ist bereits ausgereizt. [verwaltet: 20; max: 20]
client.getConnection(connectionAsyncResult -> {
SQLConnection connection = connectionAsyncResult.result();
connection.queryWithParams("SELECT * FROM AIRPORTS WHERE ID = ?", new JsonArray().add(id), select -> {
ResultSet resultSet = select.result();
Airport $airport = resultSet.getRows()
.stream()
.map(Airport::new)
.findFirst()
.get();
asyncResultHandler.handle(Future.succeededFuture($airport));
connection.close(closeHandler -> {
if (closeHandler.succeeded()) {
LOG.debug("Database Connection closed");
}
else if (closeHandler.failed()) {
LOG.error("Database Connection failed to close!");
}
});
});
});
Irgendeine Idee, was ich vermisse?
Alles Gute!
Sehr gute Idee Paulo, aber das war nicht der Fall. Ich habe den Code aktualisiert (siehe oben). Es sagt immer, dass der Abschluss erfolgreich war. Versucht, es in einem Versuch abzuschließen - schließlich, das gleiche Ergebnis: falsch positiv. – user3159152
In diesem Fall würde ich vorschlagen, ein Problem auf vertx-jdbc-client zu öffnen und ein einfaches Reproduziererbeispiel hinzuzufügen, damit es untersucht werden kann. –