Reply To: Inrecoverable socket error

Homepage 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

Forum Statistics

Registered Users
5,117
Forums
28
Topics
9,292
Replies
34,435
Topic Tags
286
Empty Topic Tags
10