Skip to content

Commit 68a1fda

Browse files
Update to server translations 1.4.3
Try to finish logging actions on server stop
1 parent ee89526 commit 68a1fda

File tree

6 files changed

+21
-11
lines changed

6 files changed

+21
-11
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ fabric_version=0.34.8+1.17
1717
loom_version=0.8-SNAPSHOT
1818

1919
# Message stuff
20-
server_translations_version=1.4.2+1.17
20+
server_translations_version=1.4.3+1.17
2121
ekho_version=0.3.0
2222

2323
# Kotlin

src/main/java/us/potatoboy/ledger/mixin/callbacks/ExplosionMixin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ private void ledgerBlockExplodeCallback(
4444
BlockState blockState,
4545
Block block) {
4646

47+
if (blockState.isAir()) return;
48+
4749
BlockExplodeCallback.Companion.getEVENT().invoker().explode(
4850
world,
4951
entity,

src/main/kotlin/us/potatoboy/ledger/Ledger.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package us.potatoboy.ledger
22

33
import kotlinx.coroutines.CoroutineScope
44
import kotlinx.coroutines.Dispatchers
5+
import kotlinx.coroutines.delay
56
import kotlinx.coroutines.launch
67
import kotlinx.coroutines.runBlocking
8+
import kotlinx.coroutines.withTimeout
79
import net.fabricmc.api.DedicatedServerModInitializer
810
import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback
911
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents
@@ -18,6 +20,7 @@ import us.potatoboy.ledger.actionutils.ActionSearchParams
1820
import us.potatoboy.ledger.actionutils.Preview
1921
import us.potatoboy.ledger.commands.registerCommands
2022
import us.potatoboy.ledger.config.CONFIG_PATH
23+
import us.potatoboy.ledger.config.DatabaseSpec
2124
import us.potatoboy.ledger.config.config
2225
import us.potatoboy.ledger.database.DatabaseManager
2326
import us.potatoboy.ledger.listeners.registerBlockListeners
@@ -30,6 +33,8 @@ import java.nio.file.Files
3033
import java.util.UUID
3134
import java.util.concurrent.ConcurrentHashMap
3235
import kotlin.coroutines.CoroutineContext
36+
import kotlin.time.Duration
37+
import kotlin.time.ExperimentalTime
3338

3439
object Ledger : DedicatedServerModInitializer, CoroutineScope {
3540
const val MOD_ID = "ledger"
@@ -81,9 +86,15 @@ object Ledger : DedicatedServerModInitializer, CoroutineScope {
8186
}
8287
}
8388

89+
@OptIn(ExperimentalTime::class)
8490
private fun serverStopped(server: MinecraftServer) {
8591
runBlocking {
86-
// TODO make actions SharedFlow fully drain somehow
92+
withTimeout(Duration.minutes(config[DatabaseSpec.queueTimeoutMin])) {
93+
while (DatabaseManager.dbMutex.isLocked) {
94+
logInfo("Database queue is still draining. If you exit now actions WILL be lost")
95+
delay(Duration.seconds(config[DatabaseSpec.queueCheckDelaySec]))
96+
}
97+
}
8798
}
8899
}
89100

@@ -102,5 +113,3 @@ fun logDebug(message: String) = Ledger.logger.debug(message)
102113
fun logInfo(message: String) = Ledger.logger.info(message)
103114
fun logWarn(message: String) = Ledger.logger.warn(message)
104115
fun logFatal(message: String) = Ledger.logger.warn(message)
105-
106-

src/main/kotlin/us/potatoboy/ledger/config/DatabaseSpec.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ package us.potatoboy.ledger.config
33
import com.uchuhimo.konf.ConfigSpec
44

55
object DatabaseSpec : ConfigSpec() {
6-
val maxQueueSize by required<Int>()
7-
val queueTimeoutSec by required<Long>()
6+
val queueTimeoutMin by required<Long>()
7+
val queueCheckDelaySec by required<Long>()
88
}

src/main/kotlin/us/potatoboy/ledger/database/DatabaseManager.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ object DatabaseManager {
5757
val actions = _actions.asSharedFlow()
5858

5959
init {
60-
// TODO stop minecraft from closing while still collecting or something? not sure
6160
Ledger.launch {
6261
actions.collect {
6362
execute {

src/main/resources/ledger.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[database]
2-
# Amount of queue items to do per drain
3-
maxQueueSize = 50
4-
# Amount of time to wait for queue to reach maxQueueSize
5-
queueTimeoutSec = 5
2+
# The maximum amount of time to wait for the queue to drain when the server stops
3+
queueTimeoutMin = 5
4+
# The amount of time between checking if the queue is empty when the server stops
5+
queueCheckDelaySec = 10
66

77
[search]
88
# Number of actions to show per page

0 commit comments

Comments
 (0)