From 2c0518b380ddb1933cb16d51bb943965da834ed1 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Thu, 15 Sep 2016 15:55:41 +0200 Subject: [PATCH] SONAR-8035 Do not display error in logs when web request is aborted --- .../java/org/sonar/server/ws/WebServiceEngine.java | 2 +- .../src/main/java/org/sonar/server/ws/WsUtils.java | 4 +--- .../org/sonar/server/ws/WebServiceEngineTest.java | 2 +- .../test/java/org/sonar/server/ws/WsUtilsTest.java | 14 +++++++------- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/ws/WebServiceEngine.java b/server/sonar-server/src/main/java/org/sonar/server/ws/WebServiceEngine.java index a203464e20c..3f9a1f3d81a 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ws/WebServiceEngine.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ws/WebServiceEngine.java @@ -117,7 +117,7 @@ public class WebServiceEngine implements LocalConnector, Startable { Throwable cause = e.getCause(); if (cause != null && cause instanceof ClientAbortException) { // Request has been aborted by the client, nothing can been done as Tomcat has committed the response - LOGGER.warn("Request {} has been aborted by client, error is '{}'", request, e.getMessage()); + LOGGER.debug("Request {} has been aborted by client, error is '{}'", request, e.getMessage()); return; } LOGGER.error("Fail to process request " + request, e); diff --git a/server/sonar-server/src/main/java/org/sonar/server/ws/WsUtils.java b/server/sonar-server/src/main/java/org/sonar/server/ws/WsUtils.java index 6ee8781adba..67f80278334 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/ws/WsUtils.java +++ b/server/sonar-server/src/main/java/org/sonar/server/ws/WsUtils.java @@ -20,7 +20,6 @@ package org.sonar.server.ws; import com.google.common.base.Optional; -import com.google.common.base.Throwables; import com.google.protobuf.Message; import java.io.OutputStream; import java.io.OutputStreamWriter; @@ -60,8 +59,7 @@ public class WsUtils { } } } catch (Exception e) { - LOG.error("Error while writing protobuf message {}", MessageFormatter.print(msg)); - Throwables.propagate(e); + throw new IllegalStateException(format("Error while writing protobuf message %s", MessageFormatter.print(msg)), e); } finally { IOUtils.closeQuietly(output); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/ws/WebServiceEngineTest.java b/server/sonar-server/src/test/java/org/sonar/server/ws/WebServiceEngineTest.java index d8937cfa2da..4145340826b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ws/WebServiceEngineTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ws/WebServiceEngineTest.java @@ -295,7 +295,7 @@ public class WebServiceEngineTest { underTest.execute(request, response); assertThat(response.stream().outputAsString()).isEmpty(); - assertThat(logTester.logs(LoggerLevel.WARN)).isNotEmpty(); + assertThat(logTester.logs(LoggerLevel.DEBUG)).isNotEmpty(); } static class SystemWs implements WebService { diff --git a/server/sonar-server/src/test/java/org/sonar/server/ws/WsUtilsTest.java b/server/sonar-server/src/test/java/org/sonar/server/ws/WsUtilsTest.java index 9bc26875551..a0a1af4db0d 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/ws/WsUtilsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/ws/WsUtilsTest.java @@ -30,11 +30,13 @@ import org.sonarqube.ws.MediaTypes; import org.sonarqube.ws.WsPermissions; import static org.assertj.core.api.Assertions.assertThat; +import static org.sonar.test.ExceptionCauseMatcher.hasType; public class WsUtilsTest { @Rule public ExpectedException expectedException = ExpectedException.none(); + @Rule public LogTester logger = new LogTester(); @@ -73,13 +75,11 @@ public class WsUtilsTest { WsPermissions.Permission message = WsPermissions.Permission.newBuilder().setName("permission-name").build(); - try { - // provoke NullPointerException - WsUtils.writeProtobuf(message, null, new DumbResponse()); - } catch (Exception e) { - assertThat(e).isInstanceOf(NullPointerException.class); - assertThat(logger.logs()).contains("Error while writing protobuf message org.sonarqube.ws.WsPermissions.Permission[name: \"permission-name\"]"); - } + expectedException.expect(IllegalStateException.class); + expectedException.expectCause(hasType(NullPointerException.class)); + expectedException.expectMessage("Error while writing protobuf message org.sonarqube.ws.WsPermissions.Permission[name: \"permission-name\"]"); + // provoke NullPointerException + WsUtils.writeProtobuf(message, null, new DumbResponse()); } @Test -- 2.39.5