Julian Feinauer created PLC4X-139:
-------------------------------------

             Summary: PLC4X leaks sockets in case of connection problems
                 Key: PLC4X-139
                 URL: https://issues.apache.org/jira/browse/PLC4X-139
             Project: Apache PLC4X
          Issue Type: Bug
          Components: Core
    Affects Versions: 0.4.0
            Reporter: Julian Feinauer
            Assignee: Julian Feinauer


See my description on the list: 
https://lists.apache.org/thread.html/4aa229421668a92275e33643dbc57f2fea29cee7ffcb07891f58c9eb@%3Cdev.plc4x.apache.org%3E

I created a MWE like that

{code:java}
public static void main(String[] args) throws Exception {
        IntStream.range(0, 100).parallel().forEach(i -> createConnection(i));
    }

    private static void createConnection(int i) {
        System.out.println("trying " + i);
        try (PlcConnection plcConnection = new 
PlcDriverManager().getConnection("s7://192.168.167.211/0/0")) {

        } catch (Exception e) {
         logger.error("Kann keine Verbindung zu der angegebenen Adresse 
aufbauen");
        }
    }
{code}
where the IP is *not reachable*, thus it fails every time.

When looking at the open sockets with (works on my Mac)
{code:bash}
while true; do lsof -p 16843 | wc -l; sleep 10; done
{code}

I get the output

{noformat}
    1640
    1640
    1640
    1736
    1736
    1736
    1832
    1832
    1832
    1928
    1928
    1928
    2024
    2024
    2024
    2120
    2120
    2120
    2216
    2216
    2216
    2312
    2312
    2312
    2408
    2408
    2408
    2504
    2504
    2504
    2500
{noformat}

So this reall sems to be the case.

I think this could be due to us only propagating the exception but not closing 
the channel, I will investigate further.




--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to