Skip to content

Commit b35bf88

Browse files
authored
Track more errors in query engine (#582)
1 parent b5d9596 commit b35bf88

4 files changed

Lines changed: 26 additions & 9 deletions

File tree

pgdog/src/frontend/client/query_engine/connect.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,16 @@ impl QueryEngine {
6161

6262
if err.no_server() {
6363
error!("{} [{:?}]", err, context.stream.peer_addr());
64+
65+
let error = ErrorResponse::from_err(&err);
66+
67+
self.hooks.on_engine_error(context, &error)?;
68+
6469
let bytes_sent = context
6570
.stream
66-
.error(ErrorResponse::from_err(&err), context.in_transaction())
71+
.error(error, context.in_transaction())
6772
.await?;
73+
6874
self.stats.sent(bytes_sent);
6975
self.backend.disconnect();
7076
self.router.reset();

pgdog/src/frontend/client/query_engine/hooks/mod.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,12 @@ impl QueryEngineHooks {
4545
) -> Result<(), Error> {
4646
Ok(())
4747
}
48+
49+
pub(super) fn on_engine_error(
50+
&mut self,
51+
context: &mut QueryEngineContext<'_>,
52+
error: &ErrorResponse,
53+
) -> Result<(), Error> {
54+
Ok(())
55+
}
4856
}

pgdog/src/frontend/client/query_engine/query.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -365,12 +365,13 @@ impl QueryEngine {
365365
&& context.client_request.executable()
366366
&& !route.rollback_savepoint()
367367
{
368+
let error = ErrorResponse::in_failed_transaction();
369+
370+
self.hooks.on_engine_error(context, &error)?;
371+
368372
let bytes_sent = context
369373
.stream
370-
.error(
371-
ErrorResponse::in_failed_transaction(),
372-
context.in_transaction(),
373-
)
374+
.error(error, context.in_transaction())
374375
.await?;
375376
self.stats.sent(bytes_sent);
376377

pgdog/src/frontend/client/query_engine/route_query.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ impl QueryEngine {
3131
}
3232
Err(err) => {
3333
error!("{:?} [{:?}]", err, context.stream.peer_addr());
34+
35+
let error = ErrorResponse::syntax(err.to_string().as_str());
36+
37+
self.hooks.on_engine_error(context, &error)?;
38+
3439
let bytes_sent = context
3540
.stream
36-
.error(
37-
ErrorResponse::syntax(err.to_string().as_str()),
38-
context.in_transaction(),
39-
)
41+
.error(error, context.in_transaction())
4042
.await?;
4143
self.stats.sent(bytes_sent);
4244
return Ok(false);

0 commit comments

Comments
 (0)