pinpoint-apm/pinpoint · warning
Failed to send agentInfo
Error message
Failed to send agentInfo
What it means
Fallback branch of logError: the same exception-driven send failure is logged without agent details because agentInfo or its AgentInformation is null. Cause is chained in the log; the send fails and retries.
Source
Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/AgentInfoSender.java:212
}
}
return result.isSuccess();
} catch (ExecutionException ex) {
logError(agentInfo, ex.getCause());
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
logError(agentInfo, ex);
} catch (TimeoutException ex) {
logError(agentInfo, ex);
}
return false;
}
private void logError(AgentInfo agentInfo, Throwable cause) {
if (agentInfo != null && agentInfo.getAgentInformation() != null) {
logger.warn("Failed to send agentInfo={}", agentInfo.getAgentInformation(), cause);
} else {
logger.warn("Failed to send agentInfo", cause);
}
}
}
public static class Builder {
private final AsyncDataSender<MetaDataType, ResultResponse> dataSender;
private final AgentInfoFactory agentInfoFactory;
private long refreshIntervalMs = DEFAULT_AGENT_INFO_REFRESH_INTERVAL_MS;
private long sendIntervalMs = DEFAULT_AGENT_INFO_SEND_INTERVAL_MS;
private int maxTryPerAttempt = DEFAULT_MAX_TRY_COUNT_PER_ATTEMPT;
public Builder(AsyncDataSender<MetaDataType, ResultResponse> dataSender, AgentInfoFactory agentInfoFactory) {
this.dataSender = Objects.requireNonNull(dataSender, "dataSender");
this.agentInfoFactory = Objects.requireNonNull(agentInfoFactory, "agentInfoFactory");
}
public Builder refreshInterval(long refreshIntervalMs) {
this.refreshIntervalMs = refreshIntervalMs;View on GitHub (pinned to 744c3d3075)
Solutions
- Populate AgentInformation correctly (agentId, applicationName, agentStartTime, hostname) in pinpoint.config / Builder
- Fix the underlying network/collector issue revealed by the chained cause
- Confirm collector reachability with a connection test from the agent host
- Monitor retry success after fixing; agent registration completes once a send succeeds
Example fix
// before: agentInfo without information new AgentInfo(null, jvmInfo, serverMetaData, serviceInfoCollection) // after new AgentInfo(new AgentInformation(agentId, applicationName, ...), jvmInfo, serverMetaData, serviceInfoCollection)
Defensive patterns
Strategy: try-catch
Validate before calling
if (agentInfo == null || agentInfo.getAgentInformation() == null)
throw new IllegalStateException("AgentInformation missing before send"); Try / catch
try { ... }
catch (ExecutionException ex) { logError(agentInfo, ex.getCause()); }
catch (InterruptedException ex) { Thread.currentThread().interrupt(); } Prevention
- Ensure AgentInformation is built before any send attempt
- Fix underlying transport issues revealed by the chained cause
- Keep collector endpoints reachable and monitored
When it happens
Trigger: Send exception (timeout/execution failure) while agentInfo == null or agentInfo.getAgentInformation() == null — an infra failure combined with missing agent metadata.
Common situations: Early startup or programmatic Builder misuse producing AgentInfo without AgentInformation, while the collector is simultaneously unreachable.
Understand the failure class
Background: Request timed out: what client-side request timeouts mean across libraries (Request timed out, TIMED_OUT, APITimeoutError) — this error's family across 39 libraries.
Related errors
- Failed to send agentInfo={}
- Failed to send agentInfo={}. result not set
- Failed to send agentInfo. result not set
- Failed to send agentInfo. request unsuccessful, response={}
- agentDirPath is null
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/08b243d9cdc2df3d.
Report an issue: GitHub.