Skip to content

Plugin coverage gaps

Nicholas Antinori edited this page Aug 4, 2026 · 1 revision

Shipped Plugins cover common stacks, not every client or reactive path. This page lists frequent gaps so empty tabs look like coverage limits, not a broken agent.

For intentional product non-features (no sampling %, no URL→name regex, ...) see What Glowroot does not do.

Quick triage

Symptom Often means
Gauges OK, no Web / HTTP transactions HTTP stack not woven (Vert.x / custom server, wrong Servlet vs Jakarta plugin, plugin off)
Queries empty, app talks to a DB Not going through java.sql.* (Vert.x SQL Client, some reactive drivers) — custom Instrumentation ≠ Queries
Service Calls missing for outbound HTTP Client API not advised (e.g. JDK java.net.http.HttpClient), or an async overload that only wraps callbacks
Spring WebFlux names look like raw URIs / thin timers Spring plugin targets MVC-style controllers more than WebFlux routing
Dual APM agents + weird JDBC errors Two weaving agents on one JVM — pick one (Plugins / FAQ)

HTTP inbound

  • OTP / Vert.x / Netty-only apps — JVM gauges can look fine while Web stays empty: there is no Servlet request for the servlet plugins to name. Use Instrumentation (or a framework entry the netty / other plugins already cover) to start transactions.
  • Servlet vs Jakarta Servlet — javax.servlet vs jakarta.servlet are different plugins. Spring Boot 3 needs a current agent and the Jakarta plugin path.

SQL / Queries tab

  • Queries = JDBC weaves of java.sql.* (Jdbc plugin), not “any database traffic.”
  • Vert.x SQL Client and similar non-JDBC APIs often bypass that → empty Queries even with custom pointcuts on your repository classes.
  • Custom Instrumentation can time your methods; it does not populate the Queries store the way Jdbc does.

Outbound HTTP / Service Calls

Covered examples live under the http-client plugin (Apache HttpClient sync/async variants, OkHttp, HttpURLConnection, ...). Still incomplete:

  • JDK java.net.http.HttpClient — not woven today → no Service Call entry from that client alone.
  • Apache HttpAsyncClient execute(producer, consumer, callback) — advice may only attach an aux thread context to the callback (no Service Call entry). Other execute(...) overloads that start async service-call entries still apply. Issue tracker: #968.

Workaround when you need visibility: Instrumentation on your wrapper that performs the call, or use a client the plugin already advises.

Spring

  • Spring MVC / Web controllers — Spring plugin (ControllerAspect, ...).
  • WebFlux — weaker / different naming and timer richness vs MVC; raw URI-style names are a common report (#945). Prefer Instrumentation for critical routes if MVC-style names matter.

Async / threads

  • Disabling the Executor plugin often detaches work submitted to pools from the parent trace — looks like “missing” spans, not a coverage gap in the HTTP plugin.
  • Callback-only paths (see async HTTP above) need either plugin support or your own transaction/entry boundaries.

What to do

  1. Confirm the relevant plugin is enabled (Plugins).
  2. Check this page + What Glowroot does not do before filing “agent broken.”
  3. For app-specific types: Instrumentation or Batch application instrumentation.
  4. To extend Glowroot itself: Plugin and Pointcut basics + For contributors.
  5. Product change requests: Discussions → Ideas (or an issue with a clear repro if you believe it is a defect in an existing weave).

See also

Clone this wiki locally