HDFS-18324. Fix race condition in closing IPC connections. (#5371)
This commit is contained in:
parent
de08baded6
commit
9e7a9fd46d
|
@ -1164,7 +1164,14 @@ public class Client implements AutoCloseable {
|
||||||
final ResponseBuffer buf = new ResponseBuffer();
|
final ResponseBuffer buf = new ResponseBuffer();
|
||||||
header.writeDelimitedTo(buf);
|
header.writeDelimitedTo(buf);
|
||||||
RpcWritable.wrap(call.rpcRequest).writeTo(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.
|
/* Receive a response.
|
||||||
|
|
|
@ -1338,7 +1338,7 @@ public class TestIPC {
|
||||||
/**
|
/**
|
||||||
* Test the retry count while used in a retry proxy.
|
* Test the retry count while used in a retry proxy.
|
||||||
*/
|
*/
|
||||||
@Test(timeout=60000)
|
@Test(timeout=100000)
|
||||||
public void testRetryProxy() throws IOException {
|
public void testRetryProxy() throws IOException {
|
||||||
final Client client = new Client(LongWritable.class, conf);
|
final Client client = new Client(LongWritable.class, conf);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue