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"

Reply via email to