apache/dolphinscheduler · error · ServiceException
110017
110017
Error message
Alert server does not exist
What it means
Thrown by testSend when getAlertServerAddress() returns an empty Optional, i.e., no live Alert server (dolphinscheduler-alert) is registered in the registry. The API cannot deliver the test alert without an alert server host.
Source
Thrown at dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java:308
public Optional<Host> getAlertServerAddress() {
List<Server> serverList = registryClient.getServerList(RegistryNodeType.ALERT_SERVER);
if (CollectionUtils.isEmpty(serverList)) {
return Optional.empty();
}
Server server = serverList.get(0);
return Optional.of(new Host(server.getHost(), server.getPort()));
}
@Override
public void testSend(User loginUser, int pluginDefineId, String pluginInstanceParams) {
if (!canOperatorPermissions(loginUser, null, AuthorizationType.ALERT_PLUGIN_INSTANCE, ALERT_INSTANCE_CREATE)) {
throw new ServiceException(Status.USER_NO_OPERATION_PERM);
}
Optional<Host> alertServerAddressOptional = getAlertServerAddress();
if (!alertServerAddressOptional.isPresent()) {
throw new ServiceException(Status.ALERT_SERVER_NOT_EXIST);
}
Host alertServerAddress = alertServerAddressOptional.get();
AlertTestSendRequest alertTestSendRequest = new AlertTestSendRequest(
pluginDefineId,
pluginInstanceParams);
AlertSendResponse alertSendResponse;
try {
alertSendResponse = Clients
.withService(IAlertOperator.class)
.withHost(alertServerAddress.getAddress())
.sendTestAlert(alertTestSendRequest);
log.info("Send alert to: {} successfully, response: {}", alertServerAddress, alertSendResponse);
} catch (Exception e) {
log.error("Send alert: {} to: {} failed", alertTestSendRequest, alertServerAddress, e);
throw new ServiceException(Status.ALERT_TEST_SENDING_FAILED, e.getMessage());View on GitHub (pinned to 02eac45a1b)
Solutions
- Start/verify the dolphinscheduler-alert service is running and registered in the registry.
- Check the registry (ZooKeeper) nodes for the alert server registration path.
- Confirm network connectivity between API server and alert server.
- Restart the alert server and re-run the test send.
Defensive patterns
Strategy: fallback
Validate before calling
// before testSend, confirm an alert server is registered
boolean alertServerUp = registryClient.checkNodeExists(REGISTRY_DOLPHINSCHEDULER_ALERT);
if (!alertServerUp) throw new IllegalStateException("no alert server registered"); Try / catch
try { alertPluginInstanceService.testSend(loginUser, pluginDefineId, params); } catch (ServiceException e) { if (e.getCode() == Status.ALERT_SERVER_NOT_EXIST.getCode()) { /* start alert server or retry later */ } throw e; } Prevention
- Monitor alert-server liveness in the registry
- Add alert-server health checks to deployment pipelines
- Ensure registry (ZooKeeper) connectivity from API server
- Alert on alert-server process downtime
When it happens
Trigger: Testing an alert channel while the alert server is down, unregistered, or the API server cannot discover it in ZooKeeper/registry.
Common situations: Alert service crashed or not started in the cluster; registry connectivity problems; alert server started on a host blocked from the API server's view; version upgrade leaving registry data stale.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06).
Data as JSON: /api/errors/c6a23c7ce2e05717.
Report an issue: GitHub.