apache/dolphinscheduler · error · ServiceException
NO_CURRENT_OPERATING_PERMISSION
NO_CURRENT_OPERATING_PERMISSION
Error message
NO_CURRENT_OPERATING_PERMISSION
What it means
Raised in MonitorServiceImpl.queryWorkflowExecutors when the logged-in user is not an ADMIN_USER. Viewing workflow executors on a master server is an admin-only monitoring capability, so non-admin callers are rejected with NO_CURRENT_OPERATING_PERMISSION.
Source
Thrown at dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/MonitorServiceImpl.java:78
* query database state
*
* @param loginUser login user
* @return data base state
*/
@Override
public List<DatabaseMetrics> queryDatabaseState(User loginUser) {
return Lists.newArrayList(databaseMonitor.getDatabaseMetrics());
}
@Override
public List<Server> listServer(RegistryNodeType nodeType) {
return registryClient.getServerList(nodeType);
}
@Override
public List<WorkflowExecutorDTO> queryWorkflowExecutors(User loginUser, String masterAddress) {
if (!loginUser.getUserType().equals(UserType.ADMIN_USER)) {
throw new ServiceException(Status.NO_CURRENT_OPERATING_PERMISSION);
}
WorkflowExecutorQueryResponse response = Clients
.withService(IWorkflowExecutorQueryClient.class)
.withHost(masterAddress)
.queryWorkflowExecutors(new WorkflowExecutorQueryRequest());
if (!response.isSuccess()) {
throw new ServiceException(response.getMessage());
}
return response.getWorkflowExecutors();
}
@Override
public List<TaskExecutorDTO> queryTaskExecutors(User loginUser, String serverAddress) {
if (!loginUser.getUserType().equals(UserType.ADMIN_USER)) {
throw new ServiceException(Status.NO_CURRENT_OPERATING_PERMISSION);
}
TaskExecutorQueryResponse response = ClientsView on GitHub (pinned to 02eac45a1b)
Solutions
- Log in as / use a token for an admin user (userType=ADMIN_USER).
- If the user should have access, elevate their type in the user management UI (Security > User Management).
- Restrict the integration to admin credentials or add a permission check in the client before calling.
Example fix
// before
List<WorkflowExecutorDTO> list = monitorService.queryWorkflowExecutors(normalUser, masterAddress);
// after
if (normalUser.getUserType() == UserType.ADMIN_USER) {
List<WorkflowExecutorDTO> list = monitorService.queryWorkflowExecutors(normalUser, masterAddress);
} Defensive patterns
Strategy: validation
Validate before calling
if (loginUser.getUserType() != UserType.ADMIN_USER) {
throw new SecurityException("admin privileges required");
} Type guard
boolean isAdmin(User user) {
return user != null && user.getUserType() == UserType.ADMIN_USER;
} Try / catch
try {
List<WorkflowExecutorDTO> list = monitorService.queryWorkflowExecutors(loginUser, masterAddress);
} catch (ServiceException e) {
// NO_CURRENT_OPERATING_PERMISSION - require admin
} Prevention
- Use admin credentials for /monitor endpoints.
- Check userType client-side before calling admin-only APIs.
- Keep automation service accounts as ADMIN_USER only if they need monitor access.
When it happens
Trigger: Calling GET /monitor/master/list-workflow-executor (queryWorkflowExecutors) with a login user whose userType is GENERAL_USER rather than ADMIN_USER.
Common situations: Non-admin operator or automation token hitting the monitor endpoints; role changed on the account; API integration built assuming admin privileges.
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
- response.getMessage()
- no master server available
- Backfill workflow failed: %s
- The workflow instance: %s status is %s, can not pause
- WorkflowInstance: %s pause failed: %s
AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06).
Data as JSON: /api/errors/88980843a2e2d910.
Report an issue: GitHub.