[FlightSQL] Statement.execute(String) can leak server prepared-statement handles when reused
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 55/100
Piste de recherche
Commencez par l’implémentation JDBC de Flight SQL de Statement.execute(String) et suivez la manière dont les handles de prepared-statement sont remplacés et fermés ; l’issue ne nomme ni fichier ni test. Reproduisez la boucle contre un serveur Flight SQL avec état, puis vérifiez que chaque handle précédent est libéré avant que le suivant soit suivi et que Statement.close nettoie toujours le dernier handle.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug, including details regarding any error messages, version, and platform.
When reusing the same JDBC Statement and calling execute(String) multiple times, the Flight SQL JDBC path creates a new prepared statement on each call, but previous prepared handles are not closed before being replaced in client tracking state.
This means only the latest handle is guaranteed to be closed when the statement is closed. On stateful Flight SQL servers, this can leak server-side resources associated with older handles.
Repro
try (Connection connection = DriverManager.getConnection(jdbcUrl, properties);
Statement statement = connection.createStatement()) {
for (int i = 1; i <= n; i++) {
String sql = "SELECT " + i;
boolean isResultSet = statement.execute(sql);
if (isResultSet) {
try (ResultSet rs = statement.getResultSet()) {
while (rs.next()) { /* consume */ }
}
}
}
}
Raised in https://github.com/apache/arrow-java/pull/1090#discussion_r3132344585
- Langage dominant
- Java
- Étoiles
- 95
- Forks
- 154
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 9
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de apache/arrow-java
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
apache/arrow-java#1261 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/arrow-java#1236 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/arrow-java#1230 ·
Les mainteneurs répondent en général sous 2 jours
-
Type: bug
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
apache/arrow-java#1205 ·
Les mainteneurs répondent en général sous 2 jours
-
Type: bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
apache/arrow-java#1196 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de apache/arrow-java
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
redhat-developer/intellij-quarkus#1626 ·
-
Type/Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
wso2/product-integrator-mi#5061 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
quarkiverse/quarkus-roq#1277 ·
Les mainteneurs répondent en général sous 1 jour
-
Typos in page footerOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
apache/logging-site#48 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/maven-surefire#3496 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour