in impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingAbstract.java [156:176]
void scanResponseTable() {
final List<Integer> rList = new ArrayList<>();
for (final Map.Entry<Integer, ResponseFuture> next : this.ackTables.entrySet()) {
ResponseFuture responseFuture = next.getValue();
if ((responseFuture.getBeginTimestamp() + responseFuture.getTimeoutMillis()) <= System.currentTimeMillis()) {
rList.add(responseFuture.getRequestId());
}
}
for (Integer requestID : rList) {
ResponseFuture rf = this.ackTables.remove(requestID);
if (rf != null) {
LOG.warn("Removes timeout request {} ", rf.getRequestCommand());
rf.setCause(new RemotingTimeoutException(String.format("Request to %s timeout", rf.getRemoteAddr()), rf.getTimeoutMillis()));
executeAsyncHandler(rf);
}
}
}