Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
ae79618
feat(build): bump Scala/Java services to Java 17 LTS
bobbai00 May 5, 2026
1342f1d
Merge branch 'main' into feat/bump-java-17
bobbai00 May 5, 2026
17abe7d
ci(amber): move JDK 17 --add-opens into sbt-side JdkOptions
bobbai00 May 5, 2026
6b307fd
ci(build): apply JDK 17 --add-opens project-wide via ThisBuild
bobbai00 May 5, 2026
04afce7
Merge branch 'main' into feat/bump-java-17
bobbai00 May 5, 2026
706b29d
ci(build): pin forked test JVM CWD to build root
bobbai00 May 5, 2026
d24012d
ci(build): use .jvmopts instead of forked-test javaOptions
bobbai00 May 5, 2026
268ff38
Merge branch 'main' into feat/bump-java-17
bobbai00 May 6, 2026
b898b48
Merge branch 'main' into feat/bump-java-17
aglinxinyuan May 6, 2026
8d74587
add asf header
bobbai00 May 6, 2026
010f622
Merge branch 'main' into feat/bump-java-17
bobbai00 May 8, 2026
826b08a
fix: route .jvmopts flags to forked test JVMs, dist launchers, and In…
bobbairobot May 8, 2026
f262ddb
fix: restore ASF license header on ComputingUnitMaster/Worker run con…
bobbairobot May 8, 2026
bb7ee3d
Merge branch 'main' into feat/bump-java-17
bobbai00 May 8, 2026
7c991c0
fix: add java.util.concurrent.atomic --add-opens for Kryo checkpoints
bobbairobot May 9, 2026
588723c
Merge branch 'main' into feat/bump-java-17
bobbai00 May 9, 2026
a6ed616
docs: tighten JDK-17 add-opens comments and AGENTS.md
bobbairobot May 9, 2026
aceae40
simplify comments and jvmopts
bobbairobot May 9, 2026
1300bd4
chore: keep texera.amber module name in Master/Worker run configs
bobbairobot May 9, 2026
4c2c2a8
fix: copy .jvmopts into Docker build stage so dist launchers get the …
bobbairobot May 9, 2026
daa7a42
docs: clarify the .jvmopts maintenance note in AGENTS.md
bobbairobot May 9, 2026
c3c5414
improve agents.md
bobbairobot May 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/build-and-push-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ jobs:
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 11
java-version: 17

- name: Setup sbt launcher
uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
Expand Down Expand Up @@ -325,7 +325,7 @@ jobs:
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 11
java-version: 17

- name: Setup sbt launcher
uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
Expand Down Expand Up @@ -405,7 +405,7 @@ jobs:
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 11
java-version: 17

- name: Setup sbt launcher
uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-22.04]
java-version: [11]
java-version: [17]
runs-on: ${{ matrix.os }}
env:
JAVA_OPTS: -Xms2048M -Xmx2048M -Xss6M -XX:ReservedCodeCacheSize=256M -Dfile.encoding=UTF-8
Expand Down Expand Up @@ -175,7 +175,7 @@ jobs:
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: 11
java-version: 17
- name: Create Databases
# Must run before any sbt compile step: the build's JOOQ source
# generators connect to texera_db while compiling.
Expand Down Expand Up @@ -262,7 +262,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-22.04]
java-version: [11]
java-version: [17]
runs-on: ${{ matrix.os }}
env:
JAVA_OPTS: -Xms2048M -Xmx2048M -Xss6M -XX:ReservedCodeCacheSize=256M -Dfile.encoding=UTF-8
Expand Down Expand Up @@ -293,7 +293,7 @@ jobs:
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: 11
java-version: 17
- name: Setup Python for Scala-Python integration tests
uses: actions/setup-python@v6
with:
Expand Down Expand Up @@ -405,7 +405,7 @@ jobs:
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: 11
java-version: 17
- name: Setup sbt launcher
uses: sbt/setup-sbt@508b753e53cb6095967669e0911487d2b9bc9f41 # v1.1.22
- uses: coursier/cache-action@90c37294538be80a558fd665531fcdc2b467b475 # v8.1.0
Expand Down
28 changes: 28 additions & 0 deletions .jvmopts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 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.
#
# Required by Kryo: https://github.com/altoo-ag/pekko-kryo-serialization#using-kryo-on-jdk-17
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED

# Required by Apache Arrow: https://arrow.apache.org/java/main/install.html
--add-opens=java.base/java.nio=ALL-UNNAMED

