datagrepper icon indicating copy to clipboard operation
datagrepper copied to clipboard

Invalid transaction

Open ralphbean opened this issue 8 years ago • 0 comments

Sometimes, datagrepper gets borked and starts returning these:

{"detail":"Can't reconnect until invalid transaction is rolled back (original cause: InvalidRequestError: Can't reconnect until invalid transaction is rolled back) u'SELECT messages.id AS messages_id, messages.msg_id AS messages_msg_id, messages.i AS messages_i, messages.topic AS messages_topic, messages.timestamp AS messages_timestamp, messages.certificate AS messages_certificate, messages.signature AS messages_signature, messages.category AS messages_category, messages.username AS messages_username, messages.crypto AS messages_crypto, messages.source_name AS messages_source_name, messages.source_version AS messages_source_version, messages._msg AS messages__msg, messages._headers AS messages__headers \\nFROM messages \\nWHERE messages.msg_id = %(msg_id_1)s \\n LIMIT %(param_1)s' [immutabledict({})]","error":"internal_error","traceback":"Traceback (most recent call last):\n  File \"/usr/lib/python2.7/site-packages/flask/app.py\", line 1817, in wsgi_app\n    response = self.full_dispatch_request()\n  File \"/usr/lib/python2.7/site-packages/flask/app.py\", line 1477, in full_dispatch_request\n    rv = self.handle_user_exception(e)\n  File \"/usr/lib/python2.7/site-packages/flask/app.py\", line 1381, in handle_user_exception\n    reraise(exc_type, exc_value, tb)\n  File \"/usr/lib/python2.7/site-packages/flask/app.py\", line 1475, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/lib/python2.7/site-packages/flask/app.py\", line 1461, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"/usr/lib/python2.7/site-packages/datagrepper/app.py\", line 420, in msg_id\n    msg = dm.Message.query.filter_by(msg_id=flask.request.args['id']).first()\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py\", line 2367, in first\n    ret = list(self[0:1])\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py\", line 2228, in __getitem__\n    return list(res)\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py\", line 2438, in __iter__\n    return self._execute_and_instances(context)\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/orm/query.py\", line 2453, in _execute_and_instances\n    result = conn.execute(querycontext.statement, self._params)\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py\", line 729, in execute\n    return meth(self, multiparams, params)\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/sql/elements.py\", line 322, in _execute_on_connection\n    return connection._execute_clauseelement(self, multiparams, params)\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py\", line 826, in _execute_clauseelement\n    compiled_sql, distilled_params\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py\", line 893, in _execute_context\n    None, None)\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py\", line 1159, in _handle_dbapi_exception\n    exc_info\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/util/compat.py\", line 199, in raise_from_cause\n    reraise(type(exception), exception, tb=exc_tb)\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py\", line 887, in _execute_context\n    conn = self._revalidate_connection()\n  File \"/usr/lib64/python2.7/site-packages/sqlalchemy/engine/base.py\", line 242, in _revalidate_connection\n    \"Can't reconnect until invalid \"\nStatementError: Can't reconnect until invalid transaction is rolled back (original cause: InvalidRequestError: Can't reconnect until invalid transaction is rolled back) u'SELECT messages.id AS messages_id, messages.msg_id AS messages_msg_id, messages.i AS messages_i, messages.topic AS messages_topic, messages.timestamp AS messages_timestamp, messages.certificate AS messages_certificate, messages.signature AS messages_signature, messages.category AS messages_category, messages.username AS messages_username, messages.crypto AS messages_crypto, messages.source_name AS messages_source_name, messages.source_version AS messages_source_version, messages._msg AS messages__msg, messages._headers AS messages__headers \\nFROM messages \\nWHERE messages.msg_id = %(msg_id_1)s \\n LIMIT %(param_1)s' [immutabledict({})]\n"}

An apachectl graceful gets it going again.

Datagrepper should get some kind of logic to renew its sessions correctly when they go stale like this.

ralphbean avatar Dec 01 '17 15:12 ralphbean