)]}'
{"oslo/db/sqlalchemy/session.py":[{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"d0d4006dea9fa663c13da826726a10b2d1843312","unresolved":false,"context_lines":[{"line_number":645,"context_line":"    engine \u003d sqlalchemy.create_engine(sql_connection, **engine_args)"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"    if thread_checkin:"},{"line_number":648,"context_line":"        sqlalchemy.event.listen(engine, \u0027checkin\u0027, _thread_yield)"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    if engine.name in (\u0027ibm_db_sa\u0027, \u0027mysql\u0027, \u0027postgresql\u0027):"},{"line_number":651,"context_line":"        ping_callback \u003d functools.partial(_ping_listener, engine)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_28222752","line":648,"updated":"2014-05-15 12:22:19.000000000","message":"As this is greenthreeds specific line, it should be called only when greenthreads is used. Is it possible that greenthread is used, but we shouldn\u0027t listening for \"checkin\"? \n\nI think we need a universal check to indicate is greenthread used. Bool attribute it is to flexibly. It could be passed when it is not needed or not passed when it is needed.","commit_id":"792bcc60670ec9f969c48ba6ec50e8a644c3940b"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"e3afc8d9aafd0b66ff9f519c6e9efa8e6c412b1d","unresolved":false,"context_lines":[{"line_number":645,"context_line":"    engine \u003d sqlalchemy.create_engine(sql_connection, **engine_args)"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"    if thread_checkin:"},{"line_number":648,"context_line":"        sqlalchemy.event.listen(engine, \u0027checkin\u0027, _thread_yield)"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    if engine.name in (\u0027ibm_db_sa\u0027, \u0027mysql\u0027, \u0027postgresql\u0027):"},{"line_number":651,"context_line":"        ping_callback \u003d functools.partial(_ping_listener, engine)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_341c6477","line":648,"in_reply_to":"7adec928_240aa4d2","updated":"2014-05-23 13:37:25.000000000","message":"It might be tempting to introduce an automatic check here, but I\u0027d rather we use an explicit boolean flag instead due to the following reasons:\n\n1. Even though socket module is patched most of the times, thread is not. Strictly speaking it\u0027s not required to patch socket when you use eventlet either - you can import and use \u0027green\u0027 version of the module, so the check would fail.\n\n2. When green threads are used, yielding of the execution context to another green thread on a db connection checkin is not required. We\u0027ve been carrying this callback only due to limitations of mysqldb-python DB API driver (written in C, socket read/writes can not be monkey patched). E.g., psycopg2 works just fine.\n\nThe bottom line is: I like the idea of passing the boolean flag explicitly here (and True seems to be a reasonable default value as most services/deploys use MySQL + eventlet + MySQLdb-python). Though, I think, this should be wired up to EngineFacade as we don\u0027t usually create an Engine instance directly, but rather use EngineFacade helper class for that.","commit_id":"792bcc60670ec9f969c48ba6ec50e8a644c3940b"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"9b6e30003404cd77587f033a497079e215114e0f","unresolved":false,"context_lines":[{"line_number":645,"context_line":"    engine \u003d sqlalchemy.create_engine(sql_connection, **engine_args)"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"    if thread_checkin:"},{"line_number":648,"context_line":"        sqlalchemy.event.listen(engine, \u0027checkin\u0027, _thread_yield)"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    if engine.name in (\u0027ibm_db_sa\u0027, \u0027mysql\u0027, \u0027postgresql\u0027):"},{"line_number":651,"context_line":"        ping_callback \u003d functools.partial(_ping_listener, engine)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_240aa4d2","line":648,"in_reply_to":"7adec928_28222752","updated":"2014-05-22 02:48:31.000000000","message":"Agreed that it would be great to determine this automatically.\n\nSo there is a eventlet.patcher.is_monkey_patched but I\u0027m wondering what module we should check for being patched, the socket one? The thread module? Some other one?","commit_id":"792bcc60670ec9f969c48ba6ec50e8a644c3940b"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"ac678f196cf359a1362713169a82e9c77d15214b","unresolved":false,"context_lines":[{"line_number":828,"context_line":"                              (setting -1 implies an infinite retry count)"},{"line_number":829,"context_line":"                              (defaults to 10)"},{"line_number":830,"context_line":"        :keyword retry_interval: interval between retries of opening a sql"},{"line_number":831,"context_line":"                                 connection (defaults to 10)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"        \"\"\""},{"line_number":834,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_8df3c372","line":831,"updated":"2014-05-30 08:46:08.000000000","message":"nit: please document the new parameter you are adding","commit_id":"bedea1af1a5a7732b5d1b6d98bf078a6a4bdac17"}]}
