This is an automated email from the ASF dual-hosted git repository.
tballison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new c8d4fa1b65 TIKA-4920: nightly locale build, one full reactor per
priority locale (#3308)
c8d4fa1b65 is described below
commit c8d4fa1b6568b8ad69acd5981dcd2197314a2531
Author: Tim Allison <[email protected]>
AuthorDate: Tue Oct 6 19:38:56 2026 -0400
TIKA-4920: nightly locale build, one full reactor per priority locale
(#3308)
---
.github/workflows/main-jdk17-build.yml | 2 +-
.github/workflows/main-jdk17-windows-build.yml | 4 +--
.github/workflows/main-jdk21-build.yml | 2 +-
.github/workflows/main-jdk25-build.yml | 2 +-
...in-jdk21-build.yml => nightly-locale-build.yml} | 37 ++++++++++++++++------
.skills/devs/development/SKILL.md | 5 +--
6 files changed, 35 insertions(+), 17 deletions(-)
diff --git a/.github/workflows/main-jdk17-build.yml
b/.github/workflows/main-jdk17-build.yml
index 05a9447e33..6e072074c7 100644
--- a/.github/workflows/main-jdk17-build.yml
+++ b/.github/workflows/main-jdk17-build.yml
@@ -97,7 +97,7 @@ jobs:
# single-threaded, and javadoc breakage is caught on main within the
hour;
# PR pushes should not wait on it.
# Random test locales (-Dtika.test.locale=random, RandomLocaleListener)
stay off
- # in CI until the remaining locale-dependent tests are fixed (TIKA-4920).
+ # here until nightly-locale-build has been green several nights running
(TIKA-4920).
- name: Build with Maven
run: |
mvn install -Pfast -pl :tika-annotation-processor -am -B -q
diff --git a/.github/workflows/main-jdk17-windows-build.yml
b/.github/workflows/main-jdk17-windows-build.yml
index 3961ef2eac..3de95a6f1b 100644
--- a/.github/workflows/main-jdk17-windows-build.yml
+++ b/.github/workflows/main-jdk17-windows-build.yml
@@ -20,8 +20,8 @@
# - child JVMs (tika-server, pipes forks) started under a non-en_US locale
#
# In-process tests can run under a random default locale
-# (-Dtika.test.locale=random, RandomLocaleListener; off in CI until the
remaining
-# locale-dependent tests are fixed, TIKA-4920); this one runs them under
+# (-Dtika.test.locale=random, RandomLocaleListener; nightly-locale-build does,
the
+# PR jobs will again once it stays green, TIKA-4920); this one runs them under
# de_DE. Pipes forks receive their parent's locale as -D flags, but JVMs the
# tests start themselves (tika-server) inherit only the environment, hence
# JAVA_TOOL_OPTIONS here, which every JVM reads at startup.
diff --git a/.github/workflows/main-jdk21-build.yml
b/.github/workflows/main-jdk21-build.yml
index 3aa717983a..dba342210d 100644
--- a/.github/workflows/main-jdk21-build.yml
+++ b/.github/workflows/main-jdk21-build.yml
@@ -48,4 +48,4 @@ jobs:
key: maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }}
restore-keys: maven-${{ runner.os }}-
- name: Build with Maven
- run: mvn install -Pfast -pl :tika-annotation-processor -am -B -q &&
mvn clean test install javadoc:aggregate -Pci -T1C -Dtika.test.locale=random -B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
+ run: mvn install -Pfast -pl :tika-annotation-processor -am -B -q &&
mvn clean test install javadoc:aggregate -Pci -T1C -B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
diff --git a/.github/workflows/main-jdk25-build.yml
b/.github/workflows/main-jdk25-build.yml
index 58187e295b..690304a24d 100644
--- a/.github/workflows/main-jdk25-build.yml
+++ b/.github/workflows/main-jdk25-build.yml
@@ -48,4 +48,4 @@ jobs:
key: maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }}
restore-keys: maven-${{ runner.os }}-
- name: Build with Maven
- run: mvn install -Pfast -pl :tika-annotation-processor -am -B -q &&
mvn clean test install javadoc:aggregate -Pci -T1C -Dtika.test.locale=random -B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
+ run: mvn install -Pfast -pl :tika-annotation-processor -am -B -q &&
mvn clean test install javadoc:aggregate -Pci -T1C -B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
diff --git a/.github/workflows/main-jdk21-build.yml
b/.github/workflows/nightly-locale-build.yml
similarity index 53%
copy from .github/workflows/main-jdk21-build.yml
copy to .github/workflows/nightly-locale-build.yml
index 3aa717983a..397a74932b 100644
--- a/.github/workflows/main-jdk21-build.yml
+++ b/.github/workflows/nightly-locale-build.yml
@@ -15,29 +15,46 @@
# limitations under the License.
#
-name: main jdk21 build
+# Every locale the random-locale listener prioritizes, each in its own
full-reactor
+# build, plus one random draw for the long tail. Nothing gates on this job: it
is
+# the canary for locale-dependent code (TIKA-4920). The rule for turning
+# -Dtika.test.locale=random back on in the PR jobs is several green nights here
+# in a row. Reproduce a failure locally with the same -Dtika.test.locale=<tag>.
+#
+# Only in-process tests see the locale: pipes forks receive their parent's
locale
+# as -D flags, but JVMs the tests start themselves (tika-server) inherit only
the
+# environment. main-jdk17-windows-build covers that surface under de_DE.
+name: nightly locale build
on:
- push:
- branches: [ main ]
- paths-ignore:
- - 'docs/**'
+ schedule:
+ - cron: '17 3 * * *'
+ workflow_dispatch:
jobs:
build:
+ if: github.repository == 'apache/tika'
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
+ fail-fast: false
matrix:
- java: [ '21' ]
+ locale:
+ - tr-TR
+ - az-Latn-AZ
+ - th-TH-u-nu-thai-x-lvariant-TH
+ - ja-JP-u-ca-japanese-x-lvariant-JP
+ - ar-EG
+ - de-DE
+ - random
steps:
- uses: actions/checkout@v7
- - name: Set up JDK ${{ matrix.java }}
+ - name: Set up JDK 17
uses: actions/setup-java@v6
with:
distribution: 'temurin'
- java-version: ${{ matrix.java }}
+ java-version: '17'
- name: Cache Maven repository
# Explicit, not setup-java's cache: 'maven', so our own snapshots stay
out of the tarball.
uses: actions/cache@v6
@@ -47,5 +64,5 @@ jobs:
!~/.m2/repository/org/apache/tika
key: maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }}
restore-keys: maven-${{ runner.os }}-
- - name: Build with Maven
- run: mvn install -Pfast -pl :tika-annotation-processor -am -B -q &&
mvn clean test install javadoc:aggregate -Pci -T1C -Dtika.test.locale=random -B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
+ - name: Build with Maven under ${{ matrix.locale }}
+ run: mvn install -Pfast -pl :tika-annotation-processor -am -B -q &&
mvn clean test install -Pci -T1C -Dtika.test.locale=${{ matrix.locale }} -B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
diff --git a/.skills/devs/development/SKILL.md
b/.skills/devs/development/SKILL.md
index fae59a1361..7735d333a6 100644
--- a/.skills/devs/development/SKILL.md
+++ b/.skills/devs/development/SKILL.md
@@ -213,8 +213,9 @@ them back. Anything hot enough to need a real seek gets a
channel from
already guarantees.
- `-Dtika.test.locale=random` runs every test JVM under a random default locale
(`RandomLocaleListener` in `tika-test-support`, wired through tika-parent);
run it
- before touching anything that formats or parses text. It is off in CI until
the
- remaining locale-dependent tests are fixed (TIKA-4920). A plain build keeps
the
+ before touching anything that formats or parses text. The PR jobs leave it
off
+ until `nightly-locale-build` (one full build per priority locale, plus a
random
+ draw) has been green several nights running (TIKA-4920). A plain build keeps
the
JVM's own locale. A failure's stack trace and the fork's stderr name the
locale;
reproduce with `-Dtika.test.locale=<tag>`. A test that fails only
in some locales is a bug in the code under test (use `Locale.ROOT`), not a