From beeacd3e3f48f98aa801bfdf26d9ff2895c81c3a Mon Sep 17 00:00:00 2001 From: Kevin Hu Date: Wed, 11 Dec 2024 11:44:59 +0800 Subject: [PATCH] Fix exec sql exception issue. (#3982) ### What problem does this PR solve? #3978 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- agent/canvas.py | 23 ++++++++++------------- agent/component/exesql.py | 2 +- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/agent/canvas.py b/agent/canvas.py index 2f545f4ec38..8e9da797158 100644 --- a/agent/canvas.py +++ b/agent/canvas.py @@ -206,7 +206,12 @@ def prepare2run(cpns): waiting.append(c) continue yield "*'{}'* is running...🕞".format(self.get_compnent_name(c)) - ans = cpn.run(self.history, **kwargs) + try: + ans = cpn.run(self.history, **kwargs) + except Exception as e: + logging.exception(f"Canvas.run got exception: {e}") + self.path[-1].append(c) + raise e self.path[-1].append(c) ran += 1 @@ -228,20 +233,12 @@ def prepare2run(cpns): switch_out = cpn["obj"].output()[1].iloc[0, 0] assert switch_out in self.components, \ "{}'s output: {} not valid.".format(cpn_id, switch_out) - try: - for m in prepare2run([switch_out]): - yield {"content": m, "running_status": True} - except Exception as e: - logging.exception("Canvas.run got exception") - raise e + for m in prepare2run([switch_out]): + yield {"content": m, "running_status": True} continue - try: - for m in prepare2run(cpn["downstream"]): - yield {"content": m, "running_status": True} - except Exception as e: - logging.exception("Canvas.run got exception") - raise e + for m in prepare2run(cpn["downstream"]): + yield {"content": m, "running_status": True} if ran >= len(self.path[-1]) and waiting: without_dependent_checking = waiting diff --git a/agent/component/exesql.py b/agent/component/exesql.py index e73a393ed04..673e44798c2 100644 --- a/agent/component/exesql.py +++ b/agent/component/exesql.py @@ -64,7 +64,7 @@ def _run(self, history, **kwargs): self._loop += 1 ans = self.get_input() - ans = "".join(ans["content"]) if "content" in ans else "" + ans = "".join([str(a) for a in ans["content"]]) if "content" in ans else "" ans = re.sub(r'^.*?SELECT ', 'SELECT ', repr(ans), flags=re.IGNORECASE) ans = re.sub(r';.*?SELECT ', '; SELECT ', ans, flags=re.IGNORECASE) ans = re.sub(r';[^;]*$', r';', ans)