Re: Broken Pipe Exception

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Re: Broken Pipe Exception

Philip Aston-2
I'm afraid its very hard to diagnose a broken pipe exception from the client stack trace. The OS or the network has torn down the TCP connection unexpectedly.

You're right to go looking for firewalls and so on. Maybe a wireshark trace would point the finger better.

The networking layer in the grinder is pretty basic and just delegates to TCP for most things. There's no retry in the worker, and to implement it would mean adding some sort of windowing to the internal protocol to remove duplicates on reconnect. Bottom line - the grinder expects the network used for internal comms between its processes to be reliable.

- Phil

On 15/05/14 12:56, [hidden email] wrote:


Hello Philip,

I was doing some testing and encountered this Broken Pipe exception after some time of running the tests. I started the test with 300 threads and with 5 worker processes. After 2 hours one of the worker process died giving this exception and I was left with only 4 processes.
I tried to find the solution for this but couldn't find any. I tried with -daemon 2 but it doesn't help since it keeps agent process alive and not worker process. I asked my network team to look into network issues if any but even they didnt find any issue with firewall or so. Could you please see what could be the issue behind this. Its now coming in almost my every test. Is there any mechanism by which we can reconnect the worker process again. Here is the stack trace for this.

2014-05-15 13:26:54,135 ERROR worker.loader-07-1: Report to console failed
net.grinder.communication.CommunicationException: Exception whilst sending message
at net.grinder.communication.AbstractSender.send( ~[grinder-core-3.11-NE-SNAPSHOT.jar:na]
at net.grinder.communication.QueuedSenderDecorator.flush( ~[grinder-core-3.11-NE-SNAPSHOT.jar:na]
at net.grinder.engine.process.GrinderProcess$FirstHurdleSender.flush( ~[grinder-core-3.11-NE-SNAPSHOT.jar:na]
at net.grinder.engine.process.GrinderProcess.sendStatusMessage( ~[grinder-core-3.11-NE-SNAPSHOT.jar:na]
at net.grinder.engine.process.GrinderProcess.access$4( ~[grinder-core-3.11-NE-SNAPSHOT.jar:na]
at net.grinder.engine.process.GrinderProcess$ ~[grinder-core-3.11-NE-SNAPSHOT.jar:na]
at java.util.TimerThread.mainLoop( [na:1.7.0_45]
at [na:1.7.0_45]
Caused by: Broken pipe
at Method) ~[na:1.7.0_45]
at ~[na:1.7.0_45]
at ~[na:1.7.0_45]
at ~[na:1.7.0_45]
at ~[na:1.7.0_45]
at$BlockDataOutputStream.drain( ~[na:1.7.0_45]
at$BlockDataOutputStream.setBlockDataMode( ~[na:1.7.0_45]
at ~[na:1.7.0_45]
at ~[na:1.7.0_45]
at net.grinder.communication.AbstractSender.writeMessageToStream( ~[grinder-core-3.11-NE-SNAPSHOT.jar:na]
at net.grinder.communication.StreamSender.writeMessage( ~[grinder-core-3.11-NE-SNAPSHOT.jar:na]
at net.grinder.communication.AbstractSender.send( ~[grinder-core-3.11-NE-SNAPSHOT.jar:na]
... 7 common frames omitted


Girish Sharma

"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
grinder-use mailing list
[hidden email]