Thank you Mike!

That's very useful. I can see which engine & worker is emitting each SQL 
statement (I had to bypass the usage of 'pyramid_celery` so all logging 
settings would "stick").

*Is there a way to identify every engine instance?*

*Every celery worker is creating its own engines-sessions dual pair but 
there are 8 concurrent workers.*

I see some Pool messages but I am unable to get anything useful from them.

Here is the log preceding the TransactionRollbackError:

[2018-06-25 12:51:30,373: WARNING/Worker-2] 
[p2server.celery_tasks.generate_version(dfad02fa-1282-460e-85a2-720436f7f9d8)] 
p2server.celery_tasks CHECKPOINT 
'p2server.celery_tasks.generate_version'['dfad02fa-1282-460e-85a2-720436f7f9d8']
 
UT:3 'started'


[2018-06-25 12:51:30,473: WARNING/Worker-2] celery.redirected 
/Users/henddher/.pyenv/versions/3.6.3/envs/p2server_py36/lib/python3.6/site-packages/psycopg2/__init__.py:144:
 
UserWarning: The psycopg2 wheel package will be renamed from release 2.8; 
in order to keep installing from binary please use "pip install 
psycopg2-binary" instead. For details see: 
<http://initd.org/psycopg/docs/install.html#binary-install-from-pypi>.

  """)


... tons of sqlalchemy.mapper logs from same Worker-2 ...


[2018-06-25 12:51:31,200: INFO/Worker-2] 
[p2server.celery_tasks.generate_version(dfad02fa-1282-460e-85a2-720436f7f9d8)] 
sqlalchemy.engine.base.Engine.checkpoint-engine select version()


... rest of boilerplate SQL at transaction start checkpoint-engine ...


[2018-06-25 12:51:31,213: INFO/Worker-2] 
[p2server.celery_tasks.generate_version(dfad02fa-1282-460e-85a2-720436f7f9d8)] 
sqlalchemy.engine.base.Engine.checkpoint-engine BEGIN (implicit)


[2018-06-25 12:51:31,214: INFO/Worker-2] 
[p2server.celery_tasks.generate_version(dfad02fa-1282-460e-85a2-720436f7f9d8)] 
sqlalchemy.engine.base.Engine.checkpoint-engine SELECT usertransactions.id 


[2018-06-25 12:51:31,218: INFO/Worker-2] 
[p2server.celery_tasks.generate_version(dfad02fa-1282-460e-85a2-720436f7f9d8)] 
sqlalchemy.engine.base.Engine.checkpoint-engine UPDATE usertransaction ... 


[2018-06-25 12:51:31,220: INFO/Worker-2] 
[p2server.celery_tasks.generate_version(dfad02fa-1282-460e-85a2-720436f7f9d8)] 
sqlalchemy.engine.base.Engine.checkpoint-engine COMMIT


# domain model stuff after checkpoint 'started' is done and commit


[2018-06-25 12:51:31,232: INFO/Worker-2] 
[p2server.celery_tasks.generate_version(dfad02fa-1282-460e-85a2-720436f7f9d8)] 
sqlalchemy.engine.base.Engine.normal-engine select version()


... rest of boilerplate SQL at transaction start normal-engine (aka DOMAIN 
MODEL): current_schema, SELECT CAST ...


### Meanwhile, Worker-3 is doing its thing with its own checkpoint-engine 
and normal-engine about to trigger Concurrent Update


# Worker-2 starts to log 'failed' checkpoint


[2018-06-25 12:51:35,374: WARNING/Worker-2] 
[p2server.celery_tasks.generate_version(dfad02fa-1282-460e-85a2-720436f7f9d8)] 
p2server.celery_tasks 

CHECKPOINT 
'p2server.celery_tasks.generate_version'['dfad02fa-1282-460e-85a2-720436f7f9d8']
 
UT:3 'failed'


... EXCEPTION STACK TRACE ...

sqlalchemy.exc.OperationalError: (raised as a result of Query-invoked 
autoflush; consider using a session.no_autoflush block if this flush is 
occurring prematurely) (psycopg2.extensions.TransactionRollbackError) could 
not serialize access due to concurrent update


[2018-06-25 12:51:35,413: WARNING/Worker-2] celery.redirected 2018-06-25 
12:51:35,413 INFO sqlalchemy.pool.QueuePool Pool disposed. Pool size: 5  
Connections 
in pool: 0 Current Overflow: -5 Current Checked out connections: 0

[2018-06-25 12:51:35,413: INFO/Worker-2] 
[p2server.celery_tasks.generate_version(dfad02fa-1282-460e-85a2-720436f7f9d8)] 
sqlalchemy.pool.QueuePool Pool disposed. Pool size: 5  Connections in pool: 
0 Current Overflow: -5 Current Checked out connections: 0

[2018-06-25 12:51:35,414: WARNING/Worker-2] celery.redirected 2018-06-25 
12:51:35,414 INFO sqlalchemy.pool.QueuePool Pool recreating

[2018-06-25 12:51:35,414: INFO/Worker-2] 
[p2server.celery_tasks.generate_version(dfad02fa-1282-460e-85a2-720436f7f9d8)] 
sqlalchemy.pool.QueuePool Pool recreating



Notice that in this log, there is no UPDATE, COMMIT, ROLLBACK  for 
Worker-2. Only pool disposed message after the exception stack trace.  This 
makes me wonder if the previous logs showing ROLLBACK and whatnot came from 
other workers.












-- 
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