Search in sources :

Example 1 with ExecutionContext

use of org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext in project dolphinscheduler by apache.

the class MasterTaskExecThread method cancelTaskInstance.

/**
 *  task instance add queue , waiting worker to kill
 */
private void cancelTaskInstance() throws Exception {
    if (alreadyKilled) {
        return;
    }
    alreadyKilled = true;
    taskInstance = processService.findTaskInstanceById(taskInstance.getId());
    if (StringUtils.isBlank(taskInstance.getHost())) {
        taskInstance.setState(ExecutionStatus.KILL);
        taskInstance.setEndTime(new Date());
        processService.updateTaskInstance(taskInstance);
        return;
    }
    TaskKillRequestCommand killCommand = new TaskKillRequestCommand();
    killCommand.setTaskInstanceId(taskInstance.getId());
    ExecutionContext executionContext = new ExecutionContext(killCommand.convert2Command(), ExecutorType.WORKER);
    Host host = Host.of(taskInstance.getHost());
    executionContext.setHost(host);
    nettyExecutorManager.executeDirectly(executionContext);
    logger.info("master kill taskInstance name :{} taskInstance id:{}", taskInstance.getName(), taskInstance.getId());
}
Also used : TaskKillRequestCommand(org.apache.dolphinscheduler.remote.command.TaskKillRequestCommand) ExecutionContext(org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext) Host(org.apache.dolphinscheduler.remote.utils.Host) Date(java.util.Date)

Example 2 with ExecutionContext

use of org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext in project dolphinscheduler by apache.

the class ExecutionContextTestUtils method getExecutionContext.

public static ExecutionContext getExecutionContext(int port) {
    TaskInstance taskInstance = Mockito.mock(TaskInstance.class);
    ProcessDefinition processDefinition = Mockito.mock(ProcessDefinition.class);
    ProcessInstance processInstance = new ProcessInstance();
    processInstance.setCommandType(CommandType.COMPLEMENT_DATA);
    taskInstance.setProcessInstance(processInstance);
    TaskExecutionContext context = TaskExecutionContextBuilder.get().buildTaskInstanceRelatedInfo(taskInstance).buildProcessInstanceRelatedInfo(processInstance).buildProcessDefinitionRelatedInfo(processDefinition).create();
    ExecutionContext executionContext = new ExecutionContext(context.toCommand(), ExecutorType.WORKER);
    executionContext.setHost(Host.of(OSUtils.getHost() + ":" + port));
    return executionContext;
}
Also used : TaskInstance(org.apache.dolphinscheduler.dao.entity.TaskInstance) TaskExecutionContext(org.apache.dolphinscheduler.server.entity.TaskExecutionContext) ExecutionContext(org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext) ProcessDefinition(org.apache.dolphinscheduler.dao.entity.ProcessDefinition) ProcessInstance(org.apache.dolphinscheduler.dao.entity.ProcessInstance) TaskExecutionContext(org.apache.dolphinscheduler.server.entity.TaskExecutionContext)

Example 3 with ExecutionContext

use of org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext in project dolphinscheduler by apache.

the class NettyExecutorManagerTest method testExecute.

