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

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

     [ https://issues.apache.org/jira/browse/CAMEL-12016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrea Cosentino reassigned CAMEL-12016:
----------------------------------------

    Assignee: Andrea Cosentino

> 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.17.4, 2.18.0, 2.19.0, 2.20.0, 2.20.1
>         Environment: Same behaviour on : Linux, Windows 7, AIX
> Using Intelli-J
>            Reporter: dvor4x
>            Assignee: Andrea Cosentino
>             Fix For: 2.19.5, 2.20.2, 2.21.0, 2.18.6
>
>
> 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)