[ 
https://issues.apache.org/jira/browse/IGNITE-2643?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15148539#comment-15148539
 ] 

ASF GitHub Bot commented on IGNITE-2643:
----------------------------------------

GitHub user isapego opened a pull request:

    https://github.com/apache/ignite/pull/487

    IGNITE-2643: Removed ODBC memory leak. Added 
maxConcurrentCursorsPerConnection param to OdbcConfiguration.

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/isapego/ignite ignite-2643

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/ignite/pull/487.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #487
    
----
commit feb8350d0ae40a6e98cf4b911ab16c85ed0f659a
Author: isapego <[email protected]>
Date:   2016-02-15T18:23:31Z

    IGNITE-2627: Removed OdbcNioParser. Using GridBufferedParser for message
    separation. Message parsing moved to OdbcNioListener.

commit c16549cd8866929b7974c18c867954a4c8c2504a
Author: isapego <[email protected]>
Date:   2016-02-15T19:26:09Z

    Merge branch 'ignite-1786' into ignite-2627

commit a7ffce07a455e34fe65609476b10ab5ef282d898
Author: isapego <[email protected]>
Date:   2016-02-16T09:40:32Z

    IGNITE-2627: Removed unused code.

commit 65b493891847b2318d272f70e0034058e7987130
Author: isapego <[email protected]>
Date:   2016-02-16T12:00:12Z

    IGNITE-2643: Moved OdbcRequestHandler to connection meta.

commit 3ddddad213b9e648011fe7a60d4441734bc58685
Author: isapego <[email protected]>
Date:   2016-02-16T12:14:40Z

    IGNITE-2643: Moved shutdown locking to OdbcRequestHandler.

commit 6dcf4a1c47ed55c46cba8c9a559e7a3be8f985ea
Author: isapego <[email protected]>
Date:   2016-02-16T12:46:13Z

    IGNITE-2643: Added maxConcurrentCursorsPerConnection param to
    OdbcConfiguration.

----


> ODBC: Potential memory leak during client disconnect.
> -----------------------------------------------------
>
>                 Key: IGNITE-2643
>                 URL: https://issues.apache.org/jira/browse/IGNITE-2643
>             Project: Ignite
>          Issue Type: Sub-task
>          Components: odbc
>    Affects Versions: 1.5.0.final
>            Reporter: Vladimir Ozerov
>            Assignee: Igor Sapego
>            Priority: Critical
>             Fix For: 1.6
>
>
> *Problem*
> When client executes a query, we preserve the cursor in concurrent 
> collection. This could lead to two potential problems:
> 1) If problem disconnected abruptly, cursor gets stuck forever => memory leak.
> 2) Malicious client could flood us with requests which are never closed until 
> node is out-of-memory.
> *Proposed solution*
> 1) When onDisconnect() callback is triggered, all pending client queries must 
> be released. To achieve this it is better to move "OdbcNioListener.qryCurs" 
> to session meta.
> 2) When new request is to be created, we must ensure that concurrent 
> disconnect is not in progress. Otherwise, we might end up in a leak again. To 
> achieve this, lets guard "add" logic with read-write lock.
> 3) Lets think about "max-concurrent-cursors-per-connection" property. It 
> could be available from OdbcConfiguration. Once number of opened cursors is 
> exceeded, we must throw an error to the client.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to