Non psycopg2 exception can lock connection #79

Closed
nxsofsys opened this Issue Nov 15, 2014 · 1 comment

Projects

None yet

2 participants

@nxsofsys

For example I have code like this and only one connection in pool:

        try:
            cursor = yield momoko.Op(self.db.execute, 'SELECT %s FROM %s'
                ,()) # rises TypeError
        except Exception as e:
            print e
            cursor = yield momoko.Op(self.db.execute, 'SELECT 1'
                ,())
            print 'Done' #unreachable

This code rises TypeError, but second query can't obtain connection.
Debug log is:

[D 141115 18:00:26 connection:234] Connection attempt complete. Success: True
[D 141115 18:00:31 connection:252] Getting connection
[D 141115 18:00:31 connection:327] Connection obtained, proceeding
tuple index out of range
[D 141115 18:00:31 connection:252] Getting connection
[D 141115 18:00:31 connection:272] There are busy connections
[D 141115 18:00:31 connection:321] No connection available right now - will try again later

Changing psycopg2.Error to Exception in _catch_early_errors decorator fixes that issue, but I not sure that it right.

@haizaar haizaar added a commit that closed this issue Nov 16, 2014
@haizaar haizaar Catching ALL types of early error. Fixes #79.
Its important to catch any type of early error and pass
it back properly to give inner callback a chance to return
connection back to free pool.

Signed-off-by: Zaar Hai <haizaar@haizaar.com>
b15c2c2
@haizaar haizaar closed this in b15c2c2 Nov 16, 2014
@haizaar
Collaborator
haizaar commented Nov 16, 2014

Thanks for the bug report and suggestion for the fix!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment