/** * 获取运行在本作业服务器的被失效转移的序列号. * * @return 运行在本作业服务器的被失效转移的序列号 */ public List<Integer> getLocalHostTakeOffItems() { List<Integer> shardingItems = shardingService.getLocalHostShardingItems(); List<Integer> result = new ArrayList<>(shardingItems.size()); for (int each : shardingItems) { if (jobNodeStorage.isJobNodeExisted(FailoverNode.getExecutionFailoverNode(each))) { result.add(each); } } return result; }
/** * 获取运行在本作业服务器的失效转移序列号. * * @return 运行在本作业服务器的失效转移序列号 */ public List<Integer> getLocalHostFailoverItems() { List<String> items = jobNodeStorage.getJobNodeChildrenKeys(ExecutionNode.ROOT); List<Integer> result = new ArrayList<>(items.size()); String ip = localHostService.getIp(); for (String each : items) { int item = Integer.parseInt(each); String node = FailoverNode.getExecutionFailoverNode(item); if (jobNodeStorage.isJobNodeExisted(node) && ip.equals(jobNodeStorage.getJobNodeDataDirectly(node))) { result.add(item); } } Collections.sort(result); return result; }
private boolean isFailoverAssigned(final Integer item) { return jobNodeStorage.isJobNodeExisted(FailoverNode.getExecutionFailoverNode(item)); }
/** * 设置失效的分片项标记. * * @param item 崩溃的作业项 */ public void setCrashedFailoverFlag(final int item) { if (!isFailoverAssigned(item)) { jobNodeStorage.createJobNodeIfNeeded(FailoverNode.getItemsNode(item)); } }
/** 删除作业失效转移信息. */ public void removeFailoverInfo() { for (String each : jobNodeStorage.getJobNodeChildrenKeys(ExecutionNode.ROOT)) { jobNodeStorage.removeJobNodeIfExisted( FailoverNode.getExecutionFailoverNode(Integer.parseInt(each))); } }
/** * 更新执行完毕失效转移的分片项状态. * * @param items 执行完毕失效转移的分片项列表 */ public void updateFailoverComplete(final List<Integer> items) { for (int each : items) { jobNodeStorage.removeJobNodeIfExisted(FailoverNode.getExecutionFailoverNode(each)); } }