Skip to content

[Bug]: GraphInterrupt是框架用来实现断点的正常控制流信号,不是真正的错误,但这里没有单独 catch,直接被 catch (Exception e) 当成错误打印了 #120

Description

Checklist

  • 我已经搜索过相关问题,但没有得到预期的帮助。
  • 最新版本中该错误尚未修复。
  • 请注意,如果您提交的Bug描述缺少相应的环境信息和最小可复现的demo,我们将很难复现和解决该问题,从而降低收到反馈的可能性,甚至该问题将被关闭。

🐞 问题详细描述

问题代码

agent-core-java-main/src/main/java/com/openjiuwen/core/graph/pregel/PregelLoop.java:90-101

public boolean runStep() throws Exception {
try {
return doRunStep();
} catch (CancellationException e) {
throw e;
} catch (Exception e) { // ← GraphInterrupt 落到这里
logger.error("Failed to run graph super-step[{}], ns={}, sessionId={}",
step, config.getNs(), config.getSessionId(), e); // ← 打印 ERROR
saveStateOnError(e);
throw e; // ← 然后重新抛出,被 Pregel.run() 以 INFO 接住
}
}

GraphInterrupt 是框架用来实现断点/人机交互的正常控制流信号,不是真正的错误,但这里没有单独 catch,直接被 catch (Exception e) 当成错误打印了。Pregel.run() 后面又用 INFO
打了一遍,所以你会看到同一次断点产生两条日志:先 ERROR 后 INFO。

Logger 名字是 graph(Loggers.GRAPH = LogManager.getLogger("graph"))。

详细的环境信息描述

这个是core的功能bug,所有环境都会出现

其他辅助信息

版本信息

感谢您的贡献 🎉!

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions