Reply To: Inrecoverable socket error

Clovertech Forums Read Only Archives Cloverleaf Cloverleaf Inrecoverable socket error Reply To: Inrecoverable socket error

#56619
Michael Hertel
Participant

    Here’s an explanation from the archive:

    =========================


    Original Message


    From: Rob Abbott

    Sent: Thursday, June 17, 2004 1:52 PM

    To: Technical Issues

    Subject: [clovertech] Re: broken pipe

    Here’s the explanation:

    hcicmd connects to the command thread via a TCP/IP loopback connection.

    hcicmd does a “resend” or other expensive operation that keeps a thread busy

    for over 30 seconds.

    hcicmd waits for acknowledgement from the engine that the command has

    completed.

    hcicmd times out waiting for ack (30 seconds)

    Engine operation completes. Command thread gets control.

    Command thread attempts to send acknowledgement back on socket.

    hcicmd has gone away. O/S returns “broken pipe” on the socket due to the

    client disconnect.

    This is a non-fatal error. It’s simply that hcicmd has disconnected before

    the engine has had a chance to ACK. When the engine tries to ACK the error

    occurs.

    You often see this error when starting an engine with a lot of threads. The

    reason for this is when each thread starts, it sends a message to each

    engine process letting the engine know “I’m alive, if you have any pending

    messages for me, please release them” – the command is “xrel_post”.

    Since engines with a lot of threads may take a while to start, the “hcicmd

    xrel_post” processes will time out, and you’ll see a load of broken pipe

    errors once the engine fully starts and is able to ack all the xrel_post

    commands it’s receiving.

    I hope this helps clear things up. The bottom line is that these broken

    pipe errors are non-fatal and should not require an engine bounce or

    anything of the sort.

    Regards — Rob

    ================

    Also:

    ================

    Date:  Thu, 17 Jun 2004 14:04:43 -0500

    Author:  Rob Abbott <Rob.Abbott@quovadx.com>

    Subject:  Re: broken pipe

    Body:  I neglected to mention that hcicmd is a perl script. If you want (at your

    own risk 🙂) to change the 30-second timeout, look for “my $time=30;” at

    around line 254. Change 30 to whatever integer you wish. 0 (zero) means

    wait forever.

    — Rob