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);
   }

Reply via email to