@Test
public void testExecute() throws ExecuteException {
    final NettyServerConfig serverConfig = new NettyServerConfig();
    serverConfig.setListenPort(30000);
    NettyRemotingServer nettyRemotingServer = new NettyRemotingServer(serverConfig);
    nettyRemotingServer.registerProcessor(org.apache.dolphinscheduler.remote.command.CommandType.TASK_EXECUTE_REQUEST, new TaskExecuteProcessor());
    nettyRemotingServer.start();
    TaskInstance taskInstance = Mockito.mock(TaskInstance.class);
    ProcessDefinition processDefinition = Mockito.mock(ProcessDefinition.class);
    ProcessInstance processInstance = new ProcessInstance();
    processInstance.setCommandType(CommandType.COMPLEMENT_DATA);
    taskInstance.setProcessInstance(processInstance);
    TaskExecutionContext context = TaskExecutionContextBuilder.get().buildTaskInstanceRelatedInfo(taskInstance).buildProcessInstanceRelatedInfo(processInstance).buildProcessDefinitionRelatedInfo(processDefinition).create();
    ExecutionContext executionContext = new ExecutionContext(context.toCommand(), ExecutorType.WORKER);
    executionContext.setHost(Host.of(OSUtils.getHost() + ":" + serverConfig.getListenPort()));
    Boolean execute = nettyExecutorManager.execute(executionContext);
    Assert.assertTrue(execute);
    nettyRemotingServer.close();
}
Also used : TaskInstance(org.apache.dolphinscheduler.dao.entity.TaskInstance) NettyRemotingServer(org.apache.dolphinscheduler.remote.NettyRemotingServer) TaskExecutionContext(org.apache.dolphinscheduler.server.entity.TaskExecutionContext) ExecutionContext(org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext) TaskExecuteProcessor(org.apache.dolphinscheduler.server.worker.processor.TaskExecuteProcessor) ProcessDefinition(org.apache.dolphinscheduler.dao.entity.ProcessDefinition) ProcessInstance(org.apache.dolphinscheduler.dao.entity.ProcessInstance) TaskExecutionContext(org.apache.dolphinscheduler.server.entity.TaskExecutionContext) NettyServerConfig(org.apache.dolphinscheduler.remote.config.NettyServerConfig) Test(org.junit.Test)

Example 4 with ExecutionContext

use of org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext in project dolphinscheduler by apache.

the class ExecutorDispatcherTest method testDispatchWithException.

@Test(expected = ExecuteException.class)
public void testDispatchWithException() throws ExecuteException {
    ExecutionContext executionContext = ExecutionContextTestUtils.getExecutionContext(10000);
    executorDispatcher.dispatch(executionContext);
}
Also used : ExecutionContext(org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext) Test(org.junit.Test)

Example 5 with ExecutionContext

use of org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext in project dolphinscheduler by apache.

the class ExecutorDispatcherTest method testDispatch.

@Test
public void testDispatch() throws ExecuteException {
    int port = 30000;
    final NettyServerConfig serverConfig = new NettyServerConfig();
    serverConfig.setListenPort(port);
    NettyRemotingServer nettyRemotingServer = new NettyRemotingServer(serverConfig);
    nettyRemotingServer.registerProcessor(org.apache.dolphinscheduler.remote.command.CommandType.TASK_EXECUTE_REQUEST, Mockito.mock(TaskExecuteProcessor.class));
    nettyRemotingServer.start();
    // 
    workerConfig.setListenPort(port);
    workerRegistry.registry();
    ExecutionContext executionContext = ExecutionContextTestUtils.getExecutionContext(port);
    executorDispatcher.dispatch(executionContext);
}
Also used : NettyRemotingServer(org.apache.dolphinscheduler.remote.NettyRemotingServer) ExecutionContext(org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext) TaskExecuteProcessor(org.apache.dolphinscheduler.server.worker.processor.TaskExecuteProcessor) NettyServerConfig(org.apache.dolphinscheduler.remote.config.NettyServerConfig) Test(org.junit.Test)

Aggregations

ExecutionContext (org.apache.dolphinscheduler.server.master.dispatch.context.ExecutionContext)9 Test (org.junit.Test)6 ProcessDefinition (org.apache.dolphinscheduler.dao.entity.ProcessDefinition)3 ProcessInstance (org.apache.dolphinscheduler.dao.entity.ProcessInstance)3 TaskInstance (org.apache.dolphinscheduler.dao.entity.TaskInstance)3 Host (org.apache.dolphinscheduler.remote.utils.Host)3 TaskExecutionContext (org.apache.dolphinscheduler.server.entity.TaskExecutionContext)3 NettyRemotingServer (org.apache.dolphinscheduler.remote.NettyRemotingServer)2 NettyServerConfig (org.apache.dolphinscheduler.remote.config.NettyServerConfig)2 TaskExecuteProcessor (org.apache.dolphinscheduler.server.worker.processor.TaskExecuteProcessor)2 Date (java.util.Date)1 TaskKillRequestCommand (org.apache.dolphinscheduler.remote.command.TaskKillRequestCommand)1 ExecuteException (org.apache.dolphinscheduler.server.master.dispatch.exceptions.ExecuteException)1