Skip to content

Commit

Permalink
chore(java): enable separate java builds (#2457)
Browse files Browse the repository at this point in the history
The java build with full java 8 / 11 / 17 compile and tests takes a long
time.
This PR separate the builds so that they can be paralleled

---------

Co-authored-by: Lei Xu <lei@lancedb.com>
  • Loading branch information
LuQQiu and eddyxu authored Jun 23, 2024
1 parent 25ea7fb commit 7cd11b8
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 56 deletions.
105 changes: 54 additions & 51 deletions .github/workflows/java.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
name: Build and Run Java JNI Tests

on:
push:
branches:
Expand All @@ -8,6 +9,7 @@ on:
- java/**
- rust/**
- .github/workflows/java.yml

env:
# This env var is used by Swatinem/rust-cache@v2 for the cache
# key, so we set it to make sure it is always consistent.
Expand All @@ -20,74 +22,75 @@ env:
# CI builds are faster with incremental disabled.
CARGO_INCREMENTAL: "0"
CARGO_BUILD_JOBS: "1"

jobs:
linux-build:
rust-clippy-fmt:
runs-on: ubuntu-22.04
name: ubuntu-22.04 + Java 11 & 17
name: Rust Clippy and Fmt Check
defaults:
run:
working-directory: ./java
working-directory: ./java/core/lance-jni
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
with:
workspaces: java/java-jni
workspaces: java/core/lance-jni
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y protobuf-compiler libssl-dev
- name: Run cargo fmt
run: cargo fmt --check
working-directory: ./java/core/lance-jni
- name: Rust Clippy
run: cargo clippy --all-targets -- -D warnings

build-and-test-java:
runs-on: ubuntu-22.04
strategy:
matrix:
java-version: [8, 11, 17]
name: Build and Test with Java ${{ matrix.java-version }}
defaults:
run:
working-directory: ./java
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
with:
workspaces: java/core/lance-jni
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y protobuf-compiler libssl-dev
- name: Install Java 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: "maven"
- run: echo "JAVA_17=$JAVA_HOME" >> $GITHUB_ENV
- name: Install Java 8
- name: Set up Java ${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 8
java-version: ${{ matrix.java-version }}
cache: "maven"
- run: echo "JAVA_8=$JAVA_HOME" >> $GITHUB_ENV
- name: Install Java 11
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 11
cache: "maven"
- name: Java Style Check
run: mvn checkstyle:check
- name: Rust Clippy
working-directory: java/core/lance-jni
run: cargo clippy --all-targets -- -D warnings
- name: Running tests with Java 11
run: mvn clean test
- name: Running tests with Java 8
run: JAVA_HOME=$JAVA_8 mvn clean test
- name: Running tests with Java 17
- name: Running tests with Java ${{ matrix.java-version }}
run: |
export JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS \
-XX:+IgnoreUnrecognizedVMOptions \
--add-opens=java.base/java.lang=ALL-UNNAMED \
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED \
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED \
--add-opens=java.base/java.io=ALL-UNNAMED \
--add-opens=java.base/java.net=ALL-UNNAMED \
--add-opens=java.base/java.nio=ALL-UNNAMED \
--add-opens=java.base/java.util=ALL-UNNAMED \
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED \
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED \
--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED \
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
--add-opens=java.base/sun.nio.cs=ALL-UNNAMED \
--add-opens=java.base/sun.security.action=ALL-UNNAMED \
--add-opens=java.base/sun.util.calendar=ALL-UNNAMED \
--add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED \
-Djdk.reflect.useDirectMethodHandle=false \
-Dio.netty.tryReflectionSetAccessible=true"
JAVA_HOME=$JAVA_17 mvn clean test
if [ "${{ matrix.java-version }}" == "17" ]; then
export JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS \
-XX:+IgnoreUnrecognizedVMOptions \
--add-opens=java.base/java.lang=ALL-UNNAMED \
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED \
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED \
--add-opens=java.base/java.io=ALL-UNNAMED \
--add-opens=java.base/java.net=ALL-UNNAMED \
--add-opens=java.base/java.nio=ALL-UNNAMED \
--add-opens=java.base/java.util=ALL-UNNAMED \
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED \
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED \
--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED \
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
--add-opens=java.base/sun.nio.cs=ALL-UNNAMED \
--add-opens=java.base/sun.security.action=ALL-UNNAMED \
--add-opens=java.base/sun.util.calendar=ALL-UNNAMED \
--add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED \
-Djdk.reflect.useDirectMethodHandle=false \
-Dio.netty.tryReflectionSetAccessible=true"
fi
mvn clean test
7 changes: 3 additions & 4 deletions java/core/lance-jni/src/fragment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,6 @@ use crate::{
RT,
};

///////////////////
// Write Methods //
///////////////////

//////////////////
// Read Methods //
//////////////////
Expand Down Expand Up @@ -70,6 +66,9 @@ fn inner_count_rows_native(
Ok(res)
}

///////////////////
// Write Methods //
///////////////////
#[no_mangle]
pub extern "system" fn Java_com_lancedb_lance_Fragment_createWithFfiArray<'local>(
mut env: JNIEnv<'local>,
Expand Down
2 changes: 1 addition & 1 deletion java/core/src/main/java/com/lancedb/lance/Dataset.java
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ public long latestVersion() {
/**
* Count the number of rows in the dataset.
*
* @return num of rows.
* @return num of rows
*/
public int countRows() {
try (LockManager.ReadLock readLock = lockManager.acquireReadLock()) {
Expand Down

0 comments on commit 7cd11b8

Please sign in to comment.