On Mon, 21 Jul 2003 11:21:38 -0700, jenny wrote:
> I have a java socket program running on AIX 126.96.36.199 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