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

Vegeta updated DIRMINA-1177:
----------------------------
    Description: 
In an old project, a RpcClient using mina 2.0.13 version has a memory leak. 
After investigation, it was found that many NioProcessor and NioSocketConnector 
were not recycled, and the number of threads was continuously increasing (the 
traffic did not increase).

Below is the RpcClient code used in the project. After reading, I also found 
some problems:

[^RpcClien3.java]
{code:java}
new RpcClient3().start();{code}

1.session close is not right
{code:java}
RpcClient#close()

future.getSession().close(false);
// this future is ConnectFuture,not CloseFuture
futureUInterrupt = future.awaitUninterruptibly(CONNECTOR_WORKER_TIMEOUT);

{code}
2.RpcClient#close has concurrent calls 
{code:java}
1.RpcClient#startHealthCheck
2.RpcClient#activateConnectionSensor{code}
 

But I still can't reproduce this problem, My leader want to locate the problem 
as much as possible before trying on the prod environment, such as updating the 
version, modifying session close to future.getSession().close(true) and wait().

ps: The heap.prof  file cannot be uploaded as it exceeds 60MB.  this is a 
google drive link: 
[https://drive.google.com/file/d/14UBnhAF-7sdfYJsh7FMfKxx-dm0BqU9t/view?usp=drive_link]

!image-2024-01-08-16-53-27-846.png!

!image-2024-01-08-16-54-02-222.png!

!image-2024-01-08-16-58-34-700.png!

  was:
In an old project, a RpcClient using mina 2.0.13 version has a memory leak. 
After investigation, it was found that many NioProcessor and NioSocketConnector 
were not recycled, and the number of threads was continuously increasing (the 
traffic did not increase).

Below is the RpcClient code used in the project. After reading, I also found 
some problems:
1.session close is not right

 
{code:java}
RpcClient#close()

future.getSession().close(false);
// this future is ConnectFuture,not CloseFuture
futureUInterrupt = future.awaitUninterruptibly(CONNECTOR_WORKER_TIMEOUT);

{code}
2.RpcClient#close has concurrent calls 
{code:java}
1.RpcClient#startHealthCheck
2.RpcClient#activateConnectionSensor{code}
 

But I still can't reproduce this problem, My leader want to locate the problem 
as much as possible before trying on the prod environment, such as updating the 
version, modifying session close to future.getSession().close(true) and wait().

ps: The heap.prof  file cannot be uploaded as it exceeds 60MB.  this is a 
google drive link: 
https://drive.google.com/file/d/14UBnhAF-7sdfYJsh7FMfKxx-dm0BqU9t/view?usp=drive_link

!image-2024-01-08-16-53-27-846.png!

!image-2024-01-08-16-54-02-222.png!

!image-2024-01-08-16-58-34-700.png!


> The Connector will blocked when execute dispose, And multiple threads are 
> leaking
> ---------------------------------------------------------------------------------
>
>                 Key: DIRMINA-1177
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-1177
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.13
>            Reporter: Vegeta
>            Priority: Major
>         Attachments: RpcClien3.java, image-2024-01-08-16-53-27-846.png, 
> image-2024-01-08-16-54-02-222.png, image-2024-01-08-16-58-34-700.png, 
> stack_2023-07-02_22.log
>
>
> In an old project, a RpcClient using mina 2.0.13 version has a memory leak. 
> After investigation, it was found that many NioProcessor and 
> NioSocketConnector were not recycled, and the number of threads was 
> continuously increasing (the traffic did not increase).
> Below is the RpcClient code used in the project. After reading, I also found 
> some problems:
> [^RpcClien3.java]
> {code:java}
> new RpcClient3().start();{code}
> 1.session close is not right
> {code:java}
> RpcClient#close()
> future.getSession().close(false);
> // this future is ConnectFuture,not CloseFuture
> futureUInterrupt = future.awaitUninterruptibly(CONNECTOR_WORKER_TIMEOUT);
> {code}
> 2.RpcClient#close has concurrent calls 
> {code:java}
> 1.RpcClient#startHealthCheck
> 2.RpcClient#activateConnectionSensor{code}
>  
> But I still can't reproduce this problem, My leader want to locate the 
> problem as much as possible before trying on the prod environment, such as 
> updating the version, modifying session close to 
> future.getSession().close(true) and wait().
> ps: The heap.prof  file cannot be uploaded as it exceeds 60MB.  this is a 
> google drive link: 
> [https://drive.google.com/file/d/14UBnhAF-7sdfYJsh7FMfKxx-dm0BqU9t/view?usp=drive_link]
> !image-2024-01-08-16-53-27-846.png!
> !image-2024-01-08-16-54-02-222.png!
> !image-2024-01-08-16-58-34-700.png!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org
For additional commands, e-mail: dev-h...@mina.apache.org

Reply via email to