# Required by Apache Pekko: https://pekko.apache.org/docs/pekko/snapshot/release-notes/releases-2.0.html
--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
1 change: 1 addition & 0 deletions .run/ComputingUnitMaster.run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ under the License.
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ComputingUnitMaster" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="org.apache.texera.web.ComputingUnitMaster" />
<option name="VM_PARAMETERS" value="@$PROJECT_DIR$/.jvmopts" />
<module name="texera.amber" />
<shortenClasspath name="ARGS_FILE" />
<extension name="coverage">
Expand Down
1 change: 1 addition & 0 deletions .run/ComputingUnitWorker.run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ under the License.
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="ComputingUnitWorker" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="org.apache.texera.web.ComputingUnitWorker" />
<option name="VM_PARAMETERS" value="@$PROJECT_DIR$/.jvmopts" />
<module name="texera.amber" />
<shortenClasspath name="ARGS_FILE" />
<extension name="coverage">
Expand Down
12 changes: 11 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ merge.

| Component | Version |
| --- | --- |
| Java | JDK 11 |
| Java | JDK 17 |
| Scala | 2.13 |
| Python | 3.12 |
| Node | 24 |
Expand All @@ -90,6 +90,16 @@ in [`udf.conf`](common/config/src/main/resources/udf.conf) or
`export UDF_PYTHON_PATH="$(pwd)/../venv312/bin/python"` (env var overrides).
Without it, `sbt` Python-integration tests fail to launch a worker.

[`.jvmopts`](.jvmopts) holds every `--add-opens` flag Texera needs for
JDK 17+, with each group annotated by its upstream source (Kryo,
Apache Arrow, Apache Pekko). sbt's launcher and the [`.run/`](.run)
configs read it automatically; for raw `java` launches, pass it as an
argfile: `java @.jvmopts -jar …`. If a future library version or a new
code path triggers an `InaccessibleObjectException`, add the open to
`.jvmopts`. [`project/JdkOptions.scala`](project/JdkOptions.scala)
will propagates the changed options to forked test JVMs, sbt-native-packager dist launchers,
and IntelliJ.

### Branch and commit naming

Short, **Conventional Commits**, same shape for branch and commit subject.
Expand Down
5 changes: 3 additions & 2 deletions bin/access-control-service.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# completeness or stability of the code, it does indicate that the project
# has yet to be fully endorsed by the ASF.

FROM sbtscala/scala-sbt:eclipse-temurin-jammy-11.0.17_8_1.9.3_2.13.11 AS build
FROM sbtscala/scala-sbt:eclipse-temurin-jammy-17.0.5_8_1.9.3_2.13.11 AS build

# Set working directory
WORKDIR /texera
Expand All @@ -34,6 +34,7 @@ COPY common/ common/
COPY access-control-service/ access-control-service/
COPY project/ project/
COPY build.sbt build.sbt
COPY .jvmopts .jvmopts

# Update system and install dependencies
RUN apt-get update && apt-get install -y \
Expand All @@ -52,7 +53,7 @@ RUN sbt clean AccessControlService/dist
# Unzip the texera binary
RUN unzip access-control-service/target/universal/access-control-service-*.zip -d target/

FROM eclipse-temurin:11-jre-jammy AS runtime
FROM eclipse-temurin:17-jre-jammy AS runtime

WORKDIR /texera

Expand Down
5 changes: 3 additions & 2 deletions bin/computing-unit-master.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# completeness or stability of the code, it does indicate that the project
# has yet to be fully endorsed by the ASF.

FROM sbtscala/scala-sbt:eclipse-temurin-jammy-11.0.17_8_1.9.3_2.13.11 AS build
FROM sbtscala/scala-sbt:eclipse-temurin-jammy-17.0.5_8_1.9.3_2.13.11 AS build

# Set working directory
WORKDIR /texera
Expand All @@ -34,6 +34,7 @@ COPY common/ common/
COPY amber/ amber/
COPY project/ project/
COPY build.sbt build.sbt
COPY .jvmopts .jvmopts

# Update system and install dependencies. python3-minimal is needed by
# bin/licensing/concat_license_binary.py below.
Expand Down Expand Up @@ -64,7 +65,7 @@ RUN python3 bin/licensing/concat_license_binary.py amber/LICENSE-binary-combined
amber/LICENSE-binary-java \
amber/LICENSE-binary-python

FROM eclipse-temurin:11-jdk-jammy AS runtime
FROM eclipse-temurin:17-jdk-jammy AS runtime

WORKDIR /texera/amber

Expand Down
5 changes: 3 additions & 2 deletions bin/computing-unit-worker.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# completeness or stability of the code, it does indicate that the project
# has yet to be fully endorsed by the ASF.

