Skip to content

MasterSchedulerThread bug #1522

@Technoboy-

Description

@Technoboy-

MasterSchedulerThread should not be sleep after handle command

if(OSUtils.checkResource(masterConfig.getMasterMaxCpuloadAvg(), masterConfig.getMasterReservedMemory())){
                    if (zkMasterClient.getZkClient().getState() == CuratorFrameworkState.STARTED) {

                        // create distributed lock with the root node path of the lock space as /dolphinscheduler/lock/masters
                        String znodeLock = zkMasterClient.getMasterLockPath();

                        mutex = new InterProcessMutex(zkMasterClient.getZkClient(), znodeLock);
                        mutex.acquire();

                        ThreadPoolExecutor poolExecutor = (ThreadPoolExecutor) masterExecService;
                        int activeCount = poolExecutor.getActiveCount();
                        // make sure to scan and delete command  table in one transaction
                        Command command = processDao.findOneCommand();
                        if (command != null) {
                            logger.info(String.format("find one command: id: %d, type: %s", command.getId(),command.getCommandType().toString()));

                            try{
                                processInstance = processDao.handleCommand(logger, OSUtils.getHost(), this.masterExecThreadNum - activeCount, command);
                                if (processInstance != null) {
                                    logger.info("start master exec thread , split DAG ...");
                                    masterExecService.execute(new MasterExecThread(processInstance,processDao));
                                }
                            }catch (Exception e){
                                logger.error("scan command error ", e);
                                processDao.moveToErrorCommand(command, e.toString());
                            }
                        }
                    }
                }

                // should not sleep here
                Thread.sleep(Constants.SLEEP_TIME_MILLIS);

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions