Author: jbellis
Date: Fri Nov 13 15:57:38 2009
New Revision: 835892
URL: http://svn.apache.org/viewvc?rev=835892&view=rev
Log:
workaround for "Resource temporarily unavailable"
patch by jbellis; reviewed by Jaakko Laine for CASSANDRA-541
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/net/TcpConnection.java
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/net/TcpConnection.java
URL:
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/net/TcpConnection.java?rev=835892&r1=835891&r2=835892&view=diff
==============================================================================
---
incubator/cassandra/trunk/src/java/org/apache/cassandra/net/TcpConnection.java
(original)
+++
incubator/cassandra/trunk/src/java/org/apache/cassandra/net/TcpConnection.java
Fri Nov 13 15:57:38 2009
@@ -219,8 +219,22 @@
}
}
- /* returns the number of bytes transferred from file to the
socket */
- long bytesTransferred = fc.transferTo(startPosition, limit,
socketChannel_);
+ long bytesTransferred;
+ try
+ {
+ /* returns the number of bytes transferred from file to
the socket */
+ bytesTransferred = fc.transferTo(startPosition, limit,
socketChannel_);
+ }
+ catch (IOException e)
+ {
+ // at least jdk1.6.0 on Linux seems to throw IOException
+ // when the socket is full. (Bug fixed for 1.7:
http://bugs.sun.com/view_bug.do?bug_id=5103988)
+ // For now look for a specific string in for the message
for the exception.
+ if (!e.getMessage().startsWith("Resource temporarily
unavailable"))
+ throw e;
+ Thread.sleep(10);
+ continue;
+ }
if (logger_.isDebugEnabled())
logger_.debug("Bytes transferred " + bytesTransferred);
bytesWritten += bytesTransferred;