{"record":{"id":"321dfe677d81cc93","repo":"pinpoint-apm/pinpoint","slug":"disable-activethreaddump-option-config-enable-ac","errorCode":null,"errorMessage":"Disable activeThreadDump option. 'config.enable.activeThreadDump=false'","messagePattern":"Disable activeThreadDump option\\. 'config\\.enable\\.activeThreadDump=false'","errorType":"http","errorClass":"ResponseStatusException","httpStatus":500,"severity":"error","filePath":"web/src/main/java/com/navercorp/pinpoint/web/authorization/controller/ActiveThreadDumpController.java","lineNumber":117,"sourceCode":"    ) {\n        ClusterKey clusterKey = getClusterKey(applicationName, agentId);\n        ATDSupply response = this.activeThreadDumpService.getLightDump(\n                clusterKey, threadNameList, localTraceIdList, limit);\n\n        AgentActiveThreadDumpList activeThreadDumpList = (new AgentActiveThreadDumpFactory())\n                .create2(response.getThreadDumps());\n\n        return CodeResult.ok(new ThreadDumpResult(\n                activeThreadDumpList,\n                response.getType(),\n                response.getSubType(),\n                response.getVersion()\n        ));\n    }\n\n    private ClusterKey getClusterKey(String applicationName, String agentId) {\n        if (!this.webProperties.isEnableActiveThreadDump()) {\n            throw new ResponseStatusException(\n                    HttpStatus.INTERNAL_SERVER_ERROR,\n                    \"Disable activeThreadDump option. 'config.enable.activeThreadDump=false'\"\n            );\n        }\n\n        final ClusterKey clusterKey = this.agentService.getClusterKey(applicationName, agentId);\n        if (clusterKey == null) {\n            throw new ResponseStatusException(\n                    HttpStatus.INTERNAL_SERVER_ERROR,\n                    String.format(\"Cannot find suitable agent(%s/%s)\", applicationName, agentId)\n            );\n        }\n        return clusterKey;\n    }\n\n}\n","sourceCodeStart":99,"sourceCodeEnd":134,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/web/src/main/java/com/navercorp/pinpoint/web/authorization/controller/ActiveThreadDumpController.java#L99-L134","documentation":"ActiveThreadDumpController.getClusterKey checks webProperties.isEnableActiveThreadDump() before serving any active thread dump request. When the server-side option `config.enable.activeThreadDump` is false (the feature is disabled), the controller responds with HTTP 500 and this message. The error is a deliberate feature gate, not a runtime failure of the dump itself.","triggerScenarios":"Calling any activeThreadDump endpoint (clusterKey/threadDump) while the Pinpoint Web server was started with config.enable.activeThreadDump=false (or the property is absent and defaults to disabled).","commonSituations":"Deploying Pinpoint Web with default configuration that leaves activeThreadDump disabled, then the frontend thread-dump panel calls the API; upgrading Pinpoint where the option was renamed/moved in pinpoint-web.properties; operators deliberately disabling the feature for security but forgetting the UI still shows the button.","solutions":["Enable the feature in the Pinpoint Web configuration: set config.enable.activeThreadDump=true in pinpoint-web.properties and restart the web module","If the feature must stay disabled, hide/disable the thread dump UI action in the frontend instead of calling the API","Verify the correct property file/profile is loaded — a typo or wrong profile leaves the flag at its default (false)"],"exampleFix":"// before (pinpoint-web.properties)\n# config.enable.activeThreadDump=false\n// after\nconfig.enable.activeThreadDump=true","handlingStrategy":"try-catch","validationCode":"// check server capability before calling\nconst dumpEnabled = await fetchAdminConfig().then(c => c.enableActiveThreadDump);\nif (!dumpEnabled) { console.warn('activeThreadDump disabled on server'); return null; }","typeGuard":null,"tryCatchPattern":"try {\n  return await api.getActiveThreadDump({ applicationName, agentId });\n} catch (e) {\n  if (e.status === 500 && String(e.message).includes('Disable activeThreadDump option')) {\n    return null; // feature disabled on server — degrade gracefully\n  }\n  throw e;\n}","preventionTips":["Set config.enable.activeThreadDump=true in pinpoint-web.properties if thread dump is needed","Feature-detect the endpoint in the UI and hide the thread-dump action when the server reports it disabled","Document the flag in deployment runbooks so operators don't ship with it off unintentionally","After upgrades, re-check property names against release notes"],"tags":["configuration","feature-flag","http-500","thread-dump"],"backgroundTag":"feature-not-enabled","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"}