Return-Path: Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: (qmail 239 invoked from network); 28 Apr 2010 17:35:49 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 28 Apr 2010 17:35:49 -0000 Received: (qmail 94011 invoked by uid 500); 28 Apr 2010 17:35:49 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 93982 invoked by uid 500); 28 Apr 2010 17:35:49 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 93975 invoked by uid 99); 28 Apr 2010 17:35:48 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 28 Apr 2010 17:35:48 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 28 Apr 2010 17:35:46 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 72D3C238897F; Wed, 28 Apr 2010 17:34:55 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r939018 - in /hadoop/common/trunk: CHANGES.txt src/java/org/apache/hadoop/ipc/Client.java src/test/core/org/apache/hadoop/ipc/TestIPC.java Date: Wed, 28 Apr 2010 17:34:55 -0000 To: common-commits@hadoop.apache.org From: tomwhite@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100428173455.72D3C238897F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: tomwhite Date: Wed Apr 28 17:34:55 2010 New Revision: 939018 URL: http://svn.apache.org/viewvc?rev=939018&view=rev Log: HADOOP-6724. IPC doesn't properly handle IOEs thrown by socket factory. Contributed by Todd Lipcon. Modified: hadoop/common/trunk/CHANGES.txt hadoop/common/trunk/src/java/org/apache/hadoop/ipc/Client.java hadoop/common/trunk/src/test/core/org/apache/hadoop/ipc/TestIPC.java Modified: hadoop/common/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/CHANGES.txt?rev=939018&r1=939017&r2=939018&view=diff ============================================================================== --- hadoop/common/trunk/CHANGES.txt (original) +++ hadoop/common/trunk/CHANGES.txt Wed Apr 28 17:34:55 2010 @@ -373,6 +373,9 @@ Trunk (unreleased changes) HADOOP-6719. Insert all missing methods in FilterFs. (Rodrigo Schmidt via dhruba) + HADOOP-6724. IPC doesn't properly handle IOEs thrown by socket factory. + (Todd Lipcon via tomwhite) + Release 0.21.0 - Unreleased INCOMPATIBLE CHANGES Modified: hadoop/common/trunk/src/java/org/apache/hadoop/ipc/Client.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/src/java/org/apache/hadoop/ipc/Client.java?rev=939018&r1=939017&r2=939018&view=diff ============================================================================== --- hadoop/common/trunk/src/java/org/apache/hadoop/ipc/Client.java (original) +++ hadoop/common/trunk/src/java/org/apache/hadoop/ipc/Client.java Wed Apr 28 17:34:55 2010 @@ -494,10 +494,12 @@ public class Client { private void handleConnectionFailure( int curRetries, int maxRetries, IOException ioe) throws IOException { // close the current connection - try { - socket.close(); - } catch (IOException e) { - LOG.warn("Not able to close a socket", e); + if (socket != null) { + try { + socket.close(); + } catch (IOException e) { + LOG.warn("Not able to close a socket", e); + } } // set socket to null so that the next call to setupIOstreams // can start the process of connect all over again. Modified: hadoop/common/trunk/src/test/core/org/apache/hadoop/ipc/TestIPC.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/src/test/core/org/apache/hadoop/ipc/TestIPC.java?rev=939018&r1=939017&r2=939018&view=diff ============================================================================== --- hadoop/common/trunk/src/test/core/org/apache/hadoop/ipc/TestIPC.java (original) +++ hadoop/common/trunk/src/test/core/org/apache/hadoop/ipc/TestIPC.java Wed Apr 28 17:34:55 2010 @@ -29,8 +29,10 @@ import java.util.Random; import java.io.DataInput; import java.io.IOException; import java.net.InetSocketAddress; +import javax.net.SocketFactory; import junit.framework.TestCase; +import static org.mockito.Mockito.*; import org.apache.hadoop.conf.Configuration; @@ -267,6 +269,25 @@ public class TestIPC extends TestCase { } } + /** + * Test that, if the socket factory throws an IOE, it properly propagates + * to the client. + */ + public void testSocketFactoryException() throws Exception { + SocketFactory mockFactory = mock(SocketFactory.class); + doThrow(new IOException("Injected fault")).when(mockFactory).createSocket(); + Client client = new Client(LongWritable.class, conf, mockFactory); + + InetSocketAddress address = new InetSocketAddress("127.0.0.1", 10); + try { + client.call(new LongWritable(RANDOM.nextLong()), + address, null, null); + fail("Expected an exception to have been thrown"); + } catch (IOException e) { + assertTrue(e.getMessage().contains("Injected fault")); + } + } + public static void main(String[] args) throws Exception {