Vladimir Ozerov created IGNITE-2643: ---------------------------------------
Summary: 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)