Hello!
The issue started after upgrade SonarQube 6.7.7 → 7.9.5.
We use SonarQube dockerized server on our corporate AWS account on a separate EC2 instance.
We had the server 6.7.7 version and it works fine. After we upgraded the server to the version 7.9.5 the UI started to occasionally fail fetching requests. If you reload the page several times you can find a moment when all requests fetch successfully. But most of the time at least one request fail to fetch.
The same happens when we start the brand new instance with the 7.9.5 version.
I understand that it might be some corporate firewall issue, but the support can’t find the breaking point.
Were there any changes made with the UI correspondence to the backend with the 6.7.7 → 7.9.5 transition?
Thanks for any hints!
We use docker-compose file to start up the server. No changes were made during upgrade except the docker image tag.
version: "2"
services:
sonarqube:
image: sonarqube:7.9.5-community
ports:
- "80:9000"
networks:
- sonarnet
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
ulimits:
nofile:
soft: 65536
hard: 65536
db:
image: postgres:10.4
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgresql:/var/lib/postgresql
# This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
- postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
ipam:
driver: default
config:
-
subnet: 172.21.219.0/24
volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_bundled-plugins:
postgresql:
postgresql_data:
Here is the screenshot of the UI page with failed requests:
The following error messages can be found in the Console:
This is the only error message that can be found in the SonarQube logs:
sonarqube_1 | 2021.03.02 07:35:46 DEBUG web[AXfx3UV13EnAm04wAAAD][o.s.s.w.WebServiceEngine] Request http://10.15.2.229/api/l10n/index?locale=en&ts=2021-03-02T06%3A57%3A01%2B0000 has been aborted by client
sonarqube_1 | org.sonar.api.utils.text.WriterException: Fail to write JSON
sonarqube_1 | at org.sonar.api.utils.text.JsonWriter.rethrow(JsonWriter.java:396)
sonarqube_1 | at org.sonar.api.utils.text.JsonWriter.close(JsonWriter.java:391)
sonarqube_1 | at org.sonar.server.platform.ws.IndexAction.handle(IndexAction.java:84)
sonarqube_1 | at org.sonar.server.ws.WebServiceEngine.execute(WebServiceEngine.java:110)
sonarqube_1 | at org.sonar.server.ws.WebServiceFilter.doFilter(WebServiceFilter.java:88)
sonarqube_1 | at org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:126)
sonarqube_1 | at org.sonar.server.platform.web.MasterServletFilter.doFilter(MasterServletFilter.java:95)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
sonarqube_1 | at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:87)
sonarqube_1 | at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:71)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
sonarqube_1 | at org.sonar.server.platform.web.CacheControlFilter.doFilter(CacheControlFilter.java:76)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
sonarqube_1 | at org.sonar.server.platform.web.SecurityServletFilter.doHttpFilter(SecurityServletFilter.java:76)
sonarqube_1 | at org.sonar.server.platform.web.SecurityServletFilter.doFilter(SecurityServletFilter.java:48)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
sonarqube_1 | at org.sonar.server.platform.web.RedirectFilter.doFilter(RedirectFilter.java:58)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
sonarqube_1 | at org.sonar.server.platform.web.requestid.RequestIdFilter.doFilter(RequestIdFilter.java:63)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
sonarqube_1 | at org.sonar.server.platform.web.RootFilter.doFilter(RootFilter.java:62)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
sonarqube_1 | at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
sonarqube_1 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
sonarqube_1 | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
sonarqube_1 | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
sonarqube_1 | at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
sonarqube_1 | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
sonarqube_1 | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
sonarqube_1 | at ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:256)
sonarqube_1 | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
sonarqube_1 | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
sonarqube_1 | at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
sonarqube_1 | at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
sonarqube_1 | at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
sonarqube_1 | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
sonarqube_1 | at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
sonarqube_1 | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
sonarqube_1 | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
sonarqube_1 | at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
sonarqube_1 | at java.base/java.lang.Thread.run(Unknown Source)
sonarqube_1 | Caused by: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer
sonarqube_1 | at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:364)
sonarqube_1 | at org.apache.catalina.connector.OutputBuffer.appendByteArray(OutputBuffer.java:803)
sonarqube_1 | at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:732)
sonarqube_1 | at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:399)
sonarqube_1 | at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:377)
sonarqube_1 | at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96)
sonarqube_1 | at java.base/sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
sonarqube_1 | at java.base/sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
sonarqube_1 | at java.base/sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
sonarqube_1 | at java.base/sun.nio.cs.StreamEncoder.write(Unknown Source)
sonarqube_1 | at java.base/sun.nio.cs.StreamEncoder.write(Unknown Source)
sonarqube_1 | at java.base/java.io.OutputStreamWriter.write(Unknown Source)
sonarqube_1 | at java.base/java.io.Writer.write(Unknown Source)
sonarqube_1 | at org.apache.commons.io.IOUtils.write(IOUtils.java:1986)
sonarqube_1 | at org.sonar.server.ws.CacheWriter.close(CacheWriter.java:57)
sonarqube_1 | at com.google.gson.stream.JsonWriter.close(JsonWriter.java:555)
sonarqube_1 | at org.sonar.api.utils.text.JsonWriter.close(JsonWriter.java:389)
sonarqube_1 | ... 47 common frames omitted
sonarqube_1 | Caused by: java.io.IOException: Connection reset by peer
sonarqube_1 | at java.base/sun.nio.ch.FileDispatcherImpl.write0(Native Method)
sonarqube_1 | at java.base/sun.nio.ch.SocketDispatcher.write(Unknown Source)
sonarqube_1 | at java.base/sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)
sonarqube_1 | at java.base/sun.nio.ch.IOUtil.write(Unknown Source)
sonarqube_1 | at java.base/sun.nio.ch.IOUtil.write(Unknown Source)
sonarqube_1 | at java.base/sun.nio.ch.SocketChannelImpl.write(Unknown Source)
sonarqube_1 | at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
sonarqube_1 | at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
sonarqube_1 | at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157)
sonarqube_1 | at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1306)
sonarqube_1 | at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:726)
sonarqube_1 | at org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking(SocketWrapperBase.java:496)
sonarqube_1 | at org.apache.tomcat.util.net.SocketWrapperBase.write(SocketWrapperBase.java:434)
sonarqube_1 | at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.doWrite(Http11OutputBuffer.java:623)
sonarqube_1 | at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:123)
sonarqube_1 | at org.apache.coyote.http11.filters.GzipOutputFilter$FakeOutputStream.write(GzipOutputFilter.java:175)
sonarqube_1 | at java.base/java.util.zip.DeflaterOutputStream.deflate(Unknown Source)
sonarqube_1 | at java.base/java.util.zip.DeflaterOutputStream.write(Unknown Source)
sonarqube_1 | at java.base/java.util.zip.GZIPOutputStream.write(Unknown Source)
sonarqube_1 | at org.apache.coyote.http11.filters.GzipOutputFilter.doWrite(GzipOutputFilter.java:86)
sonarqube_1 | at org.apache.coyote.http11.Http11OutputBuffer.doWrite(Http11OutputBuffer.java:225)
sonarqube_1 | at org.apache.coyote.Response.doWrite(Response.java:602)
sonarqube_1 | at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:352)
sonarqube_1 | ... 63 common frames omitted