From 3920e81f1c44b24258a22b1265f88624d10394e7 Mon Sep 17 00:00:00 2001 From: HenrikJannsen Date: Sat, 10 Dec 2022 19:26:45 -0500 Subject: [PATCH] Add try catch at send (to cover case when thread pool is exhausted) Signed-off-by: HenrikJannsen --- .../seednode/SeedNodeReportingService.java | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/seednode/src/main/java/bisq/seednode/SeedNodeReportingService.java b/seednode/src/main/java/bisq/seednode/SeedNodeReportingService.java index b950b9c75b..9fc2bc8b20 100644 --- a/seednode/src/main/java/bisq/seednode/SeedNodeReportingService.java +++ b/seednode/src/main/java/bisq/seednode/SeedNodeReportingService.java @@ -245,26 +245,30 @@ public class SeedNodeReportingService { } private void sendReportingItems(ReportingItems reportingItems) { - CompletableFuture.runAsync(() -> { - log.info("Send report to monitor server: {}", reportingItems.toString()); - // We send the data as hex encoded protobuf data. We do not use the envelope as it is not part of the p2p system. - byte[] protoMessageAsBytes = reportingItems.toProtoMessageAsBytes(); - try { - HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(seedNodeReportingServerUrl)) - .POST(HttpRequest.BodyPublishers.ofByteArray(protoMessageAsBytes)) - .header("User-Agent", getMyAddress()) - .build(); - HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); - if (response.statusCode() != 200) { - log.error("Response error message: {}", response); + try { + CompletableFuture.runAsync(() -> { + log.info("Send report to monitor server: {}", reportingItems.toString()); + // We send the data as hex encoded protobuf data. We do not use the envelope as it is not part of the p2p system. + byte[] protoMessageAsBytes = reportingItems.toProtoMessageAsBytes(); + try { + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(seedNodeReportingServerUrl)) + .POST(HttpRequest.BodyPublishers.ofByteArray(protoMessageAsBytes)) + .header("User-Agent", getMyAddress()) + .build(); + HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); + if (response.statusCode() != 200) { + log.error("Response error message: {}", response); + } + } catch (IOException e) { + log.warn("IOException at sending reporting. {}", e.getMessage()); + } catch (InterruptedException e) { + throw new RuntimeException(e); } - } catch (IOException e) { - log.warn("IOException at sending reporting. {}", e.getMessage()); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - }, executor); + }, executor); + } catch (Throwable t) { + log.error("Did not send reportingItems {} because of exception {}", reportingItems, t.toString()); + } } private String getMyAddress() {