Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

[FlightSQL] Statement.execute(String) can leak server prepared-statement handles when reused

Aberta
#1,129 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
55/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
java
Domínio
databases

Direção de pesquisa

Comece pela implementação JDBC de Flight SQL de Statement.execute(String) e rastreie como os handles de prepared-statement são substituídos e fechados; a issue não nomeia nenhum arquivo nem teste. Reproduza o loop contra um servidor Flight SQL stateful e, em seguida, verifique se cada handle anterior é liberado antes que o próximo seja rastreado e se Statement.close ainda limpa o handle final.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Type: bug
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

Linguagem predominante
Java
Estrelas
97
Forks
158
Merge médio
7d 12h
PRs com merge (30d)
31

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de apache/arrow-java

Todas as issues de apache/arrow-java

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.