This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.14.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.14.x by this push: new f3364deebb1 CAMEL-18027: camel-netty (producer) wrongly closes client channels due to request timeout being triggeted during eviction run f3364deebb1 is described below commit f3364deebb1df1af0febada22fd1a498a43a78de Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Mon Jun 20 19:20:43 2022 +0200 CAMEL-18027: camel-netty (producer) wrongly closes client channels due to request timeout being triggeted during eviction run --- .../main/java/org/apache/camel/component/netty/NettyProducer.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyProducer.java b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyProducer.java index 44c795a5eaf..8b96ef3e27f 100644 --- a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyProducer.java +++ b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyProducer.java @@ -57,6 +57,7 @@ import org.apache.camel.util.IOHelper; import org.apache.commons.pool2.ObjectPool; import org.apache.commons.pool2.PooledObject; import org.apache.commons.pool2.PooledObjectFactory; +import org.apache.commons.pool2.PooledObjectState; import org.apache.commons.pool2.impl.DefaultPooledObject; import org.apache.commons.pool2.impl.GenericObjectPool; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; @@ -113,8 +114,8 @@ public class NettyProducer extends DefaultAsyncProducer { config.setMaxIdle(configuration.getProducerPoolMaxIdle()); // we should test on borrow to ensure the channel is still valid config.setTestOnBorrow(true); - // only evict channels which are no longer valid - config.setTestWhileIdle(true); + // idle channels can be evicted + config.setTestWhileIdle(false); // run eviction every 30th second config.setTimeBetweenEvictionRuns(Duration.ofSeconds(30)); config.setMinEvictableIdleTime(Duration.ofMillis(configuration.getProducerPoolMinEvictableIdle())); @@ -610,8 +611,9 @@ public class NettyProducer extends DefaultAsyncProducer { ChannelFuture channelFuture = p.getObject(); LOG.trace("activateObject channel request: {}", channelFuture); + PooledObjectState state = p.getState(); if (channelFuture.isSuccess() && producer.getConfiguration().getRequestTimeout() > 0) { - LOG.trace("reset the request timeout as we activate the channel"); + LOG.trace("Reset the request timeout as we activate the channel"); Channel channel = channelFuture.channel(); ChannelHandler handler = channel.pipeline().get("timeout");