This is an automated email from the ASF dual-hosted git repository.
wgtmac pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-java.git
The following commit(s) were added to refs/heads/master by this push:
new 45851ec0e GH-3767: Make PageReader AutoCloseable (#3768)
45851ec0e is described below
commit 45851ec0e7ce096ca78e95922c9fd28f09153592
Author: Bodor Laszlo <[email protected]>
AuthorDate: Thu Sep 24 04:55:09 2026 +0200
GH-3767: Make PageReader AutoCloseable (#3768)
Widen PageReader to extend AutoCloseable with a default no-op close(),
so implementations that own resources can release them through the
standard try-with-resources / AutoCloseables idiom rather than a
bespoke method. Existing implementations remain source- and
binary-compatible.
Rename ColumnChunkPageReader.releaseBuffers() to close() and let the
enclosing ColumnChunkPageReadStore.close() hand its readers to
AutoCloseables.uncheckedClose() directly.
---
.../src/main/java/org/apache/parquet/column/page/PageReader.java | 8 +++++++-
.../java/org/apache/parquet/hadoop/ColumnChunkPageReadStore.java | 5 +++--
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git
a/parquet-column/src/main/java/org/apache/parquet/column/page/PageReader.java
b/parquet-column/src/main/java/org/apache/parquet/column/page/PageReader.java
index 0b4321ca7..530fc959a 100644
---
a/parquet-column/src/main/java/org/apache/parquet/column/page/PageReader.java
+++
b/parquet-column/src/main/java/org/apache/parquet/column/page/PageReader.java
@@ -21,7 +21,7 @@ package org.apache.parquet.column.page;
/**
* Reader for a sequence a page from a given column chunk
*/
-public interface PageReader {
+public interface PageReader extends AutoCloseable {
/**
* @return the dictionary page in that chunk or null if none
@@ -37,4 +37,10 @@ public interface PageReader {
* @return the next page in that chunk or null if after the last page
*/
DataPage readPage();
+
+ /**
+ * Releases any resources this reader holds (buffers, native handles, etc.).
+ */
+ @Override
+ default void close() {}
}
diff --git
a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ColumnChunkPageReadStore.java
b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ColumnChunkPageReadStore.java
index dfdd6c5d8..3e3f24215 100644
---
a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ColumnChunkPageReadStore.java
+++
b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ColumnChunkPageReadStore.java
@@ -338,7 +338,8 @@ class ColumnChunkPageReadStore implements PageReadStore,
DictionaryPageReadStore
}
}
- private void releaseBuffers() {
+ @Override
+ public void close() {
releaser.close();
}
}
@@ -415,7 +416,7 @@ class ColumnChunkPageReadStore implements PageReadStore,
DictionaryPageReadStore
// Wrap each reader + the releaser as an AutoCloseable so
AutoCloseables.uncheckedClose()
// releases every resource even if one fails, and aggregates failures via
suppressed exceptions
List<AutoCloseable> toClose = new ArrayList<>(readers.size() + 1);
- readers.values().forEach(reader -> toClose.add(reader::releaseBuffers));
+ readers.values().forEach(reader -> toClose.add(reader));
toClose.add(releaser);
AutoCloseables.uncheckedClose(toClose);
}