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

  1. Start/verify the dolphinscheduler-alert service is running and registered in the registry.
  2. Check the registry (ZooKeeper) nodes for the alert server registration path.
  3. Confirm network connectivity between API server and alert server.
  4. 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

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.