HDFS-18324. Fix race condition in closing IPC connections. (#5371)
This commit is contained in:
parent
151b71d7af
commit
26fba8701c
@ -1181,7 +1181,14 @@ public void sendRpcRequest(final Call call)
|
||||
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.
|
||||
|
@ -1336,7 +1336,7 @@ interface DummyProtocol {
|
||||
/**
|
||||
* 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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user