[ https://issues.apache.org/jira/browse/ARROW-16329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17528125#comment-17528125 ]
David Li commented on ARROW-16329: ---------------------------------- CC [~zhztheplayer] > [Java][C++] Keep more context when marshalling errors through JNI > ----------------------------------------------------------------- > > Key: ARROW-16329 > URL: https://issues.apache.org/jira/browse/ARROW-16329 > Project: Apache Arrow > Issue Type: Improvement > Components: C++, Java > Reporter: Antoine Pitrou > Priority: Major > Fix For: 9.0.0 > > > When errors are propagated through the JNI barrier, two mechanisms are > involved: > * the {{Status CheckException(JNIEnv* env)}} function for Java-to-C++ error > translation > * the {{JniAssertOkOrThrow(arrow::Status status)}} and {{T > JniGetOrThrow(arrow::Result<T> result)}} functions for C++-to-Java error > translation > Currently, both mechanisms lose most context about the original error, such > as its type and any additional state, such as the optional {{StatusDetail}} > in C++ or any properties in Java (which I'm sure exist on some exception > classes). > We should improve these mechanisms to retain as much context as possible. For > example, in a hypothetical Java-to-C++-to-Java error propagation scenario, > the original Java exception from inner code should ideally be re-thrown in > the outer Java context (we already support this in Python btw). -- This message was sent by Atlassian Jira (v8.20.7#820007)