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

  1. Verify the application name exactly matches a name registered in agent info (check the application list endpoint or HBase AgentInfo table).
  2. Widen the time window so it covers a period when the application's agents were actually running.
  3. Inspect the applicationAgentListQueryRule and agentInfoPredicate; relax filters that exclude all agents.
  4. Check that the collector is ingesting agent data (agent start, collector logs) if all applications appear empty.
  5. 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

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


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