diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotApi.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotApi.java index 97d017fab7..4e2e4105b1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotApi.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/MicrobotApi.java @@ -127,12 +127,14 @@ public void onFailure(Call call, IOException e) @Override public void onResponse(Call call, Response response) { - if (!response.isSuccessful()) + boolean successful = response.isSuccessful(); + int code = response.code(); + response.close(); + if (!successful) { - log.debug("Error telemetry upload rejected: HTTP {}", response.code()); + log.debug("Error telemetry upload rejected: HTTP {}", code); onRejected.run(); } - response.close(); } }); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/diagnostics/ScriptErrorReporter.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/diagnostics/ScriptErrorReporter.java index ad4424a41d..d9a37b78c2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/diagnostics/ScriptErrorReporter.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/diagnostics/ScriptErrorReporter.java @@ -153,7 +153,15 @@ private void send() payload.addProperty("osName", System.getProperty("os.name")); payload.addProperty("osArch", System.getProperty("os.arch")); payload.add("errors", errors); - microbotApi.submitErrors(payload, () -> requeue(errors)); + try + { + microbotApi.submitErrors(payload, () -> requeue(errors)); + } + catch (RuntimeException e) + { + requeue(errors); + throw e; + } } public void rememberPlayerName(String name) diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/microbot/diagnostics/ScriptErrorReporterTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/microbot/diagnostics/ScriptErrorReporterTest.java index 4e2b75375a..f524a8d64b 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/microbot/diagnostics/ScriptErrorReporterTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/microbot/diagnostics/ScriptErrorReporterTest.java @@ -193,6 +193,15 @@ public void requeuesRejectedBatch() assertEquals(2, captor.getValue().getAsJsonArray("errors").get(0).getAsJsonObject().get("count").getAsInt()); } + @Test + public void requeuesBatchWhenSubmitThrows() + { + org.mockito.Mockito.doThrow(new IllegalArgumentException("bad url")).when(api).submitErrors(any(), any()); + log(Level.ERROR, "loop failed", boom()); + reporter.flush(); + assertEquals(1, reporter.pendingCount()); + } + @Test public void groupsMessagesThatOnlyDifferInNumbers() {