DisconnectionError not raised by storm on 'OperationalError: terminating connection due to administrator command'

Bug #947455 reported by Cody A.W. Somerville
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Storm
Fix Released
Undecided
Unassigned

Bug Description

DisconnectionError not raised by storm on 'OperationalError: terminating connection due to administrator command'.

Revision history for this message
Stuart Bishop (stub) wrote :

>>> import storm
>>> storm.version
'0.18'
>>> from storm.locals import *
>>> database = create_database('postgres:stub')
>>> store = Store(database)
>>> store.execute('select true').get_one()[0]
True
>>> store.execute('select pg_terminate_backend(pg_backend_pid())')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/storm/store.py", line 108, in execute
    return self._connection.execute(statement, params, noresult)
  File "/usr/lib/python2.7/dist-packages/storm/databases/postgres.py", line 249, in execute
    return Connection.execute(self, statement, params, noresult)
  File "/usr/lib/python2.7/dist-packages/storm/database.py", line 237, in execute
    raw_cursor = self.raw_execute(statement, params)
  File "/usr/lib/python2.7/dist-packages/storm/databases/postgres.py", line 259, in raw_execute
    return Connection.raw_execute(self, statement, params)
  File "/usr/lib/python2.7/dist-packages/storm/database.py", line 321, in raw_execute
    self._check_disconnect(raw_cursor.execute, *args)
  File "/usr/lib/python2.7/dist-packages/storm/database.py", line 366, in _check_disconnect
    return function(*args, **kwargs)
psycopg2.OperationalError: terminating connection due to administrator command
FATAL: terminating connection due to administrator command

Changed in storm:
status: New → Confirmed
Revision history for this message
Stuart Bishop (stub) wrote :

>>> import storm
>>> storm.version
'0.19.0.99'
>>> from storm.locals import *
>>> database = create_database('postgres:stub')
>>> store = Store(database)
>>> store.execute('select true').get_one()[0]
True
>>> store.execute('select pg_terminate_backend(pg_backend_pid())')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "storm/store.py", line 108, in execute
    return self._connection.execute(statement, params, noresult)
  File "storm/databases/postgres.py", line 261, in execute
    return Connection.execute(self, statement, params, noresult)
  File "storm/database.py", line 238, in execute
    raw_cursor = self.raw_execute(statement, params)
  File "storm/databases/postgres.py", line 271, in raw_execute
    return Connection.raw_execute(self, statement, params)
  File "storm/database.py", line 322, in raw_execute
    self._check_disconnect(raw_cursor.execute, *args)
  File "storm/database.py", line 376, in _check_disconnect
    raise DisconnectionError(str(exc))
storm.exceptions.DisconnectionError: terminating connection due to administrator command
FATAL: terminating connection due to administrator command

Revision history for this message
Stuart Bishop (stub) wrote :

Fixed on trunk

Changed in storm:
status: Confirmed → Fix Released
Revision history for this message
Stuart Bishop (stub) wrote :

But not in the latest release...

>>> import storm
>>> storm.version
'0.19'
>>> from storm.locals import *
>>> database = create_database('postgres:stub')
>>> store = Store(database)
>>> store.execute('select true').get_one()[0]
True
>>> store.execute('select pg_terminate_backend(pg_backend_pid())')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/storm-0.19-py2.7-linux-x86_64.egg/storm/store.py", line 108, in execute
    return self._connection.execute(statement, params, noresult)
  File "/usr/local/lib/python2.7/dist-packages/storm-0.19-py2.7-linux-x86_64.egg/storm/databases/postgres.py", line 249, in execute
    return Connection.execute(self, statement, params, noresult)
  File "/usr/local/lib/python2.7/dist-packages/storm-0.19-py2.7-linux-x86_64.egg/storm/database.py", line 238, in execute
    raw_cursor = self.raw_execute(statement, params)
  File "/usr/local/lib/python2.7/dist-packages/storm-0.19-py2.7-linux-x86_64.egg/storm/databases/postgres.py", line 259, in raw_execute
    return Connection.raw_execute(self, statement, params)
  File "/usr/local/lib/python2.7/dist-packages/storm-0.19-py2.7-linux-x86_64.egg/storm/database.py", line 322, in raw_execute
    self._check_disconnect(raw_cursor.execute, *args)
  File "/usr/local/lib/python2.7/dist-packages/storm-0.19-py2.7-linux-x86_64.egg/storm/database.py", line 371, in _check_disconnect
    return function(*args, **kwargs)
psycopg2.OperationalError: terminating connection due to administrator command
FATAL: terminating connection due to administrator command

Changed in storm:
status: Fix Released → Fix Committed
milestone: none → 0.20
Changed in storm:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.