Troubleshooting SDK Errors
A list of all Java agent runtime errors, their causes, and how to fix them.
The Hud Java agent prints user-facing lines as Hud: {message}. A numbered code (for example E1002) is included when the line comes from the error catalog. Find the code below.
Most of these are non-fatal. When Hud cannot run, it shuts itself down and your application keeps running, without Hud data. A shutdown line is followed by Hud: Detaching HUD.
Common issues
Nothing from Hud in the logs
The agent never started. Attach it on the JVM command with -javaagent:./hud-sdk.jar, and set HUD_KEY and HUD_SERVICE. See Java Installation.
The service is recognized, but no code is mapped
io.hud.includeDomains did not match any of your classes. See E1007 and E1014.
Code is mapped, but no metrics arrive
The process has not recorded a function invocation yet. Invoke the code you care about and wait a minute or two. See E3007. A process that exits in a few seconds can exit before the first export.
No endpoints
The framework is outside the compatibility matrix, or a request has not been served yet. Spring MVC, the Servlet API, Jersey on a servlet, and http4k HTTP routes are automatic. See E1017, E1020, and E1029.
Identity and startup
E1001 - HUD_ENABLE is false
Error Message
HUD_ENABLE is set to false. SDK has initiated a graceful shutdown. Your application remains unaffected.
Explanation
HUD_ENABLE=false is the switch that keeps the agent from running.
Solution
Unset HUD_ENABLE, or set it to a value other than false, and restart the process.
E1002 - HUD_KEY not set
Error Message
Can't load Hud, HUD_KEY was not set. Please set API key using the environment variable HUD_KEY.
Explanation
HUD_SERVICE is set and HUD_KEY is missing or empty.
Solution
Set HUD_KEY to the API key for this environment from the API keys page, then restart.
E1003 - HUD_SERVICE not set
Error Message
Can't load Hud, HUD_SERVICE was not set. Please set service name using the environment variable HUD_SERVICE.
Explanation
HUD_KEY is set and HUD_SERVICE is missing or empty.
Solution
Set HUD_SERVICE to the name Hud should show for this process, then restart.
E1004 - HUD_KEY and HUD_SERVICE not set
Error Message
Can't load Hud, HUD_KEY and HUD_SERVICE were not set.
Explanation
Both environment variables are missing or empty.
Solution
Set HUD_KEY and HUD_SERVICE, then restart.
E1007 - Include domains not set
Error Message
Include domains are not set. Please set them with the system property io.hud.includeDomains. SDK has initiated a graceful shutdown. Your application remains unaffected.
Explanation
The agent only instruments classes under the packages you name. None were set.
Solution
Pass a semicolon-separated list of package prefixes on the JVM command:
-Dio.hud.includeDomains=com.acme;com.example
E1012 - Failed to instrument the application
Error Message
Failed to instrument application. SDK has initiated a graceful shutdown. Your application remains unaffected.
Explanation
The agent attached, then failed while installing instrumentation. The application is left running without Hud.
Solution
Restart once. If it happens again, send the full Hud: lines to [email protected].
E1018 - Failed to initialize configuration
Error Message
Failed to initialize configuration
Explanation
Agent configuration could not be built. Hud detaches.
Solution
Send the full Hud: lines to [email protected].
E1019 - Failed to initialize instrumentation storage
Error Message
Failed to initialize instrumentation storage
Explanation
The agent could not allocate its instrumentation state. Hud detaches.
Solution
Send the full Hud: lines to [email protected].
Runtime guardrails
These checks run before instrumentation. On failure the agent disables itself and the application starts without Hud.
E1008 - Unsupported Java version
Error Message
Unsupported Java version {version} detected. Supported versions: {list}.
Explanation
The JVM major is not in the supported list. The default list is 8, 11, 17, 21, and 25.
Solution
Run on a major from the compatibility matrix.
E1009 - Java version could not be read
Error Message
Unable to determine Java version {java.version}.
Explanation
java.version was not a version the agent could parse.
Solution
Send the value of java.version to [email protected].
E1010 - Unsupported operating system
Error Message
Unsupported OS '{os.name}' detected.
Explanation
The JVM's os.name is on the unsupported list. Windows is rejected by default.
Solution
Run the JVM on Linux or macOS. A Linux container on a Windows host is fine: the JVM's operating system is what is checked.
E1011 - Not enough memory
Error Message
Insufficient memory available. Minimum required: {MB}MB.
Explanation
The JVM's maximum heap is below the minimum. The default minimum is 250 MB.
Solution
Raise -Xmx so the maximum heap is at least the number in the message.
E1022 - SecurityManager is active
Error Message
Active Java SecurityManager detected.
Explanation
A security manager is installed. The agent disables itself rather than run under it.
Solution
Start the JVM without a security manager.
E1023 - Unsupported JVM
Error Message
Unsupported JVM implementation '{vm.name}' detected.
Explanation
java.vm.name matched io.hud.guardrails.unsupportedJvmNames. That property is empty by default, so this line only appears when it has been set.
Solution
Remove the JVM name from io.hud.guardrails.unsupportedJvmNames, or run a JVM that is not on that list.
Session startup
E2001 - Invalid API key
Error Message
The provided key is invalid. Verify HUD_KEY.
Explanation
The Hud backend rejected HUD_KEY (HTTP 401 or 403).
Solution
Copy the key again from the API keys page for the environment this service should report to. Restart after changing it.
E2002 - Network error during initialization
Error Message
Network error during SDK initialization. Check internet connection, firewall settings, and DNS. The backend may be temporarily unavailable.
Explanation
The session request failed: a timeout, a DNS or connection error, or an HTTP 5xx from the backend.
Solution
Confirm the process can reach Hud on the network, then restart. If it keeps failing, contact [email protected].
E2005 - TLS certificate check failed
Error Message
SSL certificate verification failed during SDK initialization. Set io.hud.customCaCert if using a self-signed certificate.
Explanation
The JVM did not trust the certificate on the connection to Hud. This is the usual result of a TLS-inspecting proxy or a private CA.
Solution
Point io.hud.customCaCert at the PEM file for that CA:
-Dio.hud.customCaCert=/path/to/ca.pem
E2008 - Session throttled
Error Message
Session throttled by backend.
Explanation
Hud accepted the connection and declined this session. The application keeps running without Hud data.
Solution
Contact [email protected].
After startup
E1013 - Instrumented function limit
Error Message
SDK limit of {max} instrumented functions exceeded.
Explanation
More methods matched io.hud.includeDomains than the agent will instrument. Hud detaches so the process is not left partially instrumented.
Solution
Narrow io.hud.includeDomains to the packages you want measured, then restart.
E1014 - No classes matched include domains
Error Message
No classes matched the configured include domains. Verify io.hud.includeDomains.
Explanation
The agent is running and has instrumented nothing. The package prefixes do not match the classes that loaded.
Solution
Set io.hud.includeDomains to a prefix of your packages, such as com.acme. A prefix that matches nothing, or only dependencies, produces this warning. Hud keeps running.
E1015 - Invalid configuration value
Error Message
Invalid value '{value}' for {property}, using default {default}.
Explanation
A system property the agent reads was not a valid value. Hud keeps the default named in the message.
Solution
Set that property to a valid value, or remove it to keep the default.
E1016 - Custom CA file not found
Error Message
Custom CA cert file not found: {path}. Continuing with the default trust store.
Explanation
io.hud.customCaCert is set and that path is not a file. Hud uses the JVM trust store.
Solution
Fix the path, or unset io.hud.customCaCert if you do not need a private CA.
E3001 - Heap stayed high
Error Message
Heap memory utilization remains consistently high.
Explanation
Heap usage stayed above the agent's threshold. Hud detaches so it does not add pressure.
Solution
Give the process more heap, or reduce what else it retains. Restart to load the agent again.
E3007 - No function activity yet
Error Message
Code instrumented successfully, but no function activity has been tracked yet. Make sure your service is handling requests.
Explanation
Methods were instrumented and none of them have run.
Solution
Invoke the service. A process that sits idle, or exits before a request, produces this warning and no metrics.
Frameworks
E1017 - Spring produced no endpoints
Error Message
Spring was detected but no HTTP endpoints were mapped. HTTP instrumentation may be partial or unavailable for this Spring version.
Explanation
Spring is on the classpath and no Spring HTTP endpoint was declared. spring-boot-starter-webflux is not instrumented. A Boot application that only hosts another framework still declares Boot's /error route and does not log this.
Solution
Use spring-boot-starter-web on a version from the compatibility matrix. For WebFlux, record the route with Mark as Flow (Flow.startHttp).
E1020 - http4k produced no routes
Error Message
http4k was detected but no HTTP routes were recorded. HTTP instrumentation may be partial or unavailable for this http4k version or server backend.
Explanation
http4k handled traffic and no HTTP route was recorded. SSE and WebSocket routers are not measured.
Solution
Use http4k 6.x and an HTTP router. Versions below 6.0.0.0 log E1028 instead.
E1028 - Library below its supported floor
Error Message
{framework} instrumentation is unavailable: the detected version is below the supported floor. Upgrade to {version} or later.
Explanation
The named library loaded and is older than the version in the message. Current floors are http4k 6.0.0.0, Jersey 2.8, and Kotlin coroutines 1.8.0. Hud keeps running; that library is not instrumented.
Solution
Upgrade the named library to at least the version in the message.
E1029 - JAX-RS produced no endpoints
Error Message
JAX-RS was detected but no HTTP endpoints were recorded. HTTP instrumentation may be partial or unavailable for this JAX-RS implementation or servlet container.
Explanation
A request reached Jersey's servlet boundary and no JAX-RS endpoint was recorded. Only servlet-hosted Jersey is measured.
Solution
Host Jersey as a servlet (org.glassfish.jersey.servlet.ServletContainer) on Jersey 2.8 or newer. Another JAX-RS stack, or Jersey on Grizzly, the JDK HTTP server, Netty, or Helidon, needs Mark as Flow.
Session tags
Tags are io.hud.tags.{name}={value} system properties. A bad tag is dropped or renamed. Hud keeps running.
E1024 - Tag name contained a dot
Error Message
io.hud.tags.* properties can't contain dots; they have been replaced with underscores.
Explanation
A tag name contained .. Hud stored it with _ in place of each dot.
Solution
Name the property without dots: -Dio.hud.tags.region=us-east-1.
E1025 - Tag name or value was empty
Error Message
io.hud.tags.* properties must contain non-empty keys and values; tags with empty keys or values have been ignored.
Explanation
A tag property had an empty name or an empty value. That tag was not sent.
Solution
Set both sides: -Dio.hud.tags.team=payments.
E1026 - Tag names collided
Error Message
io.hud.tags.* properties collided after dot normalization; duplicate keys were resolved by keeping the lexicographically first property.
Explanation
Two tag properties became the same name after dots were turned into underscores. Hud kept one of them.
Solution
Use one property per tag name.
Warnings without a code
These lines have no [E…] code. Each is logged once.
| Message | What to do |
|---|---|
| Start flow API was called inside an existing flow and was skipped. | A flow was already active on this thread. Hud keeps the outer flow. Do not start a second one inside it. See Mark as Flow. |
| Flow API was called with an invalid flow name and was skipped. | Pass a non-empty name to Flow.start or Flow.startQueue. |
| HTTP flow API was called with an invalid HTTP method and was skipped. | Pass a non-empty method to Flow.startHttp. |
| SDK limit of api flow ids exceeded. The flow was skipped. | Too many distinct custom flow names. Use a stable name, not one that includes an id from the message. |
| Hud API setFailure isn't supported outside of a flow. | Call Flow.setFailure on the thread where the flow was started, before Flow.end. |
| Hud API setContext isn't supported outside of a flow. | Call Flow.setContext on that same thread, before Flow.end. |
| Hud API setContext reached the per-flow context entry limit. | Later entries on that flow were dropped. Send fewer keys. |
| Hud API setStatusCode isn't supported outside of an HTTP flow. | Flow.setStatusCode applies to a flow started with Flow.startHttp. |
| The Hud API version is newer than this agent supports, the API will be ignored. | Upgrade the agent. Agent 0.3.5 supports io.hud.api 0.1.0, 0.2.0, and 0.2.1. |
| The Hud API version is not supported by this agent, the API will be ignored. | Use one of those library versions. HTTP and queue flows need agent 0.3.1 or newer and io.hud.api 0.2.0 or newer. |
| http4k SSE and WebSocket routes are not supported and are not reported. | HTTP routes are still recorded. SSE and WebSocket handlers are not entry points. |
| http4k served a request through a handler Hud cannot identify as a route. | Static files, a single-page app handler, or a pathless handler are not reported. |
| A JAX-RS request was served by a Jersey container Hud does not measure. | Only servlet-hosted Jersey is measured. Use a servlet container, or mark the route with Flow.startHttp. |
Updated 3 days ago

