cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP Adapter Error

vikas_agarwal
Contributor
0 Kudos

Hello All,

I am doing ABAP to SOAP scenario. Message is successfully processed on the sender side, but when i am checking the message in RWB for the status it is showing the error on the receiver side:

java.net.SocketException: There is no process to read data written to a pipe

My server is running on AIX/Oracle

Thanks & Regards,

Vikas Agarwal

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Vikas,

The "There is no process to read data written to a pipe" error is an AIX-specific error message, which lies in the native method implementation of the corresponding Java code. It's thrown by the C code that implements socket communication on AIX.

As the message says, it happens when the message written to a pipe is not read by any process. When plenty of requests are sent to the accepting side, the accepting side might fail to read the request because of timeouts, blocked threads or other reasons, and then this exception is thrown.

Most of the time, this problem is caused by potential bugs. For example:

1) The Web application establishes an HTTP connection with the gateway, and it tries to send it a request ->

URL url = new URL(serverAddress);

URLConnection conn = url.openConnection();

conn.setDoOutput(true);

OutputStream os = conn.getOutputStream();

PrintWriter writer = new PrintWriter(os);

writer.println("Hello, dude");

writer.flush();

writer.close();

InputStream is = conn.getInputStream();

Without the last line InputStream is = conn.getInputStream, the java.net.SocketException: There is no process to read data written to a pipe exception is thrown. Without conn.getInputStream(), the request message won't be posted to the accepting side at all. As a result, the accepting side won't receive any message, so of course there won't be any process to read the request data written to the connection socket, so it causes the exception.

2) Timeout when listening to a response ->

Performance test might expect that the test client can get a response within five seconds. If the response is returned after five seconds, the test client that sends out the request won't process it anymore. As a result, the test client won't read the response data. For the socket pipe, data is written, but it lacks a reading process.

3) The responding thread is blocked by another thread ->

Suppose you manage a thread pool in the gateway to respond to the requests sent by the Web application. When a pretty high TPS is reached but, due to inefficient thread scheduling, it's quite probable that no thread can be scheduled to handle a new request. As a result, the request is not read and processed by any thread. This can also cause the error.

Hope thid will help u...

Regds,

Pinangshuk.