pinpoint-apm/pinpoint · error · ResponseStatusException

Disable activeThreadDump option. 'config.enable.activeThread

Error message

Disable activeThreadDump option. 'config.enable.activeThreadDump=false'

What it means

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.

Source

Thrown at web/src/main/java/com/navercorp/pinpoint/web/authorization/controller/ActiveThreadDumpController.java:117

    ) {
        ClusterKey clusterKey = getClusterKey(applicationName, agentId);
        ATDSupply response = this.activeThreadDumpService.getLightDump(
                clusterKey, threadNameList, localTraceIdList, limit);

        AgentActiveThreadDumpList activeThreadDumpList = (new AgentActiveThreadDumpFactory())
                .create2(response.getThreadDumps());

        return CodeResult.ok(new ThreadDumpResult(
                activeThreadDumpList,
                response.getType(),
                response.getSubType(),
                response.getVersion()
        ));
    }

    private ClusterKey getClusterKey(String applicationName, String agentId) {
        if (!this.webProperties.isEnableActiveThreadDump()) {
            throw new ResponseStatusException(
                    HttpStatus.INTERNAL_SERVER_ERROR,
                    "Disable activeThreadDump option. 'config.enable.activeThreadDump=false'"
            );
        }

        final ClusterKey clusterKey = this.agentService.getClusterKey(applicationName, agentId);
        if (clusterKey == null) {
            throw new ResponseStatusException(
                    HttpStatus.INTERNAL_SERVER_ERROR,
                    String.format("Cannot find suitable agent(%s/%s)", applicationName, agentId)
            );
        }
        return clusterKey;
    }

}

View on GitHub (pinned to 744c3d3075)

Solutions

  1. Enable the feature in the Pinpoint Web configuration: set config.enable.activeThreadDump=true in pinpoint-web.properties and restart the web module
  2. If the feature must stay disabled, hide/disable the thread dump UI action in the frontend instead of calling the API
  3. Verify the correct property file/profile is loaded — a typo or wrong profile leaves the flag at its default (false)

Example fix

// before (pinpoint-web.properties)
# config.enable.activeThreadDump=false
// after
config.enable.activeThreadDump=true
Defensive patterns

Strategy: try-catch

Validate before calling

// check server capability before calling
const dumpEnabled = await fetchAdminConfig().then(c => c.enableActiveThreadDump);
if (!dumpEnabled) { console.warn('activeThreadDump disabled on server'); return null; }

Try / catch

try {
  return await api.getActiveThreadDump({ applicationName, agentId });
} catch (e) {
  if (e.status === 500 && String(e.message).includes('Disable activeThreadDump option')) {
    return null; // feature disabled on server — degrade gracefully
  }
  throw e;
}

Prevention

When it happens

Trigger: 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).

Common situations: 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.

Related errors


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