Isolation threads not safe... Project CONPY Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12 version conpy: mariadb 1.1.10 using mode: thread_handling = pool-of-threads A flask webapp, using mariadb.ConnectionPool for pooling connection http server : gunicorn (10 workers and with threads class of worker (gevent or gthread) ) - for each worker, and instance of my webapp is created. - each instance create a pool (mariadb.ConnectionPool) named 'poolName_' + worker.pid, on the same DB with the same user. worker1 ->- pool1 ->>-- connections 1,2,3,4,5,6,7,8,9,10 worker2 ->- pool2 ->>-- connections 11,12,13,14,15,16,17,18,19,20 worker3 ->- pool3 ->>-- connections 21,22,23,24,25,26,27,28,29,30 so worker1 calling pool1.get-connection should return only connections 1,2,3,4,5,6,7,8,9,10 When looking to my logs i can see that : 1/ calling dbpool.get_connection() return an connection from other pool!! worker2 ->- pool2 ->>-- connections 1,3,8,12,21,22,15 worker3 ->- pool3 ->>-- connections 2,3,12,25 ccl: pools share connections 2/pool object are used by different workers (you can say its a flask pb) worker2 ->- pool2 worker3 ->- pool2 ccl: workers share pools Is it a bug or a feature? is it a problem for production use? log worker pool and connection are folowed by their id. on teardown i close the db (release to the pool) (.venv) admin@mynode:~/webapp$$ gunicorn -w 3 -k gevent -c gunicorn_conf.py -b 0.0.0.0:8001 webapp:wsgiapp [2025-01-29 17:07:46 +0000] [2612171] [INFO] Starting gunicorn 23.0.0 [2025-01-29 17:07:46 +0000] [2612171] [INFO] Listening at: http://0.0.0.0:8001 (2612171) [2025-01-29 17:07:46 +0000] [2612171] [INFO] Using worker: gevent [2025-01-29 17:07:46 +0000] [2612192] [INFO] Booting worker with pid: 2612192 [2025-01-29 17:07:46 +0000] [2612195] [INFO] Booting worker with pid: 2612195 [2025-01-29 17:07:46 +0000] [2612203] [INFO] Booting worker with pid: 2612203 set_cached 4 man@oze22222 ->Create_dbpool id=(140700283773840) name= poolName_2612195 size=6 user=webappdev host=localhost get_db_cnx_from_pool CREATE DBPOOL: worker: 2612195 dbpool: (140700283773840) get_db_cnx_from_pool NEXCNX : worker: 2612195 dbpool: (140700283773840) Newcnx: (140700274546384) Poolcnx(teardown):db.close()140700274546384[e256d0>] set_cached 4 man@oze22222 ->Create_dbpool id=(140700283773840) name= poolName_2612203 size=6 user=webappdev host=localhost get_db_cnx_from_pool CREATE DBPOOL: worker: 2612203 dbpool: (140700283773840) get_db_cnx_from_pool NEXCNX : worker: 2612203 dbpool: (140700283773840) Newcnx: (140700274562768) Poolcnx(teardown):db.close()140700274562768[e296d0>] set_cached 10 Lucsemb ->Create_dbpool id=(140700274271120) name= poolName_2612192 size=6 user=webappdev host=localhost get_db_cnx_from_pool CREATE DBPOOL: worker: 2612192 dbpool: (140700274271120) get_db_cnx_from_pool NEXCNX : worker: 2612192 dbpool: (140700274271120) Newcnx: (140700274546384) Poolcnx(teardown):db.close()140700274546384[e256d0>] set_cached 10 Lucsemb get_db_cnx_from_pool NEXCNX : worker: 2612195 dbpool: (140700283773840) Newcnx: (140700274546704) Poolcnx(teardown):db.close()140700274546704[e25810>] set_cached 4 man@oze22222 get_db_cnx_from_pool NEXCNX : worker: 2612192 dbpool: (140700274271120) Newcnx: (140700274546704) Poolcnx(teardown):db.close()140700274546704[e25810>] set_cached 10 Lucsemb get_db_cnx_from_pool NEXCNX : worker: 2612195 dbpool: (140700283773840) Newcnx: (140700274547024) Poolcnx(teardown):db.close()140700274547024[e25950>] set_cached 4 man@oze22222 get_db_cnx_from_pool NEXCNX : worker: 2612192 dbpool: (140700274271120) Newcnx: (140700274547024) Poolcnx(teardown):db.close()140700274547024[e25950>] set_cached 10 Lucsemb get_db_cnx_from_pool NEXCNX : worker: 2612195 dbpool: (140700283773840) Newcnx: (140700274547344) Poolcnx(teardown):db.close()140700274547344[e25a90>] set_cached 4 man@oze22222 get_db_cnx_from_pool NEXCNX : worker: 2612195 dbpool: (140700283773840) Newcnx: (140700274547664) Poolcnx(teardown):db.close()140700274547664[e25bd0>] set_cached 10 Lucsemb get_db_cnx_from_pool NEXCNX : worker: 2612192 dbpool: (140700274271120) Newcnx: (140700274547344) Poolcnx(teardown):db.close()140700274547344[e25a90>] set_cached 4 man@oze22222 get_db_cnx_from_pool NEXCNX : worker: 2612195 dbpool: (140700283773840) Newcnx: (140700274547984) Poolcnx(teardown):db.close()140700274547984[e25d10>] set_cached 10 Lucsemb get_db_cnx_from_pool NEXCNX : worker: 2612192 dbpool: (140700274271120) Newcnx: (140700274547664) Poolcnx(teardown):db.close()140700274547664[e25bd0>] set_cached 4 man@oze22222 get_db_cnx_from_pool NEXCNX : worker: 2612203 dbpool: (140700283773840) Newcnx: (140700274563088) Poolcnx(teardown):db.close()140700274563088[e29810>] set_cached 10 Lucsemb get_db_cnx_from_pool NEXCNX : worker: 2612192 dbpool: (140700274271120) Newcnx: (140700274547984) Poolcnx(teardown):db.close()140700274547984[e25d10>] set_cached 4 man@oze22222 get_db_cnx_from_pool NEXCNX : worker: 2612195 dbpool: (140700283773840) Newcnx: (140700274546384) Poolcnx(teardown):db.close()140700274546384[e256d0>] set_cached 10 Lucsemb get_db_cnx_from_pool NEXCNX : worker: 2612192 dbpool: (140700274271120) Newcnx: (140700274546384) Poolcnx(teardown):db.close()140700274546384[e256d0>] set_cached 4 man@oze22222 get_db_cnx_from_pool NEXCNX : worker: 2612195 dbpool: (140700283773840) Newcnx: (140700274546704) Poolcnx(teardown):db.close()140700274546704[e25810>] set_cached 10 Lucsemb get_db_cnx_from_pool NEXCNX : worker: 2612192 dbpool: (140700274271120) Newcnx: (140700274546704) Poolcnx(teardown):db.close()140700274546704[e25810>]