You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "dvor4x (JIRA)" <ji...@apache.org> on 2017/11/20 10:13:01 UTC

[jira] [Created] (CAMEL-12016) Invalid Pool Exhausted error on camel-netty4

dvor4x created CAMEL-12016:
------------------------------

             Summary: Invalid Pool Exhausted error on camel-netty4
                 Key: CAMEL-12016
                 URL: https://issues.apache.org/jira/browse/CAMEL-12016
             Project: Camel
          Issue Type: Bug
          Components: camel-netty4
    Affects Versions: 2.20.1, 2.20.0, 2.19.0, 2.18.0, 2.17.4
         Environment: Same behaviour on : Linux, Windows 7, AIX
Using Intelli-J
            Reporter: dvor4x


Hey guys,

Since camel 2.17.4, our application who made some "ping request" brings a "Pool exhausted" error after 100 trying.

After analysis, since 2.17.4, when camel-netty4 try to connect to a down host, the connection (ChannelFuture) stay in the pool.

Here is the code to show you :

{code:java}
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
 
import java.util.NoSuchElementException;
 
public class main {
    public static void main(String args[]) throws Exception {
        CamelContext context = new DefaultCamelContext();
        context.addRoutes(new RouteBuilder() {
            public void configure() {
                onException(NoSuchElementException.class).process(exchange -> {
                    System.out.println(exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class));
                });
 
                from("timer://myTimer?period=2000").
                    setBody()
                        .simple("Trying to connect to localhost:12345")
                    .to("stream:out")
                    .to("netty4:tcp://localhost:12345?producerPoolMaxActive=4");
            }
        });
        context.start();
        Thread.sleep(8000000);
    }
}
{code}

The producerPoolMaxActive is set to 4 to bring the error faster.

*The output in 2.17.3 just bellow (all work perfectly)*

_Trying to connect to localhost:12345
Trying to connect to localhost:12345
Trying to connect to localhost:12345
Trying to connect to localhost:12345
Trying to connect to localhost:12345
...._

*But in version > 2.17.3, we've got this : *

_Trying to connect to localhost:12345
Trying to connect to localhost:12345
Trying to connect to localhost:12345
Trying to connect to localhost:12345
Trying to connect to localhost:12345
java.util.NoSuchElementException: Pool exhausted
Trying to connect to localhost:12345
java.util.NoSuchElementException: Pool exhausted
Trying to connect to localhost:12345
java.util.NoSuchElementException: Pool exhausted
Trying to connect to localhost:12345
java.util.NoSuchElementException: Pool exhausted
_

I've made a pull request to fix it.

Thanks for your help !



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)