On Mon, Apr 15, 2019 at 5:41 AM tonthon <tontho...@gmail.com> wrote:
>
> I tried to set a lower value for the pool_recycle value and it seems to work.
>
> There is a celery service running in the background, maybe it could affect 
> the session management.

this will reduce the problem but the architectural issue that is
causing it is likely still present.     I'd want to look at how the
interaction with Celery is occurring within the same process.


>
> Le 12/04/2019 à 15:58, Mike Bayer a écrit :
>
> it's likely that a database connection is being returned to the pool
> in an invalid state.
>
> Switching to NullPool temporarily might reveal that this solves all
> the issues ; at the very least, I would try setting pool_recycle to a
> low number, like 5 minutes, however this won't prevent the problem,
> just make it less likely.   What you do need to find are stack traces
> that precede the error, to give a clue why a connection would be
> placed in the pool in a bad state.
>
> The other possibility is that your application is actually sharing a
> single connection across threads in some way which would be a
> different problem though with a lot of similar behaviors.   Are there
> any global in-memory caches being used of objects where an ORM object
> might be shared out among threads, or a background worker thread of
> some kind, anything like that ?    Does the application use a
> "scoped_session" pattern and maybe the session being passed around in
> some cases isn't actually scoped?
>
>
> On Fri, Apr 12, 2019 at 4:03 AM tonthon <tontho...@gmail.com> wrote:
>
> Le 10/04/2019 à 17:12, Mike Bayer a écrit :
>
> On Wed, Apr 10, 2019 at 9:23 AM tonthon <tontho...@gmail.com> wrote:
>
> Hi,
>
> We're using sqlalchemy in a Pyramid Web Application.
>
> We use the ZopeTransactionExtension and our session factory is initialized 
> this way :
>
> DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
>
> We use the pyramid_tm that wraps each web requests in a transaction.
>
> Our services are served through apache and mod_wsgi (1 process, 10 threads).
>
>
> We recently faced the following error :
>
> 193.253.40.35 - 2019-04-08 09:29:23,054 ERROR Exception during reset or 
> similar ([sqlalchemy.pool.QueuePool._finalize_fairy:721])
> Traceback (most recent call last):
>   File 
> "/var/www/autonomie/local/lib/python2.7/site-packages/sqlalchemy/pool.py", 
> line 712, in _finalize_fairy
>     fairy._reset(pool)
>   File 
> "/var/www/autonomie/local/lib/python2.7/site-packages/sqlalchemy/pool.py", 
> line 881, in _reset
>     self._reset_agent.rollback()
>   File 
> "/var/www/autonomie/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py",
>  line 1632, in rollback
>     self._do_rollback()
>   File 
> "/var/www/autonomie/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py",
>  line 1670, in _do_rollback
>     self.connection._rollback_impl()
>   File 
> "/var/www/autonomie/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py",
>  line 706, in _rollback_impl
>     self._handle_dbapi_exception(e, None, None, None, None)
>   File 
> "/var/www/autonomie/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py",
>  line 1413, in _handle_dbapi_exception
>     exc_info
>   File 
> "/var/www/autonomie/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py",
>  line 265, in raise_from_cause
>     reraise(type(exception), exception, tb=exc_tb, cause=cause)
>   File 
> "/var/www/autonomie/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py",
>  line 704, in _rollback_impl
>     self.engine.dialect.do_rollback(self.connection)
>   File 
> "/var/www/autonomie/local/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/base.py",
>  line 1804, in do_rollback
>     dbapi_connection.rollback()
> ProgrammingError: (_mysql_exceptions.ProgrammingError) (2014, "Commands out 
> of sync; you can't run this command now") (Background on this error at: 
> http://sqlalche.me/e/f405)
>
>
> I can't reproduce this problem that seems to happen randomly.
>
> Could anyone help me giving some points to investigate ?
>
> Is there some tuning to do (I already set the pool_recycle var) ?
>
> the most important thing is what driver are you using and what version?
>
> are you doing anything with SAVEPOINTs or greenlets / eventlet ?
>
> is the web application experiencing timeouts of some kind, such that
> transactions are being dropped ?
>
> is the above error only showing up in logs or is it occurring
> synchronously with a web request and causing the request to fail ?
>
>
> We use mysqlclient 1.4.1.
>
> We don't use any greenlet or eventlet nor savepoints.
>
> I havn't seen any timeout happening so far.
>
> The given error is happening during the request's lifecycle resulting in a 
> HTTP 500 error code
>
> After the error, the user refreshes and it works.
>
> I don't know if it could be related, but we also see things like 
> "NoSuchColumnError: "Could not locate column in row for column 'count(*)'".
>
>
>
> Thanks in advance
>
> Best regards
>
> Gaston
>
> --
> 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 sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> 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 sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> 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 sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> 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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to