Skip to content

Commit 3989d23

Browse files
committed
fix: Wrap sendToDiscord in try–catch to log notification failures
- Catch RestTemplate/IO errors and log warning - Prevent async exceptions from bubbling up
1 parent 57b713f commit 3989d23

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

src/main/java/org/fontory/fontorybe/common/adapter/outbound/DiscordExceptionLoggingAspect.java

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -156,24 +156,28 @@ private String buildStackTrace(Throwable ex) {
156156
*/
157157
@Async
158158
protected void sendToDiscord(String payloadJson, String fullStackTrace) {
159-
byte[] stackTraceBytes = fullStackTrace.getBytes(StandardCharsets.UTF_8);
160-
ByteArrayResource stackTraceResource = new ByteArrayResource(stackTraceBytes) {
161-
@Override
162-
public String getFilename() {
163-
return "stacktrace.txt";
164-
}
165-
};
159+
try {
160+
byte[] stackTraceBytes = fullStackTrace.getBytes(StandardCharsets.UTF_8);
161+
ByteArrayResource stackTraceResource = new ByteArrayResource(stackTraceBytes) {
162+
@Override
163+
public String getFilename() {
164+
return "stacktrace.txt";
165+
}
166+
};
166167

167-
LinkedMultiValueMap<String, Object> multipartBody = new LinkedMultiValueMap<>();
168-
multipartBody.add("payload_json", payloadJson);
169-
multipartBody.add("file", stackTraceResource);
168+
LinkedMultiValueMap<String, Object> multipartBody = new LinkedMultiValueMap<>();
169+
multipartBody.add("payload_json", payloadJson);
170+
multipartBody.add("file", stackTraceResource);
170171

171-
HttpHeaders headers = new HttpHeaders();
172-
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
172+
HttpHeaders headers = new HttpHeaders();
173+
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
173174

174-
HttpEntity<MultiValueMap<String, Object>> requestEntity =
175-
new HttpEntity<>(multipartBody, headers);
175+
HttpEntity<MultiValueMap<String, Object>> requestEntity =
176+
new HttpEntity<>(multipartBody, headers);
176177

177-
restTemplate.postForEntity(discordWebhookUrl, requestEntity, String.class);
178+
restTemplate.postForEntity(discordWebhookUrl, requestEntity, String.class);
179+
} catch (Exception e) {
180+
log.warn("Exception occured while sending stacktrace to Discord: {}", e);
181+
}
178182
}
179183
}

0 commit comments

Comments
 (0)