apache/dolphinscheduler · error · ServiceException

USER_NO_OPERATION_PERM

USER_NO_OPERATION_PERM

Error message

USER_NO_OPERATION_PERM

What it means

Thrown by AlertPluginInstanceServiceImpl.create when the calling user lacks create permission for alert plugin instances (canOperatorPermissions with AuthorizationType.ALERT_PLUGIN_INSTANCE and ALERT_INSTANCE_CREATE fails). Alert plugin instance management is admin/authorized-only.

Source

Thrown at dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java:101

    @Autowired
    private RegistryClient registryClient;

    /**
     * creat alert plugin instance
     *
     * @param loginUser            login user
     * @param pluginDefineId       plugin define id
     * @param instanceName         instance name
     * @param pluginInstanceParams plugin instance params
     */
    @Override
    public AlertPluginInstance create(User loginUser,
                                      int pluginDefineId,
                                      String instanceName,
                                      String pluginInstanceParams) {

        if (!canOperatorPermissions(loginUser, null, AuthorizationType.ALERT_PLUGIN_INSTANCE, ALERT_INSTANCE_CREATE)) {
            throw new ServiceException(Status.USER_NO_OPERATION_PERM);
        }

        AlertPluginInstance alertPluginInstance = new AlertPluginInstance();
        String paramsMapJson = parsePluginParamsMap(pluginInstanceParams);
        alertPluginInstance.setPluginInstanceParams(paramsMapJson);
        alertPluginInstance.setInstanceName(instanceName);
        alertPluginInstance.setPluginDefineId(pluginDefineId);

        if (alertPluginInstanceMapper.existInstanceName(alertPluginInstance.getInstanceName()) == Boolean.TRUE) {
            throw new ServiceException(Status.PLUGIN_INSTANCE_ALREADY_EXISTS);
        }

        int i = alertPluginInstanceMapper.insert(alertPluginInstance);
        if (i > 0) {
            log.info("Create alert plugin instance complete, name:{}", alertPluginInstance.getInstanceName());
            return alertPluginInstance;
        }
        throw new ServiceException(Status.SAVE_ERROR);

View on GitHub (pinned to 02eac45a1b)

Solutions

  1. Use an admin account (or one authorized for alert plugin instances)
  2. Have an admin grant ALERT_PLUGIN_INSTANCE authorization to the user
  3. Verify user permissions before invoking create
Defensive patterns

Strategy: validation

Validate before calling

boolean canCreate = permissionService.hasPermission(loginUser, null, AuthorizationType.ALERT_PLUGIN_INSTANCE, ALERT_INSTANCE_CREATE);
if (!canCreate) throw new IllegalStateException("no permission to create alert plugin instance");

Prevention

When it happens

Trigger: Calling POST /alert-plugin-instances (AlertPluginInstanceService.create) with a loginUser who has no ALERT_PLUGIN_INSTANCE create permission.

Common situations: Non-admin users attempting to configure alert channels via API; automation using a low-privilege token; permission revocations unnoticed by long-running scripts.

Understand the failure class

Background: Permission denied / not authorized / 403 Forbidden: access-control rejections when the caller lacks the required role, grant, or ownership — this error's family across 18 libraries.

Related errors


AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06). Data as JSON: /api/errors/3515ac139b2cc322. Report an issue: GitHub.