Antoine Pitrou created ARROW-16329:
--------------------------------------

             Summary: [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
             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)

Reply via email to