From 7a5a27d581cc84b576033e9f74917d05711b2b52 Mon Sep 17 00:00:00 2001 From: Kenneth Endfinger Date: Sat, 8 Jan 2022 22:00:59 -0500 Subject: [PATCH] Gjallarhorn: Various fixes to new pipeline for production usage. --- .../gjallarhorn/state/BlockLogTracker.kt | 1 + .../gjallarhorn/state/BlockMapRenderPool.kt | 7 +++--- .../gjallarhorn/state/BlockMapTimelapse.kt | 23 +++++++++++++++---- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockLogTracker.kt b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockLogTracker.kt index 009ff5f..5570d15 100644 --- a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockLogTracker.kt +++ b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockLogTracker.kt @@ -48,6 +48,7 @@ class BlockLogTracker(private val mode: BlockTrackMode = BlockTrackMode.RemoveOn } fun isEmpty() = blocks.isEmpty() + fun isNotEmpty() = blocks.isNotEmpty() fun buildBlockMap(offset: BlockCoordinate = BlockCoordinate.zero): BlockMap { val map = BlockMap() diff --git a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockMapRenderPool.kt b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockMapRenderPool.kt index d26c9fa..69a0251 100644 --- a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockMapRenderPool.kt +++ b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockMapRenderPool.kt @@ -59,14 +59,13 @@ class BlockMapRenderPool( val sliced = changelog.slice(slice) val tracker = BlockLogTracker(blockTrackMode) tracker.replay(sliced) - if (tracker.isEmpty()) { - return + if (tracker.isNotEmpty()) { + trackers[slice] = tracker } - trackers[slice] = tracker } interface RenderPoolDelegate { - fun buildRenderJobs(pool: BlockMapRenderPool, trackers: Map) + fun buildRenderJobs(pool: BlockMapRenderPool, trackers: MutableMap) } companion object { diff --git a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockMapTimelapse.kt b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockMapTimelapse.kt index 35519d9..9882380 100644 --- a/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockMapTimelapse.kt +++ b/tool-gjallarhorn/src/main/kotlin/cloud/kubelet/foundation/gjallarhorn/state/BlockMapTimelapse.kt @@ -19,10 +19,25 @@ class BlockMapTimelapse(val trim: Pair? = n if (limit != null) { intervals = intervals.takeLast(limit).toMutableList() } - return intervals.map { it.minus(interval) to it } + return intervals.map { start to it } } - override fun buildRenderJobs(pool: BlockMapRenderPool, trackers: Map) { + override fun buildRenderJobs( + pool: BlockMapRenderPool, + trackers: MutableMap + ) { + if (trim != null) { + trackers.values.forEach { tracker -> + tracker.trimOutsideXAndZRange(trim.first, trim.second) + } + } + + for ((slice, tracker) in trackers.entries.toList()) { + if (tracker.isEmpty()) { + trackers.remove(slice) + } + } + val allBlockOffsets = trackers.map { it.value.calculateZeroBlockOffset() } val globalBlockOffset = BlockCoordinate.maxOf(allBlockOffsets) val allBlockMaxes = trackers.map { it.value.calculateMaxBlock() } @@ -31,8 +46,8 @@ class BlockMapTimelapse(val trim: Pair? = n val renderer = pool.rendererFactory(globalBlockExpanse) for ((slice, tracker) in trackers) { - if (trim != null) { - tracker.trimOutsideXAndZRange(trim.first, trim.second) + if (tracker.isEmpty()) { + continue } pool.submitRenderJob(slice) {