{"record":{"id":"8226a3be06348474","repo":"pinpoint-apm/pinpoint","slug":"from-usernode-not-found-8226a3","errorCode":null,"errorMessage":"from UserNode not found:{}","messagePattern":"from UserNode not found:(.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/SimplifiedNodeHistogramFactory.java","lineNumber":84,"sourceCode":"            AgentHistogramList targetList = inLink.getOutLinkList();\n            for (AgentHistogram histogram : targetList.getAgentHistogramList()) {\n                Histogram find = agentHistogramMap.get(histogram.getId());\n                if (find == null) {\n                    find = new Histogram(histogram.getServiceType());\n                    agentHistogramMap.put(histogram.getId(), find);\n                }\n                find.add(histogram.getHistogram());\n            }\n        }\n        return agentHistogramMap;\n    }\n\n    @Override\n    public NodeHistogram createUserNodeHistogram(Application userApplication, Range range, LinkList linkList) {\n        // for User nodes, find its source link and create the histogram\n        final List<Link> fromLink = linkList.findFromLink(userApplication);\n        if (fromLink.isEmpty()) {\n            logger.warn(\"from UserNode not found:{}\", userApplication);\n            return createEmptyNodeHistogram(userApplication, range);\n        } else if (fromLink.size() > 1) {\n            // log and use first(0) link.\n            logger.warn(\"Invalid from UserNode:{}\", linkList.getLinkList());\n        }\n        final Link sourceLink = fromLink.get(0);\n\n        NodeHistogram.Builder builder = NodeHistogram.newBuilder(userApplication, range);\n        builder.setApplicationHistogram(sourceLink.getHistogram());\n        return builder.build();\n    }\n\n    @Override\n    public NodeHistogram createQueueNodeHistogram(Application queueApplication, Range range, LinkList linkList) {\n        final List<Link> toLinkList = linkList.findToLink(queueApplication);\n        if (toLinkList.isEmpty()) {\n            return NodeHistogram.empty(queueApplication, range);\n        }","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/web/src/main/java/com/navercorp/pinpoint/web/applicationmap/appender/histogram/SimplifiedNodeHistogramFactory.java#L66-L102","documentation":"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.","triggerScenarios":"Calling SimplifiedNodeHistogramFactory.createUserNodeHistogram(userApplication, range, linkList) when findFromLink(userApplication) is empty — no link in the list targets the user Application.","commonSituations":"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).","solutions":["Verify the link-building phase that runs with the simplified factory actually creates USER->APP links.","Use the same Range for link creation and node histogram creation.","Confirm the user Application passed in matches the one used when links were built (same ApplicationFactory name/serviceType).","Treat the returned empty NodeHistogram as the designed fallback when user links are disabled."],"exampleFix":"// before\nNodeHistogram nh = simplifiedFactory.createUserNodeHistogram(userApp, range, linkList);\n// after\nif (linkList.findFromLink(userApp).isEmpty()) {\n    logger.debug(\"no user link for {}; empty histogram expected\", userApp);\n}\nNodeHistogram nh = simplifiedFactory.createUserNodeHistogram(userApp, range, linkList);","handlingStrategy":"fallback","validationCode":"boolean hasUserLink = !linkList.findFromLink(userApplication).isEmpty();\nif (!hasUserLink) {\n    logger.debug(\"simplified map: no user link for {}\", userApplication);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run the link appender that creates USER->APP links in simplified mode.","Match the Application instance (name + serviceType) used during link building.","Keep node and link ranges aligned.","Handle the empty-histogram node gracefully in the UI."],"tags":["application-map","missing-link","apm"],"backgroundTag":"entity-not-found","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}