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 f9ed0cbee6 TIKA-4867 -- parallelize CI reactors with -T1C, run
apache-rat serially (#3112)
f9ed0cbee6 is described below
commit f9ed0cbee6560bece11d6b44b47cfef6973668ea
Author: Tim Allison <[email protected]>
AuthorDate: Mon Aug 31 16:31:50 2026 -0400
TIKA-4867 -- parallelize CI reactors with -T1C, run apache-rat serially
(#3112)
---
.github/workflows/main-jdk17-build.yml | 22 +++++++++++++++++++---
.github/workflows/main-jdk17-locale-build.yml | 3 ++-
.github/workflows/main-jdk17-windows-build.yml | 2 +-
.github/workflows/main-jdk21-build.yml | 2 +-
.github/workflows/main-jdk25-build.yml | 2 +-
5 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/main-jdk17-build.yml
b/.github/workflows/main-jdk17-build.yml
index 5f1a0e1568..213485d4de 100644
--- a/.github/workflows/main-jdk17-build.yml
+++ b/.github/workflows/main-jdk17-build.yml
@@ -67,9 +67,25 @@ jobs:
run: sudo apt-get update && sudo apt-get install -y ffmpeg
libimage-exiftool-perl
# Everything except $IT_MODULES, which the integration-tests job owns.
# sed turns each ':artifactId' into the '!:artifactId' exclusion form.
+ # rat runs in its own SERIAL invocation: apache-rat-plugin 0.18 is not
+ # thread-safe (ConcurrentModificationException / corrupted counters under
+ # -T), so it must never share a -T1C command line.
+ - name: License check (apache-rat, serial)
+ run: |
+ mvn apache-rat:check -Pci \
+ -pl "$(echo "$IT_MODULES" | sed 's/:/!:/g')" \
+ -B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
+ # Pre-install tika-annotation-processor before any -T1C invocation:
+ # annotationProcessorPaths resolves from the LOCAL REPO, not the reactor,
+ # so parallel Maven schedules consumers before the processor's install
+ # and the build races to "Could not find artifact
tika-annotation-processor".
+ # javadoc:aggregate is push-only: it is an aggregate-docs artifact, is
+ # single-threaded, and javadoc breakage is caught on main within the
hour;
+ # PR pushes should not wait on it.
- name: Build with Maven
run: |
- mvn clean apache-rat:check test install javadoc:aggregate -Pci \
+ mvn install -Pfast -pl :tika-annotation-processor -am -B -q
+ mvn clean test install ${{ github.event_name == 'push' &&
'javadoc:aggregate' || '' }} -Pci -T1C \
-pl "$(echo "$IT_MODULES" | sed 's/:/!:/g')" \
-B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
@@ -97,7 +113,7 @@ jobs:
# jar-packaging reactor module, so -am cannot supply them. -Pfast keeps
it
# to ~3 min; the tests themselves run in the next step.
- name: Install all modules (produces the plugin zips)
- run: mvn clean install -Pfast -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 install -Pfast -T1C -B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
# apache-rat:check here too -- the build job no longer sees these
modules,
# so without this they would drop out of license checking entirely.
- name: Run integration tests
@@ -132,7 +148,7 @@ jobs:
# what puts each zip in the local repo. -Pfast (skipTests +
rat/checkstyle/spotless
# off) because the build job owns all of that; this job only needs the
artifacts.
- name: Install all modules (produces the plugin zips)
- run: mvn clean install -Pfast -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 install -Pfast -T1C -B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
# -pl must name the leaf modules: tika-e2e-tests is an aggregator pom,
and Maven does
# not pull in a selected aggregator's children, so this job built two
pom-only modules
# and ran zero tests while reporting green.
diff --git a/.github/workflows/main-jdk17-locale-build.yml
b/.github/workflows/main-jdk17-locale-build.yml
index e4d5533eb1..83d59e3794 100644
--- a/.github/workflows/main-jdk17-locale-build.yml
+++ b/.github/workflows/main-jdk17-locale-build.yml
@@ -59,7 +59,8 @@ jobs:
# forgetting only makes this job slower, it does not weaken it.
- name: Build with Maven (tr_TR locale)
run: |
- mvn clean test install -Pci \
+ mvn install -Pfast -pl :tika-annotation-processor -am -B -q
+ mvn clean test install -Pci -T1C \
-pl
'!:tika-pipes-es-integration-tests,!:tika-pipes-kafka-integration-tests,!:tika-pipes-opensearch-integration-tests,!:tika-pipes-s3-integration-tests,!:tika-pipes-solr-integration-tests'
\
-Duser.language=tr -Duser.country=TR \
-B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
diff --git a/.github/workflows/main-jdk17-windows-build.yml
b/.github/workflows/main-jdk17-windows-build.yml
index 3c1bc52bdd..c75e3e2e30 100644
--- a/.github/workflows/main-jdk17-windows-build.yml
+++ b/.github/workflows/main-jdk17-windows-build.yml
@@ -61,4 +61,4 @@ jobs:
# The -Duser.* args MUST stay quoted: PowerShell splits an unquoted
dotted
# -D property before it reaches mvn, so the locale silently never
applies
# and the leftover fragment fails the build as an unknown lifecycle
phase.
- run: mvn clean test install javadoc:aggregate -Pci -Pe2e
"-Duser.language=de" "-Duser.country=DE" -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 -Pe2e -T1C "-Duser.language=de"
"-Duser.country=DE" -B
"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
diff --git a/.github/workflows/main-jdk21-build.yml
b/.github/workflows/main-jdk21-build.yml
index 89b3416009..60116413e2 100644
--- a/.github/workflows/main-jdk21-build.yml
+++ b/.github/workflows/main-jdk21-build.yml
@@ -40,4 +40,4 @@ jobs:
java-version: ${{ matrix.java }}
cache: 'maven'
- name: Build with Maven
- run: mvn clean test install javadoc:aggregate -Pci -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 f74dcaf099..e8be0defb2 100644
--- a/.github/workflows/main-jdk25-build.yml
+++ b/.github/workflows/main-jdk25-build.yml
@@ -40,4 +40,4 @@ jobs:
java-version: ${{ matrix.java }}
cache: 'maven'
- name: Build with Maven
- run: mvn clean test install javadoc:aggregate -Pci -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"