refactor(yarn-query): 修复 yarn 查询子队列不全

This commit is contained in:
2023-06-01 10:29:33 +08:00
parent 9d2c7995e9
commit 15eb84e993

View File

@@ -4,6 +4,8 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.lanyuanxiaoyao.service.configuration.entity.yarn.YarnQueue; import com.lanyuanxiaoyao.service.configuration.entity.yarn.YarnQueue;
import java.util.LinkedList;
import java.util.Queue;
import org.eclipse.collections.api.block.function.Function; import org.eclipse.collections.api.block.function.Function;
import org.eclipse.collections.api.factory.Lists; import org.eclipse.collections.api.factory.Lists;
import org.eclipse.collections.api.list.ImmutableList; import org.eclipse.collections.api.list.ImmutableList;
@@ -23,10 +25,22 @@ public interface QueueService {
default Function<YarnQueue, Iterable<YarnQueue>> flatChildren() { default Function<YarnQueue, Iterable<YarnQueue>> flatChildren() {
return queue -> { return queue -> {
MutableList<YarnQueue> children = Lists.mutable.of(queue); MutableList<YarnQueue> children = Lists.mutable.of(queue);
if (ObjectUtil.isNotNull(queue.getQueues())) { Queue<YarnQueue> handleQueue = new LinkedList<>();
queue.getQueues().getQueue() handleQueue.add(queue);
.tap(child -> child.setQueueName(StrUtil.format("{}.{}", queue.getQueueName(), child.getQueueName())))
.forEach(children::add); YarnQueue parent = handleQueue.poll();
while (parent != null) {
try {
if (ObjectUtil.isNotNull(parent.getQueues())) {
for (YarnQueue child : queue.getQueues().getQueue()) {
child.setQueueName(StrUtil.format("{}.{}", parent.getQueueName(), child.getQueueName()));
children.add(child);
handleQueue.add(child);
}
}
} finally {
parent = handleQueue.poll();
}
} }
return children; return children;
}; };