pinpoint-apm/pinpoint · warning · UnsupportedOperationException
Service map is not enabled
Error message
Service map is not enabled
What it means
MapController.getServiceMapData checks mapProperties.isEnableServiceMap() before building the service map. When the feature flag is disabled it logs a warning and throws UnsupportedOperationException. This is an intentional kill-switch for deployments that disable the server map feature.
Solutions
- Set config.enable.service.map=true in pinpoint-web.properties and restart the web module
- If the map should stay disabled, stop calling the service map endpoints and use alternatives
- Confirm the deployed profile actually loads the properties file you edited
Example fix
// before (pinpoint-web.properties) config.enable.service.map=false // after config.enable.service.map=true
Defensive patterns
Strategy: try-catch
Try / catch
try {
ServiceMapView view = mapController.getServiceMapData(...);
} catch (UnsupportedOperationException e) {
if (e.getMessage().contains("Service map is not enabled")) {
// render 'feature disabled' UI state
} else throw e;
} Prevention
- Check mapProperties.isEnableServiceMap() (or the corresponding config property) before exposing map UI/links
- Document the enable/disable flag for your deployment
- Use a consistent profile so the flag isn't accidentally off in production
When it happens
Trigger: Calling the server map endpoint (e.g. /getServiceMapData) while the configuration property enableServiceMap is false in Pinpoint web configuration (pinpoint-web.properties: config.enable.service.map=false).
Common situations: Deployments that disabled the service map for performance or security reasons; users hitting the UI/API after an upgrade where the default changed; docker/k8s env vars setting the flag off.
Related errors
- agentInfoRefreshIntervalMs must be greater than 0
- agentInfoSendIntervalMs must be greater than 0
- BracketMatcherOperator is not an operation target.
- Disable activeThreadDump option…
- Error creating ShutdownHookRegister
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/f5205aad7a416df2.
Report an issue: GitHub.
Appendix: source
Thrown at web/src/main/java/com/navercorp/pinpoint/web/applicationmap/controller/MapController.java:155
LinkRender linkRender = LinkRender.forServerMap();
ApplicationMapView applicationMapView = new ApplicationMapViewV3(map, timeWindow, nodeRender, linkRender);
return new MapWrap<>(applicationMapView);
}
@GetMapping(value = "/serviceMap")
public MapWrap<ServiceMapView> getServiceMapData(
@ServiceParam ServiceName serviceName,
@ModelAttribute
ApplicationForm appForm,
@Valid @ModelAttribute
RangeForm rangeForm,
@RequestParam(value = "useStatisticsAgentState", defaultValue = "false", required = false)
boolean useStatisticsAgentState
) {
if (!mapProperties.isEnableServiceMap()) {
logger.warn("Service map is not enabled");
throw new UnsupportedOperationException("Service map is not enabled");
}
final TimeWindow timeWindow = newTimeWindow(rangeForm);
final SearchOption searchOption = searchOptionBuilder().build(SearchOptionForm.DEFAULT_SEARCH_DEPTH, SearchOptionForm.DEFAULT_SEARCH_DEPTH, false, false);
final Service service = serviceModelResolver.getService(serviceName.getName());
final List<Application> sourceApplications = getSourceApplications(service, appForm);
final ApplicationMap map = selectServiceMap(service, sourceApplications, timeWindow, searchOption, useStatisticsAgentState);
NodeRender nodeRender = NodeRender.forServiceMap();
LinkRender linkRender = LinkRender.forServiceMap();
final Set<String> expandedServiceNames = Set.of(serviceName.getName());
ServiceMapViewBuilder builder = new ServiceMapViewBuilder(map, timeWindow, nodeRender, linkRender, expandedServiceNames);
return new MapWrap<>(builder.build());
}
private ApplicationMap selectServiceMap(Service service, List<Application> sourceApplications, TimeWindow timeWindow, SearchOption searchOption, boolean useStatisticsAgentState) {
if (sourceApplications.isEmpty()) {
logger.info("Select serviceMap. no applications found. service={}", service);
return new SimpleApplicationMap(NodeList.EMPTY, LinkList.EMPTY, timeWindow.getWindowRange());View on GitHub (pinned to 744c3d3075)