[
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)