pinpoint-apm/pinpoint · warning
agent list is empty for application:{}
Error message
agent list is empty for application:{} What it means
AgentsServiceImpl.getAgentsByApplicationName collects active agent info for an application over a time window; if the resulting list is empty it logs this warning before returning. It is not a thrown exception: the call still succeeds and returns an (empty) Agents result with links attached. The warning flags that no matching agent data existed for the given application/timeWindow/query rule/predicate combination.
Source
Thrown at web/src/main/java/com/navercorp/pinpoint/web/agentlist/service/AgentsServiceImpl.java:67
this.hyperLinkFactory = Objects.requireNonNull(hyperLinkFactory, "hyperLinkFactory");
}
@Override
public List<AgentStatusAndLink> getAgentsByApplicationName(
Application application,
TimeWindow timeWindow,
ApplicationAgentListQueryRule applicationAgentListQueryRule,
AgentInfoFilter agentInfoPredicate
) {
Objects.requireNonNull(application, "application");
Objects.requireNonNull(timeWindow, "timeWindow");
Objects.requireNonNull(applicationAgentListQueryRule, "applicationAgentListQueryRule");
Objects.requireNonNull(agentInfoPredicate, "agentInfoPredicate");
List<AgentAndStatus> agentInfoAndStatuses = getActivateAgentInfoList(application, timeWindow, applicationAgentListQueryRule, agentInfoPredicate);
if (agentInfoAndStatuses.isEmpty()) {
logger.warn("agent list is empty for application:{}", application);
}
return AgentsFactory.addLinks(
hyperLinkFactory,
agentInfoAndStatuses
);
}
private List<AgentAndStatus> getActivateAgentInfoList(
Application application,
TimeWindow timeWindow,
ApplicationAgentListQueryRule applicationAgentListQueryRule,
AgentInfoFilter agentInfoFilter
) {
final Service service = application.getService();
final String applicationName = application.getApplicationName();
final ServiceType serviceType = application.getServiceType();
final Range windowRange = timeWindow.getWindowRange();View on GitHub (pinned to 744c3d3075)
Solutions
- Verify the application name exactly matches a name registered in agent info (check the application list endpoint or HBase AgentInfo table).
- Widen the time window so it covers a period when the application's agents were actually running.
- Inspect the applicationAgentListQueryRule and agentInfoPredicate; relax filters that exclude all agents.
- Check that the collector is ingesting agent data (agent start, collector logs) if all applications appear empty.
- If emptiness is expected, treat the warning as informational and handle the empty result in the caller.
Example fix
// before
List<AgentAndStatus> agents = agentsService.getAgentsByApplicationName(app, range);
render(agents);
// after
List<AgentAndStatus> agents = agentsService.getAgentsByApplicationName(app, range);
if (agents.isEmpty()) {
logger.info("no agents found for {} in {}; check name and time range", app, range);
}
render(agents); Defensive patterns
Strategy: validation
Validate before calling
// pre-check on the caller side
if (application == null || application.isBlank()) throw new IllegalArgumentException("application required");
// optionally query agent life-cycle for the window first
boolean anyActive = agentsService.getApplicationAgents(application, timeWindow).stream().anyMatch(a -> a.getStatus().isRunning());
if (!anyActive) logger.info("skip agent list for {}: none active in window", application); Prevention
- Validate the application name against the registered application list before querying.
- Always pass a time window that covers known deployment periods.
- Keep query rules/predicates permissive enough to include at least running agents.
- Handle empty results explicitly in UI code instead of assuming agents exist.
When it happens
Trigger: Calling getAgentsByApplicationName(application, timeWindow, applicationAgentListQueryRule, agentInfoPredicate) when getActivateAgentInfoList returns zero AgentAndStatus entries — e.g. no agents were active in the time window, the application name has no recorded agent life cycles, or the query rule/predicate filters out every candidate agent.
Common situations: Querying an application name with a typo; asking for a time window before the app was deployed or after it was decommissioned; overly strict agentInfoPredicate filtering out agents; stale/empty agent-info (HBase) tables; front-end charts requesting data for a just-created application.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- from UserNode not found:{}
- Invalid from UserNode:{}
- from UserNode not found:{}
- Invalid from UserNode:{}
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/6195ced9a43a4002.
Report an issue: GitHub.