package com.alibaba.doris.admin.service.failover.migrate;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.doris.admin.dataobject.PhysicalNodeDO;
import com.alibaba.doris.admin.monitor.MonitorEnum;
import com.alibaba.doris.admin.monitor.SystemLogMonitor;
import com.alibaba.doris.admin.service.common.migrate.command.MigrateCommand;
import com.alibaba.doris.admin.service.common.node.NodesManager;
import com.alibaba.doris.common.MigrateTypeEnum;
import com.alibaba.doris.common.MonitorWarnConstants;
import com.alibaba.doris.common.NodeRouteStatus;
/**
* 临时失败恢复迁移调度线程
*
* @author frank
*/
public class TempFailoverMigrateThread extends FailoverMigrateThread {
// private static final Log log = LogFactory
// .getLog(TempFailoverMigrateThread.class);
private List<PhysicalNodeDO> tempPhysicalNodeIdList = new ArrayList<PhysicalNodeDO>();
public TempFailoverMigrateThread(String failPhysicalNodeId) {
super(failPhysicalNodeId);
tempPhysicalNodeIdList = NodesManager.getInstance().getAllTempNodeList();
this.migrateKey = failPhysicalNodeIdList.get(0);
this.start();
}
protected boolean sendMigerateCommand() {
return processSendCommand(tempPhysicalNodeIdList, MigrateTypeEnum.TEMP_FAILOVER);
}
protected void sendMigerateFinishCommand() {
for (int i = 0; i < tempPhysicalNodeIdList.size(); i++) {
PhysicalNodeDO tempNode = tempPhysicalNodeIdList.get(i);
SystemLogMonitor.info(MonitorEnum.MIGRATION, MonitorWarnConstants.NODE_TEMP_FAILURE_RESOLVED
+ tempNode.getPhysicalId());
MigrateCommand.finishMigerate(tempNode.getPhysicalId(), failPhysicalNodeIdList, commandParamList.get(i),
MigrateTypeEnum.TEMP_FAILOVER);
}
}
public void notifyError() {
// TODO Auto-generated method stub
}
protected void updateStoreNode() {
PhysicalNodeDO node = NodesManager.getInstance().getNode(failPhysicalNodeIdList.get(0));
node.setStatus(NodeRouteStatus.OK.getValue());
nodeService.updatePhysicalNode(node);
}
}