pinpoint-apm/pinpoint · warning

from UserNode not found:{}

Error message

from UserNode not found:{}

What it means

Same situation as error 691 but in the simplified (SimplifiedNodeHistogramFactory) implementation: createUserNodeHistogram finds no incoming link for the User node, logs 'from UserNode not found', and returns createEmptyNodeHistogram instead of a populated one. It indicates the user's source link is absent from the supplied LinkList.

Source

Thrown at web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/SimplifiedNodeHistogramFactory.java:84

            AgentHistogramList targetList = inLink.getOutLinkList();
            for (AgentHistogram histogram : targetList.getAgentHistogramList()) {
                Histogram find = agentHistogramMap.get(histogram.getId());
                if (find == null) {
                    find = new Histogram(histogram.getServiceType());
                    agentHistogramMap.put(histogram.getId(), find);
                }
                find.add(histogram.getHistogram());
            }
        }
        return agentHistogramMap;
    }

    @Override
    public NodeHistogram createUserNodeHistogram(Application userApplication, Range range, LinkList linkList) {
        // for User nodes, find its source link and create the histogram
        final List<Link> fromLink = linkList.findFromLink(userApplication);
        if (fromLink.isEmpty()) {
            logger.warn("from UserNode not found:{}", userApplication);
            return createEmptyNodeHistogram(userApplication, range);
        } else if (fromLink.size() > 1) {
            // log and use first(0) link.
            logger.warn("Invalid from UserNode:{}", linkList.getLinkList());
        }
        final Link sourceLink = fromLink.get(0);

        NodeHistogram.Builder builder = NodeHistogram.newBuilder(userApplication, range);
        builder.setApplicationHistogram(sourceLink.getHistogram());
        return builder.build();
    }

    @Override
    public NodeHistogram createQueueNodeHistogram(Application queueApplication, Range range, LinkList linkList) {
        final List<Link> toLinkList = linkList.findToLink(queueApplication);
        if (toLinkList.isEmpty()) {
            return NodeHistogram.empty(queueApplication, range);
        }

View on GitHub (pinned to 744c3d3075)

Solutions

  1. Verify the link-building phase that runs with the simplified factory actually creates USER->APP links.
  2. Use the same Range for link creation and node histogram creation.
  3. Confirm the user Application passed in matches the one used when links were built (same ApplicationFactory name/serviceType).
  4. Treat the returned empty NodeHistogram as the designed fallback when user links are disabled.

Example fix

// before
NodeHistogram nh = simplifiedFactory.createUserNodeHistogram(userApp, range, linkList);
// after
if (linkList.findFromLink(userApp).isEmpty()) {
    logger.debug("no user link for {}; empty histogram expected", userApp);
}
NodeHistogram nh = simplifiedFactory.createUserNodeHistogram(userApp, range, linkList);
Defensive patterns

Strategy: fallback

Validate before calling

boolean hasUserLink = !linkList.findFromLink(userApplication).isEmpty();
if (!hasUserLink) {
    logger.debug("simplified map: no user link for {}", userApplication);
}

Prevention

When it happens

Trigger: Calling SimplifiedNodeHistogramFactory.createUserNodeHistogram(userApplication, range, linkList) when findFromLink(userApplication) is empty — no link in the list targets the user Application.

Common situations: Simplified map rendering mode with user nodes enabled but the user link omitted by the link appender; node/link phase range mismatch; link data dropped due to link-count limits; calling the factory with a user Application that was never linked (e.g. fabricated node).

Understand the failure class

Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.

Related errors


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