feat(session): expose disableSpill and maxTempDirectorySize on SessionContextBuilder#84
Conversation
|
Follow-up (no action needed before merging this PR): the new Javadoc on |
|
@LantaoJin can you fix conflicts? |
Sure, resolving |
…uilder # Conflicts: # core/src/main/java/org/apache/datafusion/SessionContextBuilder.java # proto/session_options.proto
… ResourcesExhaustedException + add test
@andygrove conflicts resolved and the follow-up included. |
Which issue does this PR close?
Rationale for this change
PR #28 added
tempDirectory(String)as the only Java surface for DataFusion'sRuntimeEnvBuilderdisk-manager knobs. Two real gaps remain — both reachable on the Rust side, neither reachable from Java today, and neither reachable viasetOption(...)because they live onRuntimeEnvconstruction rather than thedatafusion.*config namespace (the native side already explicitly rejectsdatafusion.runtime.*keys, for the same reason that motivated the existing typedmemoryLimit(...)/tempDirectory(...)setters):--disk-limitflag thatdatafusion-cliships.Issue #83 originally included a third setter,
tempDirectories(List<String>), but a follow-up survey of the upstream code, CLI, docs, examples, and Python binding showed multi-directory mode is a programmatic-only escape hatch onDiskManagerBuilder: not exposed byRuntimeEnvBuilderitself, not used bydatafusion-cli, not inconfigs.md, not in any example. It can ship later if a real user files an issue with a use case; punting it keeps this PR focused on the two setters with concrete motivation.What changes are included in this PR?
SessionContextBuilder:disableSpill().maxTempDirectorySize(long)DiskManagerOptionsmessage (optionaldisabled, optionalmax_temp_directory_size) added tosession_options.proto.createSessionContextWithOptionsthat decodesDiskManagerOptionsand routes throughwith_disk_manager_builder(Disabled)/with_max_temp_directory_size.Are these changes tested?
Yes. 9 new tests in
SessionContextBuilderTestAre there any user-facing changes?
Yes, additive only — no breaking changes.
SessionContextBuilder. Existing callers using onlytempDirectory(String)see no behaviour change and produce identical wire bytes.IllegalStateExceptionatbuild()time (not at the setter call), matching thesetOptionruntime-key pattern.cacheManager,registerObjectStore) shipped.