diff --git a/CHANGES.txt b/CHANGES.txt index 064519fb90..f03a1b46dd 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1320,9 +1320,6 @@ Release 0.20.2 - Unreleased HADOOP-6315. Avoid incorrect use of BuiltInflater/BuiltInDeflater in GzipCodec. (Aaron Kimball via cdouglas) - HADOOP-6498. IPC client bug may cause rpc call hang. (Ruyue Ma and hairong - via hairong) - Release 0.20.1 - 2009-09-01 INCOMPATIBLE CHANGES diff --git a/src/java/org/apache/hadoop/ipc/Client.java b/src/java/org/apache/hadoop/ipc/Client.java index 4932a8d14f..f71a4a507a 100644 --- a/src/java/org/apache/hadoop/ipc/Client.java +++ b/src/java/org/apache/hadoop/ipc/Client.java @@ -529,14 +529,13 @@ private void receiveResponse() { if (LOG.isDebugEnabled()) LOG.debug(getName() + " got value #" + id); - Call call = calls.get(id); + Call call = calls.remove(id); int state = in.readInt(); // read call status if (state == Status.SUCCESS.state) { Writable value = ReflectionUtils.newInstance(valueClass, conf); value.readFields(in); // read value call.setValue(value); - calls.remove(id); } else if (state == Status.ERROR.state) { call.setException(new RemoteException(WritableUtils.readString(in), WritableUtils.readString(in))); diff --git a/src/test/core/org/apache/hadoop/ipc/TestIPC.java b/src/test/core/org/apache/hadoop/ipc/TestIPC.java index 16e1cbe576..df5a155815 100644 --- a/src/test/core/org/apache/hadoop/ipc/TestIPC.java +++ b/src/test/core/org/apache/hadoop/ipc/TestIPC.java @@ -26,7 +26,6 @@ import org.apache.hadoop.net.NetUtils; import java.util.Random; -import java.io.DataInput; import java.io.IOException; import java.net.InetSocketAddress; @@ -89,7 +88,7 @@ public void run() { try { LongWritable param = new LongWritable(RANDOM.nextLong()); LongWritable value = - (LongWritable)client.call(param, server, null, null); + (LongWritable)client.call(param, server); if (!param.equals(value)) { LOG.fatal("Call failed!"); failed = true; @@ -122,7 +121,7 @@ public void run() { Writable[] params = new Writable[addresses.length]; for (int j = 0; j < addresses.length; j++) params[j] = new LongWritable(RANDOM.nextLong()); - Writable[] values = client.call(params, addresses, null, null); + Writable[] values = client.call(params, addresses); for (int j = 0; j < addresses.length; j++) { if (!params[j].equals(values[j])) { LOG.fatal("Call failed!"); @@ -217,7 +216,7 @@ public void testStandAloneClient() throws Exception { InetSocketAddress address = new InetSocketAddress("127.0.0.1", 10); try { client.call(new LongWritable(RANDOM.nextLong()), - address, null, null); + address); fail("Expected an exception to have been thrown"); } catch (IOException e) { String message = e.getMessage(); @@ -232,41 +231,6 @@ public void testStandAloneClient() throws Exception { } } - private static class LongErrorWritable extends LongWritable { - private final static String ERR_MSG = - "Come across an exception while reading"; - - LongErrorWritable() {} - - LongErrorWritable(long longValue) { - super(longValue); - } - - public void readFields(DataInput in) throws IOException { - super.readFields(in); - throw new IOException(ERR_MSG); - } - } - public void testErrorClient() throws Exception { - // start server - Server server = new TestServer(1, false); - InetSocketAddress addr = NetUtils.getConnectAddress(server); - server.start(); - - // start client - Client client = new Client(LongErrorWritable.class, conf); - try { - client.call(new LongErrorWritable(RANDOM.nextLong()), - addr, null, null); - fail("Expected an exception to have been thrown"); - } catch (IOException e) { - // check error - Throwable cause = e.getCause(); - assertTrue(cause instanceof IOException); - assertEquals(LongErrorWritable.ERR_MSG, cause.getMessage()); - } - } - public static void main(String[] args) throws Exception {