Browse Source

Merge pull request #1700 from fordeal-smalldata/fix-task-zknode-miss

Fixed tasks_queue and tasks_kill did not exist in zookeeper #1696
pull/2/head
Tboy 5 years ago committed by GitHub
parent
commit
672a48255a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 35
      dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/queue/TaskQueueZkImpl.java

35
dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/queue/TaskQueueZkImpl.java

@ -37,8 +37,27 @@ public class TaskQueueZkImpl implements ITaskQueue {
private static final Logger logger = LoggerFactory.getLogger(TaskQueueZkImpl.class); private static final Logger logger = LoggerFactory.getLogger(TaskQueueZkImpl.class);
private final ZookeeperOperator zookeeperOperator;
@Autowired @Autowired
private ZookeeperOperator zookeeperOperator; public TaskQueueZkImpl(ZookeeperOperator zookeeperOperator) {
this.zookeeperOperator = zookeeperOperator;
try {
String tasksQueuePath = getTasksPath(Constants.DOLPHINSCHEDULER_TASKS_QUEUE);
String tasksKillPath = getTasksPath(Constants.DOLPHINSCHEDULER_TASKS_KILL);
for (String key : new String[]{tasksQueuePath,tasksKillPath}){
if (!zookeeperOperator.isExisted(key)){
zookeeperOperator.persist(key, "");
logger.info("create tasks queue parent node success : {}", key);
}
}
} catch (Exception e) {
logger.error("create tasks queue parent node failure", e);
}
}
/** /**
* get all tasks from tasks queue * get all tasks from tasks queue
@ -321,20 +340,20 @@ public class TaskQueueZkImpl implements ITaskQueue {
public void delete(){ public void delete(){
try { try {
String tasksQueuePath = getTasksPath(Constants.DOLPHINSCHEDULER_TASKS_QUEUE); String tasksQueuePath = getTasksPath(Constants.DOLPHINSCHEDULER_TASKS_QUEUE);
String tasksCancelPath = getTasksPath(Constants.DOLPHINSCHEDULER_TASKS_KILL); String tasksKillPath = getTasksPath(Constants.DOLPHINSCHEDULER_TASKS_KILL);
for(String taskQueuePath : new String[]{tasksQueuePath,tasksCancelPath}){ for (String key : new String[]{tasksQueuePath,tasksKillPath}){
if(zookeeperOperator.isExisted(taskQueuePath)){ if (zookeeperOperator.isExisted(key)){
List<String> list = zookeeperOperator.getChildrenKeys(taskQueuePath); List<String> list = zookeeperOperator.getChildrenKeys(key);
for (String task : list) { for (String task : list) {
zookeeperOperator.remove(taskQueuePath + Constants.SINGLE_SLASH + task); zookeeperOperator.remove(key + Constants.SINGLE_SLASH + task);
logger.info("delete task from tasks queue : {}/{} ",taskQueuePath,task); logger.info("delete task from tasks queue : {}/{} ", key, task);
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
logger.error("delete all tasks in tasks queue failure",e); logger.error("delete all tasks in tasks queue failure", e);
} }
} }

Loading…
Cancel
Save