f



java.IO.Exception: There is no process to read data written to a pipe Error

Hi, 

I have a java socket program running on AIX 4.3.3.0 platform.  It
opens a socket and sends data to our customer over a leased fractional
T1 line.  The line is always connected.  However, periodically, I see
"java.IO.Exception: There is no process to read data written to a
pipe" error message in my log file.  Can anybody tell me in what cases
this error message could occur?

The other strange thing is that our customer would report that they
miss a few messages everyday.  And when I compare my log with the
customer's log, I found that the two messages reported to be lost are
actually the messages I sent before I see "there is no process to read
data written to a pipe" error message every time.  For example, I sent
two files over, and no exceptions occurred; when i sent the third
file, an error message would say "there is no process to read data
written to a pipe", and the third message would get resent while our
customer is actually missing the first two messages.  I don't
understand why I am not seeing any exceptions when I sent the first
two messages.  It looks to me that when I sent the first message, the
link might have already been broken but somehow it didn't detect until
the third message was sent??  Does anyone have an idea of why that
happens or what's actually going on?  I do a flush every time I send
out a message, and I've tried to set some of the options like
TCP_NODELAY and KEEP_SO_ALIVE, but nothing seemed to be working.

Can anyone help me?  I'd appreciate any help!

Thanks a lot,

Jenny
0
wjfwmt
7/21/2003 6:21:38 PM
comp.lang.java 3285 articles. 1 followers. Post Follow

1 Replies
1305 Views

Similar Articles

[PageSpeed] 47

On Mon, 21 Jul 2003 11:21:38 -0700, jenny wrote:

> Hi,
> 
> I have a java socket program running on AIX 4.3.3.0 platform.  It opens
> a socket and sends data to our customer over a leased fractional T1
> line.  The line is always connected.  However, periodically, I see
> "java.IO.Exception: There is no process to read data written to a pipe"
> error message in my log file.  Can anybody tell me in what cases this
> error message could occur?

This is fundamentally a Unix error. It indicates that your thread
communicates over a pipe with another process on the same machine, and
that the receiving process has closed the pipe (or has simply died).

> The other strange thing is that our customer would report that they miss
> a few messages everyday.  And when I compare my log with the customer's
> log, I found that the two messages reported to be lost are actually the
> messages I sent before I see "there is no process to read data written
> to a pipe" error message every time.  For example, I sent two files
> over, and no exceptions occurred; when i sent the third file, an error
> message would say "there is no process to read data written to a pipe",
> and the third message would get resent while our customer is actually
> missing the first two messages.  I don't understand why I am not seeing
> any exceptions when I sent the first two messages.  It looks to me that
> when I sent the first message, the link might have already been broken
> but somehow it didn't detect until the third message was sent??  Does
> anyone have an idea of why that happens or what's actually going on?  I
> do a flush every time I send out a message, and I've tried to set some
> of the options like TCP_NODELAY and KEEP_SO_ALIVE, but nothing seemed to
> be working.

This is fairly easy to explain. Pipes essentially use a buffer (I think
usually 8k). The first two messages fit into this buffer, the third one is
the one that causes a buffer overflow in the pipe. That's when AIX detects
that the pipe has broken and throws the exception.

I don't know much about the inner workings of Java or AIX in this context,
so I can't help you find out WHY the pipe breaks.

-- 
Keep American Families united! Support H.R. 539 and H.R. 832
For more information, see http://www.kkeane.com/lobbyspousal-faq.shtml

0
Ingo
7/21/2003 7:06:23 PM
Reply: