You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
JDBC driver: Closing a Connection does not close ResultSets originated from the DatabaseMetadata API, potentially leading to exceptions related to memory leaks #990
If a ResultSet obtained via a method from the DatabaseMetaData JDBC interface is not closed at the time of closing the connection, an exception is thrown in Connection.close() This is separate from the linked bug, because the other one only contemplated ResultSets that originate in queries made via Statements. However, the behavior is very similar.
Code to reproduce:
try {
// Establish connection
Connection connection = DriverManager.getConnection(jdbcUrl, properties);
DatabaseMetaData metaData = connection.getMetaData();
// any other method that returns a ResultSet would also repro
ResultSet rs = metaData.getTableTypes();
// this eliminates the exception
// rs.close();
connection.close();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
Resulting in the following exception (under version 18.3.0)
Jan 27, 2026 2:02:59 AM org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.memory.BaseAllocator close
SEVERE: Memory was leaked by query. Memory leaked: (64)
Allocator(VectorSchemaRootTransformer) 0/64/64/9223372036854775807 (res/actual/peak/limit)
Error: Exception while closing: Memory was leaked by query. Memory leaked: (64)
Allocator(VectorSchemaRootTransformer) 0/64/64/9223372036854775807 (res/actual/peak/limit)
java.sql.SQLException: Exception while closing: Memory was leaked by query. Memory leaked: (64)
Allocator(VectorSchemaRootTransformer) 0/64/64/9223372036854775807 (res/actual/peak/limit)
at org.apache.arrow.driver.jdbc.shaded.org.apache.calcite.avatica.Helper.createException(Helper.java:56)
at org.apache.arrow.driver.jdbc.shaded.org.apache.calcite.avatica.Helper.createException(Helper.java:41)
at org.apache.arrow.driver.jdbc.ArrowFlightConnection.close(ArrowFlightConnection.java:190)
at MemoryLeakRepro.main(MemoryLeakRepro.java:136)
Caused by: java.lang.RuntimeException: Exception while closing: Memory was leaked by query. Memory leaked: (64)
Allocator(VectorSchemaRootTransformer) 0/64/64/9223372036854775807 (res/actual/peak/limit)
at org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.util.AutoCloseables.closeNoChecked(AutoCloseables.java:211)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at org.apache.arrow.driver.jdbc.ArrowFlightConnection.close(ArrowFlightConnection.java:185)
... 1 more
Caused by: java.lang.IllegalStateException: Memory was leaked by query. Memory leaked: (64)
Allocator(VectorSchemaRootTransformer) 0/64/64/9223372036854775807 (res/actual/peak/limit)
at org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.memory.BaseAllocator.close(BaseAllocator.java:504)
at org.apache.arrow.driver.jdbc.shaded.org.apache.arrow.util.AutoCloseables.closeNoChecked(AutoCloseables.java:209)
... 3 more
Activity
apacheGH-990: [JDBC] Fix memory leak on Connection#close due to unclo…