This is an automated email from the ASF dual-hosted git repository. omalley pushed a commit to branch branch-3.3 in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/branch-3.3 by this push: new 9e7a9fd46d2 HDFS-18324. Fix race condition in closing IPC connections. (#5371) 9e7a9fd46d2 is described below commit 9e7a9fd46d20d71c3cdce9b7470c088d07eec483 Author: Owen O'Malley <oomal...@linkedin.com> AuthorDate: Fri Feb 10 09:51:03 2023 -0800 HDFS-18324. Fix race condition in closing IPC connections. (#5371) --- .../src/main/java/org/apache/hadoop/ipc/Client.java | 9 ++++++++- .../src/test/java/org/apache/hadoop/ipc/TestIPC.java | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java index 7327d884bc7..be0db11b02b 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Client.java @@ -1164,7 +1164,14 @@ public class Client implements AutoCloseable { final ResponseBuffer buf = new ResponseBuffer(); header.writeDelimitedTo(buf); RpcWritable.wrap(call.rpcRequest).writeTo(buf); - rpcRequestQueue.put(Pair.of(call, buf)); + // Wait for the message to be sent. We offer with timeout to + // prevent a race condition between checking the shouldCloseConnection + // and the stopping of the polling thread + while (!shouldCloseConnection.get()) { + if (rpcRequestQueue.offer(Pair.of(call, buf), 1, TimeUnit.SECONDS)) { + break; + } + } } /* Receive a response. diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestIPC.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestIPC.java index b9afa31b448..c32f7414495 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestIPC.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestIPC.java @@ -1338,7 +1338,7 @@ public class TestIPC { /** * Test the retry count while used in a retry proxy. */ - @Test(timeout=60000) + @Test(timeout=100000) public void testRetryProxy() throws IOException { final Client client = new Client(LongWritable.class, conf); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org