Skip to content

Commit 2e73549

Browse files
committed
Clear metrics on session reset
1 parent 531ffb3 commit 2e73549

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

src/main/kotlin/dev/arbjerg/lavalink/internal/LavalinkSocket.kt

+15-1
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,26 @@ class LavalinkSocket(private val node: LavalinkNode) : WebSocketListener(), Clos
4949

5050
when (event.op) {
5151
Message.Op.Ready -> {
52-
val sessionId = (event as Message.ReadyEvent).sessionId
52+
val (_, resumed, sessionId) = event as Message.ReadyEvent
53+
54+
// in case this was a reboot of the node, and we are not resuming
55+
// reset the metrics to prevent the loadbalancer not liking this node
56+
if (!resumed) {
57+
node.penalties.resetMetrics()
58+
}
59+
5360
node.sessionId = sessionId
5461
node.available = true
5562
logger.info("${node.name} is ready with session id $sessionId")
5663

5764
node.playerCache.values.forEach { player ->
65+
// Ignore empty voice states, not sure what causes this
66+
val (token, endpoint, stateSessionId) = player.voiceState
67+
68+
if (token.isBlank() || endpoint.isBlank() || stateSessionId.isBlank()) {
69+
return@forEach
70+
}
71+
5872
// Re-create the player on the node.
5973
player.stateToBuilder()
6074
.setNoReplace(false)

src/main/kotlin/dev/arbjerg/lavalink/internal/loadbalancing/MetricService.kt

+4
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,8 @@ class MetricService {
3333

3434
return metricMap
3535
}
36+
37+
internal fun resetMetrics() {
38+
timeMap.clear()
39+
}
3640
}

src/main/kotlin/dev/arbjerg/lavalink/internal/loadbalancing/Penalties.kt

+4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ import kotlin.math.pow
1616
data class Penalties(val node: LavalinkNode) {
1717
private val metricService = MetricService()
1818

19+
internal fun resetMetrics() {
20+
metricService.resetMetrics()
21+
}
22+
1923
fun handleTrackEvent(event: Message.EmittedEvent) {
2024
when (event) {
2125
is Message.EmittedEvent.TrackStartEvent -> {

0 commit comments

Comments
 (0)