Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@

import lombok.extern.slf4j.Slf4j;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.HandlerMethod;

Expand All @@ -36,20 +39,37 @@
public class ApiExceptionHandler {

@ExceptionHandler(ServiceException.class)
public Result<Object> exceptionHandler(ServiceException e, HandlerMethod hm) {
public ResponseEntity<Result<Object>> exceptionHandler(ServiceException e, HandlerMethod hm) {
log.error("{} Meet a ServiceException: {}", hm.getShortLogMessage(), e.getMessage());
return new Result<>(e.getCode(), e.getMessage());
return ResponseEntity.status(resolveResponseStatus(hm))
.body(new Result<>(e.getCode(), e.getMessage()));
}

@ExceptionHandler(Throwable.class)
public Result<Object> exceptionHandler(Throwable e, HandlerMethod hm) {
public ResponseEntity<Result<Object>> exceptionHandler(Throwable e, HandlerMethod hm) {

Check notice

Code scanning / CodeQL

Confusing overloading of methods Note

Method ApiExceptionHandler.exceptionHandler(..) could be confused with overloaded method
exceptionHandler
, since dispatch depends on static types.
Comment thread
SbloodyS marked this conversation as resolved.
Dismissed
ApiException ce = hm.getMethodAnnotation(ApiException.class);
log.error("Meet an unknown exception: ", e);
Result<Object> body;
if (ce == null) {
return Result.errorWithArgs(Status.INTERNAL_SERVER_ERROR_ARGS, e.getMessage());
body = Result.errorWithArgs(Status.INTERNAL_SERVER_ERROR_ARGS, e.getMessage());
} else {
Status st = ce.value();
body = new Result<>(st.getCode(), st.getMsg() + ":" + e.getMessage());
}
Status st = ce.value();
return new Result<>(st.getCode(), st.getMsg() + ":" + e.getMessage());
return ResponseEntity.status(resolveResponseStatus(hm)).body(body);
}

/**
* Honour the {@link ResponseStatus} declared on the controller method so that error responses
* keep the same HTTP status code as success responses on the same endpoint. Falls back to 200
* OK when the handler method does not declare one.
*/
private static HttpStatus resolveResponseStatus(HandlerMethod hm) {
ResponseStatus status = hm.getMethodAnnotation(ResponseStatus.class);
if (status == null) {
status = hm.getBeanType().getAnnotation(ResponseStatus.class);
}
return status == null ? HttpStatus.OK : status.value();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,8 @@

/**
* force start Task Instance
*
* @param loginUser
* @param queueId
* @return
*/
Map<String, Object> forceStartTaskInstance(User loginUser, int queueId);
void forceStartTaskInstance(User loginUser, int queueId);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'loginUser' is never used.

/**
* execute stream task instance
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,117 +17,63 @@

package org.apache.dolphinscheduler.api.service;

import org.apache.dolphinscheduler.api.utils.PageInfo;
import org.apache.dolphinscheduler.dao.entity.TaskGroup;
import org.apache.dolphinscheduler.dao.entity.User;

import java.util.Map;

public interface TaskGroupService {

/**
* create a Task group
*
* @param loginUser login user
* @param name task group name
* @param description task group description
* @param groupSize task group total size
* @return the result code and msg
*/
Map<String, Object> createTaskGroup(User loginUser, Long projectCode, String name,
String description, int groupSize);
TaskGroup createTaskGroup(User loginUser, Long projectCode, String name, String description, int groupSize);

/**
* update the task group
*
* @param loginUser login user
* @param name task group name
* @param description task group description
* @param groupSize task group total size
* @return the result code and msg
*/
Map<String, Object> updateTaskGroup(User loginUser, int id, String name,
String description, int groupSize);
TaskGroup updateTaskGroup(User loginUser, int id, String name, String description, int groupSize);

/**
* query all task group by user id
*
* @param loginUser login user
* @param pageNo page no
* @param pageSize page size
* @return the result code and msg
*/
Map<String, Object> queryAllTaskGroup(User loginUser, String name, Integer status, int pageNo, int pageSize);
PageInfo<TaskGroup> queryAllTaskGroup(User loginUser, String name, Integer status, int pageNo, int pageSize);

/**
* query all task group by status
*
* @param loginUser login user
* @param pageNo page no
* @param pageSize page size
* @param status status
* @return the result code and msg
*/
Map<String, Object> queryTaskGroupByStatus(User loginUser, int pageNo, int pageSize, int status);
PageInfo<TaskGroup> queryTaskGroupByStatus(User loginUser, int pageNo, int pageSize, int status);

/**
* query all task group by name
*
* @param loginUser login user
* @param pageNo page no
* @param pageSize page size
* @param projectCode project code
* @return the result code and msg
* query all task group by project code
*/
Map<String, Object> queryTaskGroupByProjectCode(User loginUser, int pageNo, int pageSize, Long projectCode);
PageInfo<TaskGroup> queryTaskGroupByProjectCode(User loginUser, int pageNo, int pageSize, Long projectCode);

/**
* query all task group by id
*
* @param loginUser login user
* @param id id
* @return the result code and msg
* query task group by id (returns null if not found)
*/
Map<String, Object> queryTaskGroupById(User loginUser, int id);
TaskGroup queryTaskGroupById(User loginUser, int id);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'loginUser' is never used.

/**
* query
*
* @param loginUser login user
* @param pageNo page no
* @param pageSize page size
* @param userId user id
* @param name name
* @param status status
* @return the result code and msg
* paginated query of task groups
*/
Map<String, Object> doQuery(User loginUser, int pageNo, int pageSize, int userId, String name, Integer status);
PageInfo<TaskGroup> doQuery(User loginUser, int pageNo, int pageSize, int userId, String name, Integer status);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'loginUser' is never used.

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'userId' is never used.

/**
* close a task group
*
* @param loginUser login user
* @param id task group id
* @return the result code and msg
*/
Map<String, Object> closeTaskGroup(User loginUser, int id);
void closeTaskGroup(User loginUser, int id);

/**
* start a task group
*
* @param loginUser login user
* @param id task group id
* @return the result code and msg
*/
Map<String, Object> startTaskGroup(User loginUser, int id);
void startTaskGroup(User loginUser, int id);

/**
* wake a task manually
*
* @param taskId task id
* @return result
*/
Map<String, Object> forceStartTask(User loginUser, int taskId);
void forceStartTask(User loginUser, int taskId);

Map<String, Object> modifyPriority(User loginUser, Integer queueId, Integer priority);
void modifyPriority(User loginUser, Integer queueId, Integer priority);

void deleteTaskGroupByProjectCode(long projectCode);
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
import org.apache.dolphinscheduler.api.validator.workflow.TriggerWorkflowDTO;
import org.apache.dolphinscheduler.api.validator.workflow.TriggerWorkflowDTOValidator;
import org.apache.dolphinscheduler.api.validator.workflow.TriggerWorkflowRequestTransformer;
import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.common.enums.CommandType;
import org.apache.dolphinscheduler.common.enums.Flag;
import org.apache.dolphinscheduler.common.enums.ReleaseState;
Expand Down Expand Up @@ -380,8 +379,7 @@ public WorkflowExecuteResponse executeTask(User loginUser,
}

@Override
public Map<String, Object> forceStartTaskInstance(User loginUser, int queueId) {
Map<String, Object> result = new HashMap<>();
public void forceStartTaskInstance(User loginUser, int queueId) {
TaskGroupQueue taskGroupQueue = taskGroupQueueMapper.selectById(queueId);
// check workflow instance exist
workflowInstanceDao.queryOptionalById(taskGroupQueue.getWorkflowInstanceId())
Expand All @@ -395,9 +393,6 @@ public Map<String, Object> forceStartTaskInstance(User loginUser, int queueId) {
taskGroupQueue.setForceStart(Flag.YES.getCode());
taskGroupQueue.setUpdateTime(new Date());
taskGroupQueueMapper.updateById(taskGroupQueue);

result.put(Constants.STATUS, Status.SUCCESS);
return result;
}

@Override
Expand Down
Loading
Loading