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

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • jenny

    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.Except ion: 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
  • Ingo Pakleppa

    #2
    Re: java.IO.Excepti on: There is no process to read data written to a pipe Error

    On Mon, 21 Jul 2003 11:21:38 -0700, jenny wrote:
    [color=blue]
    > 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.Except ion: 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?[/color]

    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).
    [color=blue]
    > 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.[/color]

    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

    Comment

    Working...