{"record":{"id":"17380f3f00aba648","repo":"apache/skywalking","slug":"could-not-found-the-process-traffic-model","errorCode":null,"errorMessage":"could not found the process traffic model","messagePattern":"could not found the process traffic model","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingQueryService.java","lineNumber":126,"sourceCode":"        if (processMetricsDAO == null) {\n            final StorageDAO storageDAO = moduleManager.find(StorageModule.NAME)\n                    .provider()\n                    .getService(StorageDAO.class);\n            this.processMetricsDAO = storageDAO.newMetricsDao(new ProcessTraffic.Builder());\n        }\n        return processMetricsDAO;\n    }\n\n    private Model getProcessModel() {\n        if (processTrafficModel == null) {\n            for (Model model : this.storageModels.allModels()) {\n                if (Objects.equals(model.getName(), ProcessTraffic.INDEX_NAME)) {\n                    processTrafficModel = model;\n                    break;\n                }\n            }\n            if (processTrafficModel == null) {\n                throw new IllegalStateException(\"could not found the process traffic model\");\n            }\n        }\n        return processTrafficModel;\n    }\n\n    private EBPFProfilingAnalyzer getProfilingAnalyzer() {\n        if (profilingAnalyzer == null) {\n            this.profilingAnalyzer = new EBPFProfilingAnalyzer(moduleManager, config.getMaxDurationOfQueryEBPFProfilingData(),\n                    config.getMaxThreadCountOfQueryEBPFProfilingData());\n        }\n        return profilingAnalyzer;\n    }\n\n    public IMetadataQueryDAO getMetadataQueryDAO() {\n        if (metadataQueryDAO == null) {\n            metadataQueryDAO = moduleManager.find(StorageModule.NAME)\n                    .provider()\n                    .getService(IMetadataQueryDAO.class);","sourceCodeStart":108,"sourceCodeEnd":144,"githubUrl":"https://github.com/apache/skywalking/blob/102af09b4a56064e22050dded10e2c52e490d040/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingQueryService.java#L108-L144","documentation":"EBPFProfilingQueryService.getProcessModel() lazily locates the storage Model for ProcessTraffic.INDEX_NAME ('process_traffic') among all registered storage models. If no model with that exact name exists, it throws IllegalStateException — meaning the eBPF profiling query path was invoked while the process-traffic stream was never registered. This is an environment/config mismatch surfaced lazily on first query, not at boot.","triggerScenarios":"Any eBPF profiling query that needs to join profiling tasks with process traffic (getProcessModel() called) while the ProcessTraffic model is absent from StorageModels.allModels() — e.g. the OAP booted without the profiling/process modules or the model was never created because no stream registration ran.","commonSituations":"Custom OAP packaging (server-tools / trimmed server-starter) that drops the module registering ProcessTraffic; querying eBPF profiling endpoints against a node whose module set differs; older storage nodes in a mixed cluster that never installed the process_traffic resource.","solutions":["Confirm the OAP deployment includes the eBPF profiling/process modules (agent-analyzer / core profiling stream registration) so the process_traffic model is created at boot.","Check storage backend for the process_traffic resource (index/measure); if missing on a non-init node, let the init OAP create it or push the runtime rule.","Avoid calling the eBPF profiling query APIs on trimmed tool deployments that do not register the model.","On k8s, ensure all OAP replicas run the same image/module set."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Guard the query path\nboolean processModelPresent = storageModels.allModels().stream()\n    .anyMatch(m -> Objects.equals(m.getName(), ProcessTraffic.INDEX_NAME));\nif (!processModelPresent) throw new IllegalStateException(\"process_traffic model unavailable; check OAP modules\");","typeGuard":"boolean ebpfProcessQuerySupported(StorageModels models) { return models.allModels().stream().anyMatch(m -> \"process_traffic\".equals(m.getName())); }","tryCatchPattern":"try { result = ebpfProfilingQueryService.queryProcesses(...); } catch (IllegalStateException e) { if (e.getMessage().contains(\"process traffic model\")) { return emptyResult(); } throw e; }","preventionTips":["Boot a canary OAP and verify the process_traffic resource exists before exposing eBPF profiling APIs.","Use identical OAP images/module sets across replicas.","Do not strip core profiling stream modules from custom packagings."],"tags":["ebpf","profiling","storage-model","lazy-init","query"],"backgroundTag":null,"analyzedSha":"102af09b4a56064e22050dded10e2c52e490d040","analyzedAt":"2026-08-14T10:47:52.647Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}