Skip to content

Commit b2a14aa

Browse files
committedJul 7, 2023
better error handling
1 parent e655b74 commit b2a14aa

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed
 

‎src/render.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ impl<W: std::io::Write> HeaderContext<W> {
9090
let remove = obj.get("remove");
9191
if remove == Some(&json!(true)) || remove == Some(&json!(1)) {
9292
self.response.cookie(cookie);
93+
log::trace!("Removing cookie {}", name);
9394
return Ok(self);
9495
}
9596

@@ -116,11 +117,15 @@ impl<W: std::io::Write> HeaderContext<W> {
116117
actix_web::cookie::time::OffsetDateTime::from_unix_timestamp(expires)?,
117118
));
118119
}
120+
log::trace!("Setting cookie {}", cookie);
119121
self.response.cookie(cookie);
120122
Ok(self)
121123
}
124+
122125
async fn start_body(self, data: JsonValue) -> anyhow::Result<PageContext<W>> {
123-
let renderer = RenderContext::new(self.app_state, self.writer, data).await?;
126+
let renderer = RenderContext::new(self.app_state, self.writer, data)
127+
.await
128+
.with_context(|| "Failed to create a render context from the header context.")?;
124129
let http_response = self.response;
125130
Ok(PageContext::Body {
126131
renderer,
@@ -129,7 +134,9 @@ impl<W: std::io::Write> HeaderContext<W> {
129134
}
130135

131136
pub async fn close(mut self) -> anyhow::Result<(RenderContext<W>, HttpResponse)> {
132-
let renderer = RenderContext::new(self.app_state, self.writer, JsonValue::Null).await?;
137+
let renderer = RenderContext::new(self.app_state, self.writer, JsonValue::Null)
138+
.await
139+
.with_context(|| "Failed to create a render context when closing the header context.")?;
133140
Ok((renderer, self.response.finish()))
134141
}
135142
}

‎src/webserver/http.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,10 @@ async fn build_response_header_and_stream<S: Stream<Item = DbItem>>(
152152
while let Some(item) = stream.next().await {
153153
match item {
154154
DbItem::Row(data) => {
155-
match head_context
156-
.handle_row(data)
157-
.await
158-
.map_err(ErrorInternalServerError)?
159-
{
155+
match head_context.handle_row(data).await.map_err(|e| {
156+
log::error!("Error while handling header context data: {e}");
157+
ErrorInternalServerError(e)
158+
})? {
160159
PageContext::Header(h) => {
161160
head_context = h;
162161
}
@@ -187,10 +186,10 @@ async fn build_response_header_and_stream<S: Stream<Item = DbItem>>(
187186
}
188187
}
189188
log::debug!("No SQL statements left to execute for the body of the response");
190-
let (renderer, http_response) = head_context
191-
.close()
192-
.await
193-
.map_err(ErrorInternalServerError)?;
189+
let (renderer, http_response) = head_context.close().await.map_err(|e| {
190+
log::error!("Error while closing header context: {e}");
191+
ErrorInternalServerError(e)
192+
})?;
194193
Ok(ResponseWithWriter {
195194
http_response,
196195
renderer,
@@ -230,10 +229,11 @@ async fn render_sql(
230229
}) => {
231230
resp_send
232231
.send(http_response)
233-
.unwrap_or_else(|_| log::error!("could not send headers"));
232+
.unwrap_or_else(|e| log::error!("could not send headers {e:?}"));
234233
stream_response(database_entries_stream, renderer).await;
235234
}
236235
Err(e) => {
236+
log::error!("An error occured while building response headers: {e}");
237237
let http_response = ErrorInternalServerError(e).into();
238238
resp_send
239239
.send(http_response)

0 commit comments

Comments
 (0)