Fix docker scaling and show loading MOTD (#529)

* fix: Reduce log spam for sleeping servers

* fix: Fix autodownscaling for initial player connection

* fix: Instant route updating when a docker container is downscaled

* feat: Show asleep or loading motd while the server is waking up
This commit is contained in:
Lenart Kos
2026-02-26 03:46:51 +01:00
committed by GitHub
parent ea6419bece
commit 2023e73892
13 changed files with 220 additions and 78 deletions
+33
View File
@@ -77,3 +77,36 @@ func parseTrustedProxyNets(nets []string) []*net.IPNet {
}
return parsedNets
}
func TestConnectorWakeTracking(t *testing.T) {
c := &Connector{wakingServers: NewActiveConnections()}
assert.False(t, c.isWakeInProgress("scale-target"))
c.wakingServers.Increment("scale-target")
assert.True(t, c.isWakeInProgress("scale-target"))
// track concurrent wake operations for same route
c.wakingServers.Increment("scale-target")
c.wakingServers.Decrement("scale-target")
assert.True(t, c.isWakeInProgress("scale-target"))
c.wakingServers.Decrement("scale-target")
assert.False(t, c.isWakeInProgress("scale-target"))
}
func TestConnectorGetLoadingMOTD(t *testing.T) {
oldRoutes := Routes
defer func() {
Routes = oldRoutes
}()
Routes = NewRoutes()
Routes.CreateMapping("mc.example.com", "backend:25565", "", nil, nil, "", "route loading")
c := &Connector{loadingMOTD: "global loading"}
assert.Equal(t, "route loading", c.getLoadingMOTD("mc.example.com"))
assert.Equal(t, "global loading", c.getLoadingMOTD("other.example.com"))
Routes.SetDefaultRoute("default:25565", "", nil, nil, "", "default loading")
assert.Equal(t, "default loading", c.getLoadingMOTD(""))
}