Skip to content

DatasetDelta JNI bindings throw UnsatisfiedLinkError #6962

@LuciferYang

Description

@LuciferYang

The Java side of DatasetDelta declares its native methods with the nativeXxx convention:

private native List<Transaction> nativeListTransactions();
private native void nativeGetInsertedRows(long streamAddress);
private native void nativeGetUpdatedRows(long streamAddress);

But the Rust exports in java/lance-jni/src/delta.rs omit the native prefix:

Java_org_lance_delta_DatasetDelta_listTransactions
Java_org_lance_delta_DatasetDelta_getInsertedRows
Java_org_lance_delta_DatasetDelta_getUpdatedRows

The JVM looks up Java_<package>_<class>_<javaMethodName>, so the names never line up. Calling any of the three throws UnsatisfiedLinkError against the published jar (reproduced on 7.0.0-rc.1). releaseNativeDelta is the only one that happens to match.

DeltaTest was supposed to cover this surface, but every assertion is wrapped in catch (UnsatisfiedLinkError) { Assumptions.assumeTrue(false, ...) }, so CI silently skipped the broken tests rather than failing them.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions