Applies to Pega Platform versions 7.2 through 8.6
This document guides you in preventing and resolving issues that cause ClientAbortException and Unexpected EOF exceptions.
Symptoms
ClientAbortException and Unexpected EOF exceptions occur in logs. The server throws the exceptions when the connection ends or is disrupted. The exceptions occur when you perform any action that requires relatively more time than expected.
To replicate the issue, select an action that triggers a Pega request or sends a request to the Pega server. Then, before you receive the response for the request, end the connection using an application such as Fiddler.
Errors
Stack traces
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:356)
at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:825)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:310)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:284)
at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118)
at com.pega.jcraft.jzlib.DeflaterOutputStream.flush(DeflaterOutputStream.java:159)
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:297)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
at com.pega.pegarules.web.impl.DirectStreamWriter.flush(DirectStreamWriter.java:205)
at com.pega.pegarules.web.impl.DirectStreamWriter.flush(DirectStreamWriter.java:198)
at com.pega.pegarules.web.impl.WebStandardImpl.sendOutput(WebStandardImpl.java:1034)
at com.pega.pegarules.web.impl.WebStandardImpl.doPost(WebStandardImpl.java:432)
ExceptionText
java.io.EOFException: Unexpected EOF read on the socket
at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:734)
at org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:40)
at org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1084)
at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:140)
at org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:263)
at org.apache.coyote.Request.doRead(Request.java:581)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:326)
at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:642)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:349)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:183)
at com.pega.pegarules.web.impl.HttpUtilities.getPostBytes(HttpUtilities.java:498)
at com.pega.pegarules.web.impl.HttpUtilities.extractRequest(HttpUtilities.java:247)
Explanation
When you perform an action on Pega server, the request directly reaches the Application server, which is Tomcat on Pega Cloud ® Services. Tomcat performs Read or Write operations as part of fulfilling the request. Exceptions occur when the connection is disrupted before Tomcat completely serves the request.
The connection might get terminated in the following scenarios:
- When you close the browser explicitly or refresh the page or navigate away from the page
- When the performance of the Web application degrades and you perform actions such as Close or Refresh or navigate away from the page
- When the performance of the Web application degrades and the Performance Automation tools such as JMeter closes the request connection when the Wait time lapses before the response is received
- When the incorrectly written Web automation (selenium/RSPECs) scripts close the connection early
- When the Load Balancer or Reverse Proxy closes the connection because of the Time-out for a request set in the layers
Solution
Identify the reasons for the scenarios that cause the connection to get terminated and rectify them. Often, application performance is the reason for the issues causing ClientAbortException and Unexpected EOF exceptions.
The issue occurs when the connection is disrupted and is reported by server or engine. However, the issue must be investigated from client or automation or infrastructure side.
Related Content
System Performance landing page