From f6adacf5d604289bd5383ea522aed224c697c6bd Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Tue, 20 Aug 2024 23:10:29 -0700 Subject: [PATCH] SuperSorter: Store readOnly output channels. (#16928) Without the call to readOnly, each output channel retains a 1 MB allocator, leading to excessive memory use. Fixes regression from #16775. --- .../main/java/org/apache/druid/frame/processor/SuperSorter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/processing/src/main/java/org/apache/druid/frame/processor/SuperSorter.java b/processing/src/main/java/org/apache/druid/frame/processor/SuperSorter.java index 00be9a3166a7..5cb9c0830e49 100644 --- a/processing/src/main/java/org/apache/druid/frame/processor/SuperSorter.java +++ b/processing/src/main/java/org/apache/druid/frame/processor/SuperSorter.java @@ -670,7 +670,7 @@ private void runMerger( final OutputChannel outputChannel = outputChannelFactory.openChannel(intRank); writableChannel = outputChannel.getWritableChannel(); frameAllocatorFactory = new SingleMemoryAllocatorFactory(outputChannel.getFrameMemoryAllocator()); - outputChannels.set(intRank, outputChannel); + outputChannels.set(intRank, outputChannel.readOnly()); if (totalMergingLevels == 1) { // Reading from the inputBuffer. (i.e. "direct mode"; see class-level javadoc for more details.)