From 863bfbaff5f3e1329dd8ecb8110c47a98abd90bb Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Mon, 13 Jan 2025 23:37:22 +0500 Subject: [PATCH] Release full data sources after sending to clients --- .../server/FullDataSourceRequestHandler.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java index eeb741305..29da403bb 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java @@ -85,6 +85,8 @@ public class FullDataSourceRequestHandler { try (FullDataPayload payload = new FullDataPayload(fullDataSource, this.getAllBeamsForPos(message.sectionPos))) { + fullDataSource.close(); + serverPlayerState.fullDataPayloadSender.sendInChunks(payload, () -> { message.sendResponse(new FullDataSourceResponseMessage(payload)); @@ -203,6 +205,8 @@ public class FullDataSourceRequestHandler { try (FullDataPayload payload = new FullDataPayload(requestGroup.fullDataSource, this.getAllBeamsForPos(entry.getKey()))) { + requestGroup.fullDataSource.close(); + for (DataSourceRequestGroup.RequestData requestData : requestGroup.requestMessages.values()) { this.requestGroupsByFutureId.remove(requestData.futureId()); @@ -224,12 +228,14 @@ public class FullDataSourceRequestHandler if (this.fullDataSourceProvider().isFullyGenerated(fullDataSource.columnGenerationSteps)) { requestGroup.fullDataSource = fullDataSource; + return; } - else if ( - DhSectionPos.getDetailLevel(pos) > (Config.Common.WorldGenerator.distantGeneratorMode.get() == EDhApiDistantGeneratorMode.INTERNAL_SERVER - ? DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL - : this.serverLevel.serverside.fullDataFileHandler.lowestDataDetailLevel()) - ) + + fullDataSource.close(); + + if (DhSectionPos.getDetailLevel(pos) > (Config.Common.WorldGenerator.distantGeneratorMode.get() == EDhApiDistantGeneratorMode.INTERNAL_SERVER + ? DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL + : this.serverLevel.serverside.fullDataFileHandler.lowestDataDetailLevel())) { // Make this group unavailable for adding into this.requestGroupsByPos.remove(pos);