Skip to content

Commit 36047d3

Browse files
committed
Improve rewrite error handling
1 parent 7acadce commit 36047d3

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## Unreleased
44

55
- Fix token renew when using rewrite feature.
6+
- Improve rewrite error handling.
67

78
## 0.77.0
89

src/eca/features/rewrite.clj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@
3535
:rewrite-id id}
3636
_ (f.login/maybe-renew-auth-token!
3737
{:provider provider
38-
:on-error (fn [error-msg] (logger/error logger-tag (format "Auth token renew failed: %s" error-msg)))}
38+
:on-error (fn [error-msg]
39+
(logger/error logger-tag (format "Auth token renew failed: %s" error-msg))
40+
(throw (ex-info error-msg {:error-response {:message error-msg}})))}
3941
ctx)]
4042
(future* config
4143
(llm-api/sync-or-async-prompt!

src/eca/handlers.clj

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,19 @@
162162
(metrics/task metrics :eca/completion-inline
163163
(f.completion/complete params db* config messenger metrics)))
164164

165+
(defmacro handle-expected-errors
166+
"Executes body, catching any ExceptionInfo with :error-response.
167+
If caught, return {:error error-response}"
168+
[& body]
169+
`(try
170+
~@body
171+
(catch clojure.lang.ExceptionInfo e#
172+
(if-let [error-response# (:error-response (ex-data e#))]
173+
{:error error-response#}
174+
(throw e#)))))
175+
165176
(defn rewrite-prompt
166177
[{:keys [db* config metrics messenger]} params]
167178
(metrics/task metrics :eca/rewrite-prompt
168-
(f.rewrite/prompt params db* config messenger metrics)))
179+
(handle-expected-errors
180+
(f.rewrite/prompt params db* config messenger metrics))))

0 commit comments

Comments
 (0)