Describe the bug
RegularExpressionTranspilerSuite deterministically fails in string split fuzz - anchor focused after the CI JNI snapshot changed from build 47 to build 48:
string_split java pattern=\S\r+?\n*
cudfPattern=[^ \u000b\n\t\r\f]\r+?\n*
isRegex=true data=\rbaab\r\ra limit=-1
CPU [2]: \rbaa, \ra
GPU [2]: \rbaa, a
The cuDF Glushkov regex path consumes both consecutive \r characters, while Java and the Thompson path preserve the reluctant +? behavior and consume only one.
The underlying cuDF regression is tracked in rapidsai/cudf#23287.
The failure currently blocks Blossom/pre-merge CI, including #15291.
Steps/Code to reproduce bug
Run the affected suite with the failing JNI/cuDF snapshot:
cd tests
LC_ALL=en_US.UTF-8 mvn -U test \
-Dbuildver=401 \
-DwildcardSuites=com.nvidia.spark.rapids.RegularExpressionTranspilerSuite
The data and regex fuzzers both use fixed seeds, so the failure is deterministic with the affected snapshot.
Expected behavior
The GPU split result should match the CPU result:
If the Glushkov engine cannot preserve lazy-quantifier semantics, cuDF should fall back to the Thompson engine.
Environment details (please complete the following information)
- Environment location: NVIDIA Blossom/pre-merge CI
- Spark configuration settings related to the issue: none
- Spark version: 4.0.1
- Scala version: 2.13
- Passing JNI snapshot:
26.08.0-20260714.071523-47-cuda12
- Failing JNI snapshot:
26.08.0-20260716.034120-48-cuda12
Additional context
Describe the bug
RegularExpressionTranspilerSuitedeterministically fails instring split fuzz - anchor focusedafter the CI JNI snapshot changed from build 47 to build 48:The cuDF Glushkov regex path consumes both consecutive
\rcharacters, while Java and the Thompson path preserve the reluctant+?behavior and consume only one.The underlying cuDF regression is tracked in rapidsai/cudf#23287.
The failure currently blocks Blossom/pre-merge CI, including #15291.
Steps/Code to reproduce bug
Run the affected suite with the failing JNI/cuDF snapshot:
The data and regex fuzzers both use fixed seeds, so the failure is deterministic with the affected snapshot.
Expected behavior
The GPU split result should match the CPU result:
If the Glushkov engine cannot preserve lazy-quantifier semantics, cuDF should fall back to the Thompson engine.
Environment details (please complete the following information)
26.08.0-20260714.071523-47-cuda1226.08.0-20260716.034120-48-cuda12Additional context
string split fuzz - anchor focusedto unblock pre-merge CI. Re-enable the test after the cuDF fix reaches the consumed JNI/cuDF snapshot.