in impl/src/main/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingAbstract.java [487:513]
private void invokeOneway0(final Channel channel, final RemotingCommand request) {
boolean acquired = this.semaphoreOneway.tryAcquire();
if (acquired) {
final SemaphoreReleaseOnlyOnce once = new SemaphoreReleaseOnlyOnce(this.semaphoreOneway);
try {
final SocketAddress socketAddress = channel.remoteAddress();
ChannelFutureListener listener = new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture f) {
once.release();
if (!f.isSuccess()) {
LOG.warn("Send request command to channel {} failed !", socketAddress);
}
}
};
this.writeAndFlush(channel, request, listener);
} catch (Exception e) {
once.release();
LOG.error("Send request command to channel " + channel + " error !", e);
}
} else {
String info = String.format("No available oneway semaphore to issue the request %s", request.toString());
LOG.error(info);
}
}