pinpoint-apm/pinpoint · warning

Failed to send agentInfo={}. result not set

Error message

Failed to send agentInfo={}. result not set

What it means

AgentInfoSender.sendAgentInfo sends AgentInfo via the async data sender and waits up to 3 seconds for a ResultResponse. If the future returns null, the send is treated as failed (returns false) and this warning is logged with the agent's AgentInformation. It indicates the transport layer completed without producing a result object.

Source

Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/AgentInfoSender.java:183

            boolean isSuccessful = sendAgentInfo();
            if (isSuccessful) {
                logger.info("AgentInfo sent.");
                this.cancel();
                taskHandler.onSuccess();
            }
        }

        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);

View on GitHub (pinned to 744c3d3075)

Solutions

  1. Check collector logs to confirm the AgentInfo was actually received and stored (the agent will retry periodically)
  2. Verify agent and collector (HBase) versions are compatible; mismatched protocols can yield empty results
  3. Inspect the configured dataSender implementation for code paths that complete the future with null
  4. The sender retries automatically; ensure the collector becomes reachable and watch for subsequent successful sends
Defensive patterns

Strategy: retry

Validate before calling

// pre-check collector reachability
try (Socket s = new Socket()) { s.connect(new InetSocketAddress(host, tcpPort), 2000); }

Try / catch

CompletableFuture<ResultResponse> f = dataSender.request(agentInfo);
ResultResponse r = f.get(3000, TimeUnit.MILLISECONDS);
if (r == null) { logger.warn("no result from collector; will retry"); return false; }

Prevention

When it happens

Trigger: dataSender.request(agentInfo) future completes with a null ResultResponse within the 3000ms timeout — i.e. the transport succeeded at the socket level but produced no result payload.

Common situations: Collector responses routed through a protocol path that resolves the future without setting a result; custom/misconfigured data sender implementations; serialization mismatch between agent and collector versions.

Understand the failure class

Background: "invalid response format", "malformed payload", "missing data field": when an API returns 200 but the response shape is wrong — this error's family across 23 libraries.

Related errors


AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07). Data as JSON: /api/errors/9ab40b8b4051c6d7. Report an issue: GitHub.