ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vladimir Ozerov (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-2643) ODBC: Potential memory leak during client disconnect.
Date Fri, 12 Feb 2016 14:15:18 GMT
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

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

View raw message