fix: Java 8 compatibility for KMinSampling and benchmarks by james-willis · Pull Request #817 · graphframes/graphframes

added 2 commits

March 30, 2026 16:27
…compat

List.of() was added in Java 9 and breaks the release build on JDK 8
(Spark 3.5.x). Fixes graphframes#804.
JDK 8 was only tested during publish (push to main), so Java 8
incompatibilities like List.of() were not caught on PRs.

@james-willis

Path.of() was added in Java 11. Paths.get() is available since Java 7.

@james-willis james-willis changed the title fix: replace List.of with Collections.emptyList for Java 8 compat fix: Java 8 compatibility for KMinSampling and benchmarks

Mar 30, 2026
LDBC test data downloads fail on JDK 8 due to Cloudflare TLS
fingerprinting (JA3) rejecting Java 8's older TLS stack with 403.
JDK 8 entry only needs to verify compilation; tests run on JDK 11/17.

@james-willis

… JDK 8

The LDBC CDN is behind Cloudflare, which uses TLS fingerprinting (JA3)
to detect automated traffic. Java 8's TLS stack produces a distinctive
fingerprint that Cloudflare rejects with HTTP 403. Java 11+ rewrote the
TLS implementation (JEP 332) so its fingerprint is not flagged.

Replace URLConnection with curl in both LDBCUtils and ParquetDataLoader.
This is consistent with the existing use of shell commands (zstd, tar)
in these files.

@james-willis

@james-willis

SemyonSinchenko

@james-willis

Per review: preserve the original download code so it can be restored
after Spark 3.5.x EOL (~April 2026) when JDK 8 support is dropped.

SemyonSinchenko