Fix full data source being released too early
This commit is contained in:
+4
-1
@@ -99,7 +99,10 @@ public class RemoteFullDataSourceProvider extends GeneratedFullDataSourceProvide
|
||||
Long timestamp = this.getTimestampForPos(pos);
|
||||
if (timestamp != null)
|
||||
{
|
||||
this.syncOnLoadRequestQueue.submitRequest(pos, timestamp, this::updateDataSource);
|
||||
this.syncOnLoadRequestQueue.submitRequest(pos, timestamp, fullDataSource ->
|
||||
{
|
||||
this.updateDataSourceAsync(fullDataSource).whenComplete((result, throwable) -> fullDataSource.close());
|
||||
});
|
||||
}
|
||||
|
||||
return super.get(pos);
|
||||
|
||||
+6
-1
@@ -16,6 +16,7 @@ import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
public class RemoteWorldRetrievalQueue extends AbstractFullDataNetworkRequestQueue implements IFullDataSourceRetrievalQueue, IDebugRenderable
|
||||
@@ -56,7 +57,11 @@ public class RemoteWorldRetrievalQueue extends AbstractFullDataNetworkRequestQue
|
||||
{
|
||||
long generationStartMsTime = System.currentTimeMillis();
|
||||
|
||||
return super.submitRequest(sectionPos, tracker.getDataSourceConsumer())
|
||||
|
||||
return super.submitRequest(sectionPos, fullDataSource -> {
|
||||
Objects.requireNonNull(tracker.getDataSourceConsumer()).accept(fullDataSource);
|
||||
fullDataSource.close();
|
||||
})
|
||||
.thenApply(requestResult ->
|
||||
{
|
||||
long totalGenTimeInMs = System.currentTimeMillis() - generationStartMsTime;
|
||||
|
||||
@@ -142,10 +142,9 @@ public class DhClientLevel extends AbstractDhLevel implements IDhClientLevel
|
||||
}
|
||||
|
||||
this.updateBeaconBeamsForSectionPos(dataSourceDto.pos, message.payload.beaconBeams);
|
||||
try (FullDataSourceV2 fullDataSource = dataSourceDto.createDataSource(this.levelWrapper))
|
||||
{
|
||||
this.updateDataSourcesAsync(fullDataSource);
|
||||
}
|
||||
|
||||
FullDataSourceV2 fullDataSource = dataSourceDto.createDataSource(this.levelWrapper);
|
||||
this.updateDataSourcesAsync(fullDataSource).whenComplete((result, e) -> fullDataSource.close());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
+3
-4
@@ -241,10 +241,9 @@ public abstract class AbstractFullDataNetworkRequestQueue implements IDebugRende
|
||||
try
|
||||
{
|
||||
this.level.updateBeaconBeamsForSectionPos(dataSourceDto.pos, response.payload.beaconBeams);
|
||||
try (FullDataSourceV2 fullDataSource = dataSourceDto.createDataSource(this.level.getLevelWrapper()))
|
||||
{
|
||||
entry.dataSourceConsumer.accept(fullDataSource);
|
||||
}
|
||||
|
||||
FullDataSourceV2 fullDataSource = dataSourceDto.createDataSource(this.level.getLevelWrapper());
|
||||
entry.dataSourceConsumer.accept(fullDataSource);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user