the issue is that the error condition which pool_pre_ping tests is not
implemented within the Sybase dialect as a so-called "disconnect"
error.    This is part of the larger issue that the Sybase dialect is
not supported right now.   if you are interested in doing some
maintenance I can set you up with that but ideally the Sybase dialect
would be externally maintained as its own project.


On Tue, Feb 19, 2019 at 12:36 PM Shakim Mohammed
<[email protected]> wrote:
>
> Hello,
>
> My use is case to make sure that the sqlalchemy process does not raise 
> exception(or 500) after the backend database reboots.
>
> I tried using pool_pre_ping = True config to get things done but I am getting 
> a different error after the reboot happens
>
> My configuration are:
> SqlAlchemy = 1.2.17
> FlaskSqlAlchemy = 2.1
> Flask = 0.9
> Bakend Database = Sybase
> python-sybase = 0.39
>
> Most of the sqlalchemy configuration other then pool_pre_ping=True is set to 
> default.
>
> Here are the logs. Please let me know if there is anything I am doing it 
> incorrectly
>
> Error: myapp.flask_sqlalchemy_model_init: Exception on /resources/search [GET]
> Traceback (most recent call last):
>     File "/sw/external/flask-py27-0.9/lib/python/flask/app.py", line 1687, in 
> wsgi_app
>         response = self.full_dispatch_request()
>     File "/sw/external/flask-py27-0.9/lib/python/flask/app.py", line 1360, in 
> full_dispatch_request
>         rv = self.handle_user_exception(e)
>     File "/sw/external/flask-py27-0.9/lib/python/flask/app.py", line 1358, in 
> full_dispatch_request
>         rv = self.dispatch_request()
>     File "/sw/external/flask-py27-0.9/lib/python/flask/app.py", line 1344, in 
> dispatch_request
>         return self.view_functions[rule.endpoint](**req.view_args)
>     File "/home/user/myapp/resource.py", line 44 in search_resources
>         result = db.engine.execute(sql).fetchall()
>     File 
> "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/engine/base.py", line 
> 2143, in execute
>         connection = self.contextual_connect(close_with_result=True)
>     File 
> "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/engine/base.py", line 
> 2192, in contextual_connect
>         self._wrap_pool_connect(self.pool.connect, None),
>     File 
> "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/engine/base.py", line 
> 2232, in _wrap_pool_connect
>         e, dialect, self
>     File 
> "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/engine/base.py", line 
> 1528, in _handle_dbapi_exception_noconnection
>         util.raise_from_cause(sqlalchemy_exception, exc_info)
>     File 
> "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/util/compat.py", line 
> 296, in raise_from_clause
>         reraise(type(exception), exception, tb=exc_tb, cause=cause)
>     File 
> "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/engine/base.py", line 
> 2228, in _wrap_pool_connect
>         return fn()
>     File "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/pool.py", line 
> 425, in connect
>         return _ConnectionFairy._checkout(self)
>     File "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/pool.py", line 
> 853, in _checkout
>         result = pool._dialect.do_ping(fairy.connection)
>     File 
> "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/engine/default.py", 
> line 505, in do_ping
>         cursor.close()
>     File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 431, in 
> close
>         self._reset()
>     File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 327, in 
> _reset
>         self._close_ct_cursor
>     File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 438, in 
> _close_ct_cursor
>         status = self._cmd.ct_cursor(CS_CURSOR_CLOSE)
>     File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 250, in 
> _clientmsg_cb
>         raise DatbaseError(msg)
>     DatabaseError: (Sybase.DatabaseError) Layer: 1, Origin: 1
>     ct_cursor(): user api layer: external error: The connection has been 
> marked dead.
>
>     Exception Sybase.DatabaseError: DatabaseError('Layer: 1, Origin: 
> 1\\nct_cmd_drop(): user api layer: external error: The connection has been 
> marked dead.',) in <bound method Cursor.__del__ of <Sybase.Cursor intance at 
> 0x7f9ee88477e8>> ignored
>     ERROR:sqlalchemy.pool.QueuePool:Exception during reset or similar
>     Traceback (most recent call last):
>     File "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/pool.py", line 
> 742, in _finalize_fairy
>         fairy._reset(pool)
>     File "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/pool.py", line 
> 929, in _reset
>         pool._dialect.do_rollback(self)
>     File 
> "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/engine/default.py", 
> line 486, in do_rollback
>         dbapi_connection.rollback(self)
>     File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 1010, 
> in rollback
>         self.execute('rollback transaction')
>     File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 1033, 
> in execute
>         cursor = self.cursor()
>     File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 1019, 
> in cursor
>         return Cursor(self, inputmap, outputmap)
>     File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 321, in 
> __init_-
>         status, self._cmd = self._owner._conn.ct_cmd_alloc()
>     File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 250, in 
> _clientmsg_cb
>         raise DatabaseError(msg)
>     DatabaseError: Layer: 1, Origin: 1
>     ct_cmd_alloc(): user api layer: external error: The connection has been 
> marked dead
>
>     ERROR:sqlalchemy.pool.QueuePool:Exception closing connection 
> <Sybase.Connection instance at 0x7f9ee87fcb90>
>     Traceback (most recent call last):
>         File "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/pool.py", 
> line 333, in _close_connection
>             self._dialect.do_close(connection)
>         File 
> "/sw/external/sqlalchemy-1.2.17/lib/python/sqlalchemy/engine/default.py", 
> line 492, in do_close
>             dbapi_connection.close()
>         File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 
> 955, in close
>             status = conn.ct_cancel(CS_CANCEL_ALL)
>         File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 
> 250, in _clientmsg_cb
>             raise DatabaseError(msg)
>     DatabaseError: Layer: 5, Origin: 3
>     ct_cancel(): network packet layer: internal net library error: 
> Net-Library operation terminated due to disconnect
>
>     mod_wsgi (pid=18201): Exception occured processing WSGI script
>     Traceback (most recent call last):
>         File "/sw/external/wekzeug-py27-0.8.3/lib/python/werkzeug/wsgi.py", 
> line 513, in next
>             return self._next()
>         File 
> "/sw/external/wekzeug-py27-0.8.3/lib/python/werkzeug/wrappers.py", line 829, 
> in iter_encoded
>             for item in self.response:
>         File "/sw/external/wekzeug-py27-0.8.3/lib/python/werkzeug/wsgi.py", 
> line 513, in next
>             return self._next()
>         File 
> "/sw/external/wekzeug-py27-0.8.3/lib/python/werkzeug/wrappers.py", line 829, 
> in iter_encoded
>             for item in self.response:
>         File "/sw/external/python-sybase-0.39/lib/python/Sybase.py", line 
> 250, in _clientmsg_cb
>             raise DatabaseError(msg)
>     DatabaseError: Layer: 1, Origin: 1
>     ct_cmd_drop(): user api layer: external error: The connection has been 
> marked dead
>
> --
> SQLAlchemy -
> The Python SQL Toolkit and Object Relational Mapper
>
> http://www.sqlalchemy.org/
>
> To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description.
> ---
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to