diff --git a/foundation-heimdall/src/main/kotlin/cloud/kubelet/foundation/heimdall/FoundationHeimdallPlugin.kt b/foundation-heimdall/src/main/kotlin/cloud/kubelet/foundation/heimdall/FoundationHeimdallPlugin.kt index 6f5b135..5b99b1f 100644 --- a/foundation-heimdall/src/main/kotlin/cloud/kubelet/foundation/heimdall/FoundationHeimdallPlugin.kt +++ b/foundation-heimdall/src/main/kotlin/cloud/kubelet/foundation/heimdall/FoundationHeimdallPlugin.kt @@ -65,6 +65,7 @@ class FoundationHeimdallPlugin : JavaPlugin(), Listener { password = config.db.password schema = "heimdall" maximumPoolSize = 10 + idleTimeout = Duration.ofMinutes(5).toMillis() maxLifetime = Duration.ofMinutes(10).toMillis() }) val initMigrationContent = FoundationHeimdallPlugin::class.java.getResourceAsStream( diff --git a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/GjallarhornCommand.kt b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/GjallarhornCommand.kt index d220edf..126e76d 100644 --- a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/GjallarhornCommand.kt +++ b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/GjallarhornCommand.kt @@ -28,6 +28,7 @@ class GjallarhornCommand : CliktCommand(invokeWithoutSubcommand = true) { password = jdbcConnectionPassword minimumIdle = dbPoolSize / 2 maximumPoolSize = dbPoolSize + idleTimeout = Duration.ofMinutes(5).toMillis() maxLifetime = Duration.ofMinutes(10).toMillis() }) val db = Database.connect(pool) diff --git a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/commands/ChunkExportLoaderCommand.kt b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/commands/ChunkExportLoaderCommand.kt index c452fb4..a52dcb6 100644 --- a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/commands/ChunkExportLoaderCommand.kt +++ b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/commands/ChunkExportLoaderCommand.kt @@ -5,7 +5,6 @@ import cloud.kubelet.foundation.gjallarhorn.export.CombinedChunkFormat import cloud.kubelet.foundation.gjallarhorn.state.BlockExpanse import cloud.kubelet.foundation.gjallarhorn.state.BlockLogTracker import cloud.kubelet.foundation.gjallarhorn.state.ChangelogSlice -import cloud.kubelet.foundation.gjallarhorn.state.SparseBlockStateMap import cloud.kubelet.foundation.gjallarhorn.util.savePngFile import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.core.requireObject @@ -31,10 +30,8 @@ class ChunkExportLoaderCommand : CliktCommand("Chunk Export Loader", name = "chu private val saveCombinedFormat by option("--save-combined-format").flag() override fun run() { - val format: CombinedChunkFormat - val combinedFormatFile = exportDirectoryPath.resolve("combined.json").toFile() - format = if (loadCombinedFormat) { + val format = if (loadCombinedFormat) { Json.decodeFromStream(CombinedChunkFormat.serializer(), combinedFormatFile.inputStream()) } else { val tracker = BlockLogTracker(isConcurrent = true) diff --git a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/export/ChunkExportLoader.kt b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/export/ChunkExportLoader.kt index 1bb3d3a..0387483 100644 --- a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/export/ChunkExportLoader.kt +++ b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/export/ChunkExportLoader.kt @@ -1,6 +1,9 @@ package cloud.kubelet.foundation.gjallarhorn.export -import cloud.kubelet.foundation.gjallarhorn.state.* +import cloud.kubelet.foundation.gjallarhorn.state.BlockCoordinate +import cloud.kubelet.foundation.gjallarhorn.state.BlockLogTracker +import cloud.kubelet.foundation.gjallarhorn.state.BlockState +import cloud.kubelet.foundation.gjallarhorn.state.SparseBlockStateMap import cloud.kubelet.foundation.heimdall.export.ExportedChunk import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream @@ -10,7 +13,9 @@ import java.util.zip.GZIPInputStream import kotlin.io.path.inputStream import kotlin.io.path.listDirectoryEntries -class ChunkExportLoader(val map: SparseBlockStateMap? = null, val tracker: BlockLogTracker? = null) { +class ChunkExportLoader( + val map: SparseBlockStateMap? = null, + val tracker: BlockLogTracker? = null) { fun loadAllChunksForWorld(path: Path, world: String, fast: Boolean = false, limit: Int? = null) { var chunkFiles = path.listDirectoryEntries("${world}_chunk_*.json.gz") if (limit != null) { diff --git a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockCoordinate.kt b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockCoordinate.kt index 7c569b5..3ef2d82 100644 --- a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockCoordinate.kt +++ b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockCoordinate.kt @@ -35,5 +35,13 @@ data class BlockCoordinate( return BlockCoordinate(x, y, z) } + + fun minOf(coordinates: List): BlockCoordinate { + val x = coordinates.minOf { it.x } + val y = coordinates.minOf { it.y } + val z = coordinates.minOf { it.z } + + return BlockCoordinate(x, y, z) + } } }