FROM sbtscala/scala-sbt:eclipse-temurin-jammy-11.0.17_8_1.9.3_2.13.11 AS build
FROM sbtscala/scala-sbt:eclipse-temurin-jammy-17.0.5_8_1.9.3_2.13.11 AS build

# Set working directory
WORKDIR /texera
Expand All @@ -34,6 +34,7 @@ COPY common/ common/
COPY amber/ amber/
COPY project/ project/
COPY build.sbt build.sbt
COPY .jvmopts .jvmopts

# Update system and install dependencies. python3-minimal is needed by
# bin/licensing/concat_license_binary.py below.
Expand Down Expand Up @@ -64,7 +65,7 @@ RUN python3 bin/licensing/concat_license_binary.py amber/LICENSE-binary-combined
amber/LICENSE-binary-java \
amber/LICENSE-binary-python

FROM eclipse-temurin:11-jre-jammy AS runtime
FROM eclipse-temurin:17-jre-jammy AS runtime

WORKDIR /texera/amber

Expand Down
5 changes: 3 additions & 2 deletions bin/config-service.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# completeness or stability of the code, it does indicate that the project
# has yet to be fully endorsed by the ASF.

FROM sbtscala/scala-sbt:eclipse-temurin-jammy-11.0.17_8_1.9.3_2.13.11 AS build
FROM sbtscala/scala-sbt:eclipse-temurin-jammy-17.0.5_8_1.9.3_2.13.11 AS build

# Set working directory
WORKDIR /texera
Expand All @@ -34,6 +34,7 @@ COPY common/ common/
COPY config-service/ config-service/
COPY project/ project/
COPY build.sbt build.sbt
COPY .jvmopts .jvmopts

# Update system and install dependencies
RUN apt-get update && apt-get install -y \
Expand All @@ -52,7 +53,7 @@ RUN sbt clean ConfigService/dist
# Unzip the texera binary
RUN unzip config-service/target/universal/config-service-*.zip -d target/

FROM eclipse-temurin:11-jre-jammy AS runtime
FROM eclipse-temurin:17-jre-jammy AS runtime

WORKDIR /texera

Expand Down
5 changes: 3 additions & 2 deletions bin/file-service.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# completeness or stability of the code, it does indicate that the project
# has yet to be fully endorsed by the ASF.

FROM sbtscala/scala-sbt:eclipse-temurin-jammy-11.0.17_8_1.9.3_2.13.11 AS build
FROM sbtscala/scala-sbt:eclipse-temurin-jammy-17.0.5_8_1.9.3_2.13.11 AS build

# Set working directory
WORKDIR /texera
Expand All @@ -34,6 +34,7 @@ COPY common/ common/
COPY file-service/ file-service/
COPY project/ project/
COPY build.sbt build.sbt
COPY .jvmopts .jvmopts

# Update system and install dependencies
RUN apt-get update && apt-get install -y \
Expand All @@ -52,7 +53,7 @@ RUN sbt clean FileService/dist
# Unzip the texera binary
RUN unzip file-service/target/universal/file-service-*.zip -d target/

FROM eclipse-temurin:11-jre-jammy AS runtime
FROM eclipse-temurin:17-jre-jammy AS runtime

WORKDIR /texera

Expand Down
5 changes: 3 additions & 2 deletions bin/texera-web-application.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ RUN echo "nodeLinker: node-modules" >> /frontend/.yarnrc.yml
WORKDIR /frontend
RUN yarn install && yarn run build

FROM sbtscala/scala-sbt:eclipse-temurin-jammy-11.0.17_8_1.9.3_2.13.11 AS build
FROM sbtscala/scala-sbt:eclipse-temurin-jammy-17.0.5_8_1.9.3_2.13.11 AS build

# Set working directory
WORKDIR /texera
Expand All @@ -48,6 +48,7 @@ COPY common/ common/
COPY amber/ amber/
COPY project/ project/
COPY build.sbt build.sbt
COPY .jvmopts .jvmopts

# Update system and install dependencies. python3-minimal is needed by
# bin/licensing/concat_license_binary.py below.
Expand Down Expand Up @@ -82,7 +83,7 @@ RUN python3 bin/licensing/concat_license_binary.py amber/LICENSE-binary-combined
amber/LICENSE-binary-java \
amber/LICENSE-binary-frontend

FROM eclipse-temurin:11-jre-jammy AS runtime
FROM eclipse-temurin:17-jre-jammy AS runtime

WORKDIR /texera/amber
# Copy built frontend files from the build-frontend stage to match FileAssetsBundle path (../../frontend/dist from /texera/amber)
Expand Down
5 changes: 3 additions & 2 deletions bin/workflow-compiling-service.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# completeness or stability of the code, it does indicate that the project
# has yet to be fully endorsed by the ASF.

FROM sbtscala/scala-sbt:eclipse-temurin-jammy-11.0.17_8_1.9.3_2.13.11 AS build
FROM sbtscala/scala-sbt:eclipse-temurin-jammy-17.0.5_8_1.9.3_2.13.11 AS build

# Set working directory
WORKDIR /texera
Expand All @@ -34,6 +34,7 @@ COPY common/ common/
COPY workflow-compiling-service/ workflow-compiling-service/
COPY project/ project/
COPY build.sbt build.sbt
COPY .jvmopts .jvmopts

# Update system and install dependencies
RUN apt-get update && apt-get install -y \
Expand All @@ -52,7 +53,7 @@ RUN sbt clean WorkflowCompilingService/dist
# Unzip the texera binary
RUN unzip workflow-compiling-service/target/universal/workflow-compiling-service-*.zip -d target/

FROM eclipse-temurin:11-jre-jammy AS runtime
FROM eclipse-temurin:17-jre-jammy AS runtime

WORKDIR /texera

Expand Down
5 changes: 3 additions & 2 deletions bin/workflow-computing-unit-managing-service.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# completeness or stability of the code, it does indicate that the project
# has yet to be fully endorsed by the ASF.

FROM sbtscala/scala-sbt:eclipse-temurin-jammy-11.0.17_8_1.9.3_2.13.11 AS build
FROM sbtscala/scala-sbt:eclipse-temurin-jammy-17.0.5_8_1.9.3_2.13.11 AS build

# Set working directory
WORKDIR /texera
Expand All @@ -34,6 +34,7 @@ COPY common/ common/
COPY computing-unit-managing-service/ computing-unit-managing-service/
COPY project/ project/
COPY build.sbt build.sbt
COPY .jvmopts .jvmopts

# Update system and install dependencies
RUN apt-get update && apt-get install -y \
Expand All @@ -52,7 +53,7 @@ RUN sbt clean ComputingUnitManagingService/dist
# Unzip the texera binary
RUN unzip computing-unit-managing-service/target/universal/computing-unit-managing-service-*.zip -d target/

FROM eclipse-temurin:11-jre-jammy AS runtime
FROM eclipse-temurin:17-jre-jammy AS runtime

WORKDIR /texera

Expand Down
14 changes: 12 additions & 2 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ ThisBuild / organization := "org.apache.texera"
ThisBuild / version := "1.1.0-incubating"
ThisBuild / scalaVersion := "2.13.18"

// Pull JDK 17+ JVM flags from .jvmopts so every JVM the build launches sees the same list.
import com.typesafe.sbt.packager.universal.UniversalPlugin.autoImport.Universal
ThisBuild / Test / javaOptions ++=
JdkOptions.jvmFlags((ThisBuild / baseDirectory).value)

// sbt-jacoco emits only HTML by default; add XML so Codecov can consume
// per-module jacoco.xml at target/scala-2.13/jacoco/report/jacoco.xml.
// JacocoPlugin defines a project-scoped default that overrides ThisBuild,
Expand All @@ -30,13 +35,18 @@ lazy val coverageReportSettings = Seq(
.withFormats(JacocoReportFormats.ScalaHTML, JacocoReportFormats.XML)
)

lazy val universalJvmFlagsSettings = Seq(
Universal / javaOptions ++=
JdkOptions.jvmFlags((ThisBuild / baseDirectory).value).map("-J" + _)
)

// Per-module ASF licensing: each jar's META-INF/LICENSE describes only what is in that jar.
// Modules without vendored code get Apache 2.0 only; workflow-operator includes mbknor attribution.
// See project/AddMetaInfLicenseFiles.scala.
// Dist-producing modules additionally override Universal / mappings in their own
// build.sbt (not here) — see AddMetaInfLicenseFiles.distMappings.
lazy val asfLicensingSettings = AddMetaInfLicenseFiles.defaultSettings ++ coverageReportSettings
lazy val asfLicensingSettingsWithVendored = AddMetaInfLicenseFiles.workflowOperatorSettings ++ coverageReportSettings
lazy val asfLicensingSettings = AddMetaInfLicenseFiles.defaultSettings ++ coverageReportSettings ++ universalJvmFlagsSettings
lazy val asfLicensingSettingsWithVendored = AddMetaInfLicenseFiles.workflowOperatorSettings ++ coverageReportSettings ++ universalJvmFlagsSettings

val jacksonVersion = "2.18.6"

Expand Down
Loading
Loading