apache / apache/datafusion-java

Propagate Java stack traces from JVM upcalls into DataFusionError

オープン
#55 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Java
スター
32
フォーク
12
PR マージ指標
30日以内にマージされた PR はありません

説明

Follow-up from PR #46 review ([thread](https://github.com/apache/datafusion-java/pull/46#discussion_r3255172936)).

## Problem

When a Java-implemented upcall throws (currently: scalar UDFs via `JniBridge`, but the same will apply to any future upcall — table providers, aggregate UDFs, etc.), the native side surfaces only the exception class name and `getMessage()` via `DataFusionError::Execution`. The Java stack trace is discarded, which makes debugging much harder than necessary.

## Proposal

Capture the throwable's stack trace on the JVM side and include it in the error string returned to native code. Make verbosity configurable per `SessionContext` so production callers can opt out — e.g. an enum like `message | full | none`, default `full`.

## Scope

Should cover all JVM→native upcall paths, not just scalar UDFs. A shared helper in `org.apache.datafusion.internal.JniBridge` (or a new `JniErrors` utility) that converts a `Throwable` to the configured representation, used wherever upcalls catch exceptions.

## References

- pgwhalen's session-configurable approach in his community binding: https://github.com/pgwhalen/datafusion-java/blob/1c20733aa8b008315af6092a912b58ef3df6a482/datafusion-ffi-java/src/main/java/org/apache/arrow/datafusion/config/ConfigOptions.java#L50-L54

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。