This is an automated email from the ASF dual-hosted git repository.

Fokko 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 7a6f2695c MINOR: Upgrade thrift to 0.24 (#3730)
7a6f2695c is described below

commit 7a6f2695c594d00995dfc5237f2426fdd2035b3e
Author: Aaron Niskode-Dossett <[email protected]>
AuthorDate: Tue Sep 1 11:45:51 2026 -0500

    MINOR: Upgrade thrift to 0.24 (#3730)
    
    * Bumpt thrift to 0.24
    
    * Add an EXPERIMENTAL dockerfile for development
---
 README.md                | 12 ++++-----
 dev/ci-before_install.sh |  2 +-
 dev/docker/Dockerfile    | 64 ++++++++++++++++++++++++++++++++++++++++++++
 dev/docker/README.md     | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
 pom.xml                  |  2 +-
 5 files changed, 141 insertions(+), 8 deletions(-)

diff --git a/README.md b/README.md
index aef3cbad9..48b5b3e40 100644
--- a/README.md
+++ b/README.md
@@ -43,23 +43,23 @@ Parquet-Java requires Java 17 or higher and uses Maven to 
build. It also depends
 To build and install the thrift compiler, run:
 
 ```
-wget -nv https://archive.apache.org/dist/thrift/0.23.0/thrift-0.23.0.tar.gz
-tar xzf thrift-0.23.0.tar.gz
-cd thrift-0.23.0
+wget -nv https://archive.apache.org/dist/thrift/0.24.0/thrift-0.24.0.tar.gz
+tar xzf thrift-0.24.0.tar.gz
+cd thrift-0.24.0
 chmod +x ./configure
 ./configure --disable-libs
 sudo make install -j
 ```
 
 Note: if you wish to verify the signature and checksum of a release:
-1. The GPG and sha checksums can be found under 
https://archive.apache.org/dist/thrift/0.23.0/
+1. The GPG and sha checksums can be found under 
https://archive.apache.org/dist/thrift/0.24.0/
 2. Validate the signature of the artifact against the [Thrift committer 
KEYS](https://downloads.apache.org/thrift/KEYS).
 
-If you're on OSX and use homebrew, you can instead install Thrift 0.23.0 with 
`brew` and ensure that it comes first in your `PATH`.
+If you're on OSX and use homebrew, you can instead install Thrift 0.24.0 with 
`brew` and ensure that it comes first in your `PATH`.
 
 ```
 brew install thrift
-export PATH="/usr/local/opt/[email protected]/bin:$PATH"
+export PATH="$(brew --prefix thrift)/bin:$PATH"
 ```
 
 ### Build Parquet with Maven
diff --git a/dev/ci-before_install.sh b/dev/ci-before_install.sh
index e5dad054d..348f55809 100755
--- a/dev/ci-before_install.sh
+++ b/dev/ci-before_install.sh
@@ -20,7 +20,7 @@
 # This script gets invoked by the CI system in a "before install" step
 
################################################################################
 
-export THRIFT_VERSION=0.23.0
+export THRIFT_VERSION=0.24.0
 
 set -e
 set -o pipefail
diff --git a/dev/docker/Dockerfile b/dev/docker/Dockerfile
new file mode 100644
index 000000000..a15159e58
--- /dev/null
+++ b/dev/docker/Dockerfile
@@ -0,0 +1,64 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+FROM maven:3.9.8-eclipse-temurin-17
+
+ARG THRIFT_VERSION=0.24.0
+ARG 
THRIFT_SHA256=e0fa5839a4c5c1d631b0931cf2c554ebbfa4e2fee3a9fb3ffd4f82ce4396c6e4
+
+USER root
+
+RUN set -eux; \
+    apt-get update; \
+    apt-get install --yes --no-install-recommends \
+      autoconf \
+      automake \
+      bison \
+      ca-certificates \
+      flex \
+      g++ \
+      libboost-dev \
+      libevent-dev \
+      libssl-dev \
+      libtool \
+      make \
+      pkg-config \
+      wget; \
+    wget --quiet --output-document=/tmp/thrift.tar.gz \
+      
"https://archive.apache.org/dist/thrift/${THRIFT_VERSION}/thrift-${THRIFT_VERSION}.tar.gz";;
 \
+    echo "${THRIFT_SHA256}  /tmp/thrift.tar.gz" | sha256sum --check --status; \
+    mkdir /tmp/thrift-src; \
+    tar --extract --gzip --file=/tmp/thrift.tar.gz --directory=/tmp/thrift-src 
--strip-components=1; \
+    cd /tmp/thrift-src; \
+    chmod +x ./configure; \
+    ./configure --disable-libs; \
+    make -j"$(nproc)"; \
+    make install; \
+    thrift -version | grep --fixed-strings "Thrift version ${THRIFT_VERSION}"; 
\
+    rm -rf /tmp/thrift.tar.gz /tmp/thrift-src /var/lib/apt/lists/*
+
+RUN useradd --create-home --user-group --shell /bin/bash parquet \
+    && install --directory --owner=parquet --group=parquet /workspace 
/home/parquet/.m2
+
+ENV MAVEN_CONFIG=/home/parquet/.m2
+# TestLargeColumnChunk intentionally writes a 4 GiB row group.
+ENV JAVA_TOOL_OPTIONS=-Xmx6g
+
+USER parquet
+WORKDIR /workspace
+
+CMD ["bash"]
diff --git a/dev/docker/README.md b/dev/docker/README.md
new file mode 100644
index 000000000..6840be789
--- /dev/null
+++ b/dev/docker/README.md
@@ -0,0 +1,69 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+# Parquet developer container
+
+**Status:** Experimental developer tooling. This Dockerfile is not officially 
supported.
+
+This image provides the Java 17, Maven 3.9.8, and Thrift 0.24.0 toolchain used 
to build Parquet-Java. It deliberately does not copy project sources into the 
image: mount the checkout you are actively editing at `/workspace`.
+
+## Build the image
+
+From the repository root, run:
+
+```bash
+docker build --tag parquet-java-dev --file dev/docker/Dockerfile dev/docker
+```
+
+Verify the container's Thrift compiler:
+
+```bash
+docker run --rm parquet-java-dev thrift -version
+```
+
+## Work in the container
+
+Start an interactive shell with the current checkout and a persistent Maven 
dependency cache:
+
+```bash
+docker run --rm --init --interactive --tty \
+  --mount "type=bind,src=$PWD,dst=/workspace" \
+  --mount type=volume,src=parquet-java-m2,dst=/home/parquet/.m2 \
+  parquet-java-dev
+```
+
+Build and test the local checkout without opening a shell:
+
+```bash
+docker run --rm --init \
+  --mount "type=bind,src=$PWD,dst=/workspace" \
+  --mount type=volume,src=parquet-java-m2,dst=/home/parquet/.m2 \
+  parquet-java-dev \
+  ./mvnw --batch-mode test
+```
+
+The full suite includes a test that writes a 4 GiB row group. Configure Docker 
with at least 8 GiB of memory; the image gives JVM processes a 6 GiB maximum 
heap by default. Override that setting when needed with `--env 
JAVA_TOOL_OPTIONS=-Xmx<heap-size>`.
+
+## Reuse the host Maven cache
+
+The commands above use the persistent `parquet-java-m2` Docker volume. To 
reuse the local Maven repository instead, replace its volume mount with:
+
+```bash
+--mount "type=bind,src=$HOME/.m2,dst=/home/parquet/.m2"
+```
diff --git a/pom.xml b/pom.xml
index 57b89b537..592ac98b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,7 +89,7 @@
     <thrift.executable>thrift</thrift.executable>
     <format.thrift.executable>${thrift.executable}</format.thrift.executable>
     <thrift-maven-plugin.version>0.10.0</thrift-maven-plugin.version>
-    <thrift.version>0.23.0</thrift.version>
+    <thrift.version>0.24.0</thrift.version>
     <format.thrift.version>${thrift.version}</format.thrift.version>
     <fastutil.version>8.5.19</fastutil.version>
     <semver.api.version>0.9.33</semver.api.version>

Reply via email to