Finally figured this issue out.
The broken pipe was an indication that communication between the scanner and the server was being interrupted, though I focused on looking for clues in the scanner output and server logs, but didn’t find a root cause there. After coming across another issue here on the forums (SonarQube report upload throwing SocketTimeOutException), it occurred to me that the Kubernetes nginx ingress controller could be interfering.
Checking the logs there showed that nginx was not happy with the request body size (our generated reports are > 160M when compressed. Adding the proxy-body-size
annotation to our ingress resource corrected the problem.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
...
annotations:
nginx.ingress.kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "200m"
...
Et, voila!
Hope this helps others that might experience the same issue.