pinpoint-apm/pinpoint · warning
Failed to send agentInfo={}. request unsuccessful, response=
Error message
Failed to send agentInfo={}. request unsuccessful, response={} What it means
The collector responded with a ResultResponse whose isSuccess() is false, i.e. the collector explicitly rejected the AgentInfo. Logged with the agent details and the collector's response message; sendAgentInfo returns false and retries later.
Source
Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/AgentInfoSender.java:191
private boolean sendAgentInfo() {
AgentInfo agentInfo = null;
try {
agentInfo = agentInfoFactory.createAgentInfo();
logger.info("Sending AgentInfo={}", agentInfo);
CompletableFuture<ResultResponse> future = dataSender.request(agentInfo);
ResultResponse result = future.get(3000, TimeUnit.MILLISECONDS);
if (result == null) {
if (agentInfo != null && agentInfo.getAgentInformation() != null) {
logger.warn("Failed to send agentInfo={}. result not set", agentInfo.getAgentInformation());
} else {
logger.warn("Failed to send agentInfo. result not set");
}
return false;
}
if (!result.isSuccess()) {
if (agentInfo != null && agentInfo.getAgentInformation() != null) {
logger.warn("Failed to send agentInfo={}. request unsuccessful, response={}", agentInfo.getAgentInformation(), result.getMessage());
} else {
logger.warn("Failed to send agentInfo. request unsuccessful, response={}", result.getMessage());
}
}
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) {View on GitHub (pinned to 744c3d3075)
Solutions
- Read the response message in the log ('response=...') for the collector's rejection reason
- Verify agentId/applicationName uniqueness and validity for the collector (duplicates or bad format cause rejection)
- Check collector/HBase health: storage write failures make the collector return unsuccessful results
- Align agent and collector versions; the sender retries automatically so transient storage issues may self-heal
Defensive patterns
Strategy: retry
Try / catch
if (!result.isSuccess()) { logger.warn("rejected by collector: {}", result.getMessage()); return false; } // sender retries automatically Prevention
- Read response=... in the log for the collector's rejection reason
- Keep agentId unique per application and format-valid
- Keep collector and HBase healthy; check collector logs on repeated rejects
When it happens
Trigger: dataSender.request(agentInfo) future completes with a non-null ResultResponse where result.isSuccess() == false and agentInfo.getAgentInformation() != null.
Common situations: Collector rejecting the registration because of an invalid agentId/applicationName, collector-side storage (HBase) write failure, or version/protocol mismatch causing the collector to answer with an error result.
Related errors
- INTERNAL_SERVER_ERROR
- Failed to send agentInfo={}. result not set
- Failed to send agentInfo. request unsuccessful, response={}
- Failed to send agentInfo={}
- Timed out while getting serviceUid. serviceName:${serviceNam
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/e7a89c88681bbedd.
Report an issue: GitHub.