Skip to content

Commit

Permalink
v0.6.3
Browse files Browse the repository at this point in the history
  • Loading branch information
hopskipnfall committed Feb 18, 2023
1 parent 528fc1b commit 33e5a0e
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 19 deletions.
2 changes: 1 addition & 1 deletion emulinker/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>org.emulinker</groupId>
<artifactId>emulinkersf-netsma</artifactId>
<version>0.6.2</version>
<version>0.6.3</version>

<name>EmulinkerSF-netsma</name>
<url>https://github.com/hopskipnfall/EmuLinkerSF-netsma</url>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@ class V086ClientHandler
private var clientRetryCount = 0
private var lastResend: Long = 0

private val clientRequestTimer =
metrics!!.timer(MetricRegistry.name(this.javaClass, "clientRequests"))

@AssistedFactory
interface Factory {
fun create(
Expand Down Expand Up @@ -210,6 +213,12 @@ class V086ClientHandler
}

override fun handleReceived(buffer: ByteBuffer) {
clientRequestTimer.time().use {
handleReceivedInternal(buffer)
}
}

private fun handleReceivedInternal(buffer: ByteBuffer) {
var inBundle: V086Bundle? = null
inBundle =
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -883,15 +883,19 @@ class KailleraServerImpl
}
metrics.register(
MetricRegistry.name(this.javaClass, "users", "idle"),
Gauge { usersMap.values.count { it.status == UserStatus.IDLE } })
Gauge { usersMap.values.count { it.status == UserStatus.IDLE } }
)
metrics.register(
MetricRegistry.name(this.javaClass, "users", "playing"),
Gauge { usersMap.values.count { it.status == UserStatus.PLAYING } })
Gauge { usersMap.values.count { it.status == UserStatus.PLAYING } }
)
metrics.register(
MetricRegistry.name(this.javaClass, "games", "waiting"),
Gauge { gamesMap.values.count { it.status == GameStatus.WAITING } })
Gauge { gamesMap.values.count { it.status == GameStatus.WAITING } }
)
metrics.register(
MetricRegistry.name(this.javaClass, "games", "playing"),
Gauge { gamesMap.values.count { it.status == GameStatus.PLAYING } })
Gauge { gamesMap.values.count { it.status == GameStatus.PLAYING } }
)
}
}
35 changes: 21 additions & 14 deletions emulinker/src/main/java/org/emulinker/kaillera/pico/ServerMain.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
package org.emulinker.kaillera.pico

import com.codahale.metrics.ConsoleReporter
import com.codahale.metrics.CsvReporter
import com.codahale.metrics.MetricFilter
import com.codahale.metrics.graphite.Graphite
import com.codahale.metrics.graphite.GraphiteReporter
import com.codahale.metrics.jvm.MemoryUsageGaugeSet
import com.codahale.metrics.jvm.ThreadStatesGaugeSet
import com.google.common.flogger.FluentLogger
import java.io.File
import java.net.InetSocketAddress
import java.time.Instant
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.util.concurrent.TimeUnit.MILLISECONDS
import java.util.concurrent.TimeUnit.SECONDS
import java.util.concurrent.TimeUnit
import java.util.concurrent.TimeUnit.*

private val logger = FluentLogger.forEnclosingClass()

Expand All @@ -34,20 +37,24 @@ fun main(args: Array<String>) {
component.masterListUpdater.start()
val metrics = component.metricRegistry
metrics.registerAll(ThreadStatesGaugeSet())
metrics.registerAll(MemoryUsageGaugeSet())
// metrics.registerAll(MemoryUsageGaugeSet())
val flags = component.runtimeFlags
if (flags.metricsEnabled) {
// TODO(nue): Pass this data to a central server so we can see how performance changes over
// time in prod.
// "graphite" is the name of a service in docker-compose.yaml.
val graphite = Graphite(InetSocketAddress("graphite", 2003))
val reporter =
GraphiteReporter.forRegistry(metrics)
.convertRatesTo(SECONDS)
.convertDurationsTo(MILLISECONDS)
.filter(MetricFilter.ALL)
.build(graphite)
reporter.start(30, SECONDS)
ConsoleReporter.forRegistry(metrics)
.convertRatesTo(SECONDS)
.convertDurationsTo(MILLISECONDS)
.filter(MetricFilter.ALL)
.build()
.start(10, MINUTES)

val file = File("./metrics/")
file.mkdirs()
CsvReporter.forRegistry(metrics)
.convertRatesTo(SECONDS)
.convertDurationsTo(MILLISECONDS)
.filter(MetricFilter.ALL)
.build(file)
.start(5, MINUTES)
}

// // Hacky code but it works! Tests that two users can make and play a game.
Expand Down

0 comments on commit 33e5a0e

Please sign in to comment.