Skip to content

TickScope v1.4.0

Choose a tag to compare

@gzimbric gzimbric released this 13 Aug 00:16
· 7 commits to main since this release

Changes

  • The metrics endpoint can no longer be silenced by a stalled client. A connection that sent
    a partial request previously held the only HTTP worker indefinitely, and every scrape timed out
    until that client disconnected — with no token required, since parsing stalls before
    authentication. The endpoint now runs on its own socket with per-connection deadlines and
    recovers on its own. Still no runtime dependencies.
  • Authorization: bearer <token> is now accepted alongside Bearer, as the HTTP specification
    requires. A scrape configured with a lowercase scheme used to fail like a mistyped token.
  • Per-world entity and tile-entity totals moved to the slower scan interval
    (entity-types.interval-ticks). Counting tile entities walks every loaded chunk, and before
    Minecraft 26 counting entities walked every entity, so neither belonged on the 5-second
    collection cycle. mc_world_chunks and mc_world_players are unchanged and still sampled
    every collection.
  • These three series are now omitted on Folia rather than read from the global region, which does
    not own the world data they walk.
  • Readings the platform cannot supply are omitted instead of reported as zero. CPU load on a JVM
    that does not expose it no longer looks like an idle server, and player ping is published only
    when a player was actually measured.
  • On Folia, a batch of per-player samples that finishes late is now used rather than thrown
    away. With several regions lagging at staggered times no batch ever finished before the
    next began, so ping and regional figures could stay frozen at the last success.
  • Deaths cancelled by another plugin are no longer counted.
  • A configuration value of the wrong type is now rejected with the setting named. port: "9200"
    previously bound the default port and per-world: "false" silently stayed enabled.
  • /tickscope reload reports what actually happened, including when a rollback failed, and two
    simultaneous reloads on Folia can no longer leave an endpoint running that nothing can close.
  • The entity-type series survive a reload instead of disappearing until the next scan, and
    /tickscope status prints a valid URL for an IPv6 bind address.
  • The bundled Grafana dashboard gained a Folia regions row; its tick panels were blank on Folia,
    which is the one platform where those metrics do not exist.
  • Release jars are now reproducible, so a download can be checked against its published checksum
    by rebuilding the tag.

Upgrading: two panels can look empty after this release. mc_player_ping_avg_ms and
mc_player_ping_max_ms are absent while nobody is online, and the CPU ratios are absent on a JVM
that cannot report them, instead of both reading zero. That is the documented "missing series"
behaviour rather than a removal — add or vector(0) where a panel needs a visible zero, exactly
as the entity-type series already require. Per-world entity and tile-entity totals now refresh
every entity-types.interval-ticks (600 ticks) rather than every collection, so those graphs are
coarser; they are absent entirely on Folia.

Full changelog: v1.3.0...v1.4.0