Skip to content

serve dataflint JSON via reflective Jetty servlet on spark 4#72

Closed
minskya wants to merge 1 commit intomainfrom
databrick-spark4-fix
Closed

serve dataflint JSON via reflective Jetty servlet on spark 4#72
minskya wants to merge 1 commit intomainfrom
databrick-spark4-fix

Conversation

@minskya
Copy link
Copy Markdown
Contributor

@minskya minskya commented May 7, 2026

Replace the WebUIPage-based JSON flow on Spark 4 with a Jetty ServletContextHandler whose Servlet is a java.lang.reflect.Proxy over whichever servlet API is on the classpath at runtime. Lets the same artifact run on stock Spark 4 (jakarta.servlet) and Databricks Runtime 17.3 (javax.servlet) without compile-time coupling. Each renderJson body moves verbatim into a producer lambda in DataflintReflectiveServletBuilder; the WebUIPage subclasses are deleted because they would fail JVM verification on javax-only runtimes. DataflintJettyUtils drops its jakarta.servlet import, finding the ServletHolder constructor by parameter probing instead. Spark 3 keeps the original page-based flow via the new usesReflectiveEndpoints flag on the page factory.

Replace the WebUIPage-based JSON flow on Spark 4 with a Jetty
ServletContextHandler whose Servlet is a java.lang.reflect.Proxy over
whichever servlet API is on the classpath at runtime. Lets the same
artifact run on stock Spark 4 (jakarta.servlet) and Databricks Runtime
17.3 (javax.servlet) without compile-time coupling. Each renderJson body
moves verbatim into a producer lambda in DataflintReflectiveServletBuilder;
the WebUIPage subclasses are deleted because they would fail JVM
verification on javax-only runtimes. DataflintJettyUtils drops its
jakarta.servlet import, finding the ServletHolder constructor by parameter
probing instead. Spark 3 keeps the original page-based flow via the new
usesReflectiveEndpoints flag on the page factory.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@minskya minskya closed this May 7, 2026
@minskya minskya deleted the databrick-spark4-fix branch May 7, 2026 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant