)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"ff9c763c6ea5ca4d594d2cf3a6fdabbf2072984e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adjust doc about threading"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"I updated threading doc in Nova, it also fit to manila."},{"line_number":10,"context_line":"For more details, please refer to two related commits in Nova:"},{"line_number":11,"context_line":"9885787db17956c0fdea7c5d363f90b90398255f"},{"line_number":12,"context_line":"5a173eb6643086c9888d477edcbcdb9dd4fd9814"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a89bdaa_5cd8ba7f","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":44},"updated":"2016-09-12 02:16:26.000000000","message":"fits","commit_id":"6fe0c95288dbe8adad37d37a7ce57fe885134928"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"78f4fcabb08114799566aab1baf0919bf3c9ed47","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adjust doc about threading"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"I updated threading doc in Nova, it also fit to manila."},{"line_number":10,"context_line":"For more details, please refer to two related commits in Nova:"},{"line_number":11,"context_line":"9885787db17956c0fdea7c5d363f90b90398255f"},{"line_number":12,"context_line":"5a173eb6643086c9888d477edcbcdb9dd4fd9814"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a89bdaa_1308e02c","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":44},"in_reply_to":"9a89bdaa_5cd8ba7f","updated":"2016-09-12 04:25:26.000000000","message":"Done","commit_id":"6fe0c95288dbe8adad37d37a7ce57fe885134928"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"ff9c763c6ea5ca4d594d2cf3a6fdabbf2072984e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"I updated threading doc in Nova, it also fit to manila."},{"line_number":10,"context_line":"For more details, please refer to two related commits in Nova:"},{"line_number":11,"context_line":"9885787db17956c0fdea7c5d363f90b90398255f"},{"line_number":12,"context_line":"5a173eb6643086c9888d477edcbcdb9dd4fd9814"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ifcf48cddcf52ce720ceb275cc3eb4d6be61a3ca5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a89bdaa_1c01d26a","line":12,"range":{"start_line":11,"start_character":0,"end_line":12,"end_character":40},"updated":"2016-09-12 02:16:26.000000000","message":"Could you please paste the direct link to the commits you mentioned.","commit_id":"6fe0c95288dbe8adad37d37a7ce57fe885134928"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"78f4fcabb08114799566aab1baf0919bf3c9ed47","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"I updated threading doc in Nova, it also fit to manila."},{"line_number":10,"context_line":"For more details, please refer to two related commits in Nova:"},{"line_number":11,"context_line":"9885787db17956c0fdea7c5d363f90b90398255f"},{"line_number":12,"context_line":"5a173eb6643086c9888d477edcbcdb9dd4fd9814"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ifcf48cddcf52ce720ceb275cc3eb4d6be61a3ca5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a89bdaa_3307a41d","line":12,"range":{"start_line":11,"start_character":0,"end_line":12,"end_character":40},"in_reply_to":"9a89bdaa_1c01d26a","updated":"2016-09-12 04:25:26.000000000","message":"Done","commit_id":"6fe0c95288dbe8adad37d37a7ce57fe885134928"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"1691a9ad4262e64f1cbe4de791e3023eafb522ec","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adjust doc about threading"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"I updated threading doc in Nova, it also fits to manila."},{"line_number":10,"context_line":"For more details, please refer to two related commits in Nova:"},{"line_number":11,"context_line":"https://review.openstack.org/#/c/199013/ and"},{"line_number":12,"context_line":"https://review.openstack.org/#/c/338093/"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ifcf48cddcf52ce720ceb275cc3eb4d6be61a3ca5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a8ec9b2_778e9d28","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":40},"updated":"2016-09-20 09:51:48.000000000","message":"Better to state info from your other commits here. We should not force people to search info somewhere else if it is possible and pretty easy to provide here.\n\nCommit message could be as of following:\n\"\"\"\nAdjust doc about threading\n\nThere are two ways to give other greenthread chance to run:\ngreenthread.sleep(0) or time.sleep(0). Add the second way in\nthreading.rst and recommend the second way for contributors.\n\nAlso, PyMySQL works well with eventlet [1], and it\u0027s the default MySQL DB API driver for oslo.db now[2].\nSo adjust \u0027threading model\u0027 doc with such info.\n\n[1] https://wiki.openstack.org/wiki/PyMySQL_evaluation\n[2] http://docs.openstack.org/developer/oslo.db/installation.html\n\nChange-Id: Ifcf48cddcf52ce720ceb275cc3eb4d6be61a3ca5\n\"\"\"","commit_id":"d6ae412f911c59add32540b8b7e6a094f3c2bc10"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"6b0ce14ea852cf39576a35824eb0e56d72f58cb6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adjust doc about threading"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"I updated threading doc in Nova, it also fits to manila."},{"line_number":10,"context_line":"For more details, please refer to two related commits in Nova:"},{"line_number":11,"context_line":"https://review.openstack.org/#/c/199013/ and"},{"line_number":12,"context_line":"https://review.openstack.org/#/c/338093/"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ifcf48cddcf52ce720ceb275cc3eb4d6be61a3ca5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a8ec9b2_2b9f4c60","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":40},"in_reply_to":"7a8ec9b2_778e9d28","updated":"2016-09-20 10:36:22.000000000","message":"Done","commit_id":"d6ae412f911c59add32540b8b7e6a094f3c2bc10"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"d59b7e988eb5905fbc335dd9408bc16e045fec22","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are two ways to give other greenthread chance to run:"},{"line_number":10,"context_line":"greenthread.sleep(0) or time.sleep(0). Add the second way in"},{"line_number":11,"context_line":"threading.rst and recommend the second way for contributors."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Also, PyMySQL works well with eventlet [1], and it\u0027s the default MySQL"},{"line_number":14,"context_line":"DB API driver for oslo.db now[2]."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a8ec9b2_2b739716","line":11,"range":{"start_line":11,"start_character":18,"end_line":11,"end_character":59},"updated":"2016-09-21 06:42:04.000000000","message":"But at the doc the recommended is the first way.","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"41a24c4241c4b0f07d491a23465c7d864cf9798e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are two ways to give other greenthread chance to run:"},{"line_number":10,"context_line":"greenthread.sleep(0) or time.sleep(0). Add the second way in"},{"line_number":11,"context_line":"threading.rst and recommend the second way for contributors."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Also, PyMySQL works well with eventlet [1], and it\u0027s the default MySQL"},{"line_number":14,"context_line":"DB API driver for oslo.db now[2]."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a8ec9b2_dc1bdb1a","line":11,"range":{"start_line":11,"start_character":18,"end_line":11,"end_character":59},"in_reply_to":"7a8ec9b2_2b739716","updated":"2016-09-21 07:28:04.000000000","message":"Done","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"}],"doc/source/devref/threading.rst":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"ff9c763c6ea5ca4d594d2cf3a6fdabbf2072984e","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"MySQL access and eventlet"},{"line_number":40,"context_line":"-------------------------"},{"line_number":41,"context_line":"There are some MySQL DB API drivers for oslo.db, like `PyMySQL`_, MySQL-python"},{"line_number":42,"context_line":"etc. PyMySQL is the default MySQL DB API driver for oslo.db, and it works well with"},{"line_number":43,"context_line":"eventlet. MySQL-python uses an external C library for accessing the MySQL database."},{"line_number":44,"context_line":"Since eventlet cannot use monkey-patching to intercept blocking calls in a C library,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a89bdaa_5c46fa21","line":41,"range":{"start_line":41,"start_character":63,"end_line":41,"end_character":64},"updated":"2016-09-12 02:16:26.000000000","message":"redundant space","commit_id":"6fe0c95288dbe8adad37d37a7ce57fe885134928"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"78f4fcabb08114799566aab1baf0919bf3c9ed47","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"MySQL access and eventlet"},{"line_number":40,"context_line":"-------------------------"},{"line_number":41,"context_line":"There are some MySQL DB API drivers for oslo.db, like `PyMySQL`_, MySQL-python"},{"line_number":42,"context_line":"etc. PyMySQL is the default MySQL DB API driver for oslo.db, and it works well with"},{"line_number":43,"context_line":"eventlet. MySQL-python uses an external C library for accessing the MySQL database."},{"line_number":44,"context_line":"Since eventlet cannot use monkey-patching to intercept blocking calls in a C library,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a89bdaa_764d9a71","line":41,"range":{"start_line":41,"start_character":63,"end_line":41,"end_character":64},"in_reply_to":"9a89bdaa_5c46fa21","updated":"2016-09-12 04:25:26.000000000","message":"what do you mean ?","commit_id":"6fe0c95288dbe8adad37d37a7ce57fe885134928"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"d59b7e988eb5905fbc335dd9408bc16e045fec22","unresolved":false,"context_lines":[{"line_number":32,"context_line":"\t..."},{"line_number":33,"context_line":"\tgreenthread.sleep(0)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"In current code, time.sleep(0）does the same thing as greenthread.sleep(0) if"},{"line_number":36,"context_line":"time module is patched through eventlet.monkey_patch(). To be explicit, we recommend"},{"line_number":37,"context_line":"contributors use ``greenthread.sleep()`` instead of ``time.sleep()``."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a8ec9b2_8b990b71","line":35,"range":{"start_line":35,"start_character":29,"end_line":35,"end_character":30},"updated":"2016-09-21 06:42:04.000000000","message":"Yes, looks like you use a SBC case char here.","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e6527821a47d3a16a8fc4498faeff993789ea908","unresolved":false,"context_lines":[{"line_number":32,"context_line":"\t..."},{"line_number":33,"context_line":"\tgreenthread.sleep(0)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"In current code, time.sleep(0）does the same thing as greenthread.sleep(0) if"},{"line_number":36,"context_line":"time module is patched through eventlet.monkey_patch(). To be explicit, we recommend"},{"line_number":37,"context_line":"contributors use ``greenthread.sleep()`` instead of ``time.sleep()``."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a8ec9b2_306df004","line":35,"range":{"start_line":35,"start_character":29,"end_line":35,"end_character":31},"updated":"2016-09-20 13:08:50.000000000","message":"missing space","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"41a24c4241c4b0f07d491a23465c7d864cf9798e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"\t..."},{"line_number":33,"context_line":"\tgreenthread.sleep(0)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"In current code, time.sleep(0）does the same thing as greenthread.sleep(0) if"},{"line_number":36,"context_line":"time module is patched through eventlet.monkey_patch(). To be explicit, we recommend"},{"line_number":37,"context_line":"contributors use ``greenthread.sleep()`` instead of ``time.sleep()``."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a8ec9b2_9c7f9365","line":35,"range":{"start_line":35,"start_character":29,"end_line":35,"end_character":31},"in_reply_to":"7a8ec9b2_306df004","updated":"2016-09-21 07:28:04.000000000","message":"Done","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e6527821a47d3a16a8fc4498faeff993789ea908","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\tgreenthread.sleep(0)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"In current code, time.sleep(0）does the same thing as greenthread.sleep(0) if"},{"line_number":36,"context_line":"time module is patched through eventlet.monkey_patch(). To be explicit, we recommend"},{"line_number":37,"context_line":"contributors use ``greenthread.sleep()`` instead of ``time.sleep()``."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"MySQL access and eventlet"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a8ec9b2_b0582058","line":36,"range":{"start_line":36,"start_character":69,"end_line":36,"end_character":84},"updated":"2016-09-20 13:08:50.000000000","message":"you shouldn\u0027t go beyond 79 chars.  Same below","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"41a24c4241c4b0f07d491a23465c7d864cf9798e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\tgreenthread.sleep(0)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"In current code, time.sleep(0）does the same thing as greenthread.sleep(0) if"},{"line_number":36,"context_line":"time module is patched through eventlet.monkey_patch(). To be explicit, we recommend"},{"line_number":37,"context_line":"contributors use ``greenthread.sleep()`` instead of ``time.sleep()``."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"MySQL access and eventlet"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a8ec9b2_dc911b9c","line":36,"range":{"start_line":36,"start_character":69,"end_line":36,"end_character":84},"in_reply_to":"7a8ec9b2_b0582058","updated":"2016-09-21 07:28:04.000000000","message":"Done","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"d59b7e988eb5905fbc335dd9408bc16e045fec22","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"MySQL access and eventlet"},{"line_number":40,"context_line":"-------------------------"},{"line_number":41,"context_line":"There are some MySQL DB API drivers for oslo.db, like `PyMySQL`_, MySQL-python"},{"line_number":42,"context_line":"etc. PyMySQL is the default MySQL DB API driver for oslo.db, and it works well with"},{"line_number":43,"context_line":"eventlet. MySQL-python uses an external C library for accessing the MySQL database."},{"line_number":44,"context_line":"Since eventlet cannot use monkey-patching to intercept blocking calls in a C library,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a8ec9b2_8babcb88","line":41,"range":{"start_line":41,"start_character":66,"end_line":41,"end_character":78},"updated":"2016-09-21 06:42:04.000000000","message":"add a comma at the end","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"41a24c4241c4b0f07d491a23465c7d864cf9798e","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"MySQL access and eventlet"},{"line_number":40,"context_line":"-------------------------"},{"line_number":41,"context_line":"There are some MySQL DB API drivers for oslo.db, like `PyMySQL`_, MySQL-python"},{"line_number":42,"context_line":"etc. PyMySQL is the default MySQL DB API driver for oslo.db, and it works well with"},{"line_number":43,"context_line":"eventlet. MySQL-python uses an external C library for accessing the MySQL database."},{"line_number":44,"context_line":"Since eventlet cannot use monkey-patching to intercept blocking calls in a C library,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a8ec9b2_bc4b6f2a","line":41,"range":{"start_line":41,"start_character":66,"end_line":41,"end_character":78},"in_reply_to":"7a8ec9b2_8babcb88","updated":"2016-09-21 07:28:04.000000000","message":"Done","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"e6527821a47d3a16a8fc4498faeff993789ea908","unresolved":false,"context_lines":[{"line_number":42,"context_line":"etc. PyMySQL is the default MySQL DB API driver for oslo.db, and it works well with"},{"line_number":43,"context_line":"eventlet. MySQL-python uses an external C library for accessing the MySQL database."},{"line_number":44,"context_line":"Since eventlet cannot use monkey-patching to intercept blocking calls in a C library,"},{"line_number":45,"context_line":"so queries to the MySQL database will block the main thread of a service."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The Diablo release contained a thread-pooling implementation that did not"},{"line_number":48,"context_line":"block, but this implementation resulted in a `bug`_ and was removed."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a8ec9b2_ab5511c7","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":2},"updated":"2016-09-20 13:08:50.000000000","message":"remove \"so\", because you are starting the sentence with \"Since\"","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"41a24c4241c4b0f07d491a23465c7d864cf9798e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"etc. PyMySQL is the default MySQL DB API driver for oslo.db, and it works well with"},{"line_number":43,"context_line":"eventlet. MySQL-python uses an external C library for accessing the MySQL database."},{"line_number":44,"context_line":"Since eventlet cannot use monkey-patching to intercept blocking calls in a C library,"},{"line_number":45,"context_line":"so queries to the MySQL database will block the main thread of a service."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The Diablo release contained a thread-pooling implementation that did not"},{"line_number":48,"context_line":"block, but this implementation resulted in a `bug`_ and was removed."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a8ec9b2_1c51c3d8","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":2},"in_reply_to":"7a8ec9b2_ab5511c7","updated":"2016-09-21 07:28:04.000000000","message":"Done","commit_id":"78ca63eca9e890f7e2bb0a0b180d536074790de1"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"ca9b795545b22bea6db1071d3083ca1f4177b86c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"There are some MySQL DB API drivers for oslo.db, like `PyMySQL`_, MySQL-python,"},{"line_number":42,"context_line":"etc. PyMySQL is the default MySQL DB API driver for oslo.db, and it works well"},{"line_number":43,"context_line":"with eventlet. MySQL-python uses an external C library for accessing the MySQL"},{"line_number":44,"context_line":"database.Since eventlet cannot use monkey-patching to intercept blocking calls"},{"line_number":45,"context_line":"in a C library, queries to the MySQL database will block the main thread of a"},{"line_number":46,"context_line":"service."},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a8ec9b2_c8d943f5","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":10},"updated":"2016-09-21 11:39:14.000000000","message":"missing space","commit_id":"ecba28d69b1dd5f8eac6de5b976d6b4d40acc82c"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"d439321558fc400b8b646901aa336ba0523d1460","unresolved":false,"context_lines":[{"line_number":41,"context_line":"There are some MySQL DB API drivers for oslo.db, like `PyMySQL`_, MySQL-python,"},{"line_number":42,"context_line":"etc. PyMySQL is the default MySQL DB API driver for oslo.db, and it works well"},{"line_number":43,"context_line":"with eventlet. MySQL-python uses an external C library for accessing the MySQL"},{"line_number":44,"context_line":"database.Since eventlet cannot use monkey-patching to intercept blocking calls"},{"line_number":45,"context_line":"in a C library, queries to the MySQL database will block the main thread of a"},{"line_number":46,"context_line":"service."},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a8ec9b2_4e50d832","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":10},"in_reply_to":"7a8ec9b2_c8d943f5","updated":"2016-09-21 12:43:43.000000000","message":"Done","commit_id":"ecba28d69b1dd5f8eac6de5b976d6b4d40acc82c"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"e246d8bb2ea18b9ac0d4d7470286ce76e15a2c11","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"In current code, time.sleep(0) does the same thing as greenthread.sleep(0) if"},{"line_number":36,"context_line":"time module is patched through eventlet.monkey_patch(). To be explicit, we"},{"line_number":37,"context_line":"recommend contributors use ``greenthread.sleep()`` instead of ``time.sleep()``."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"MySQL access and eventlet"},{"line_number":40,"context_line":"-------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a8ec9b2_da23c2bb","line":37,"range":{"start_line":37,"start_character":22,"end_line":37,"end_character":26},"updated":"2016-09-23 06:49:17.000000000","message":"to use?","commit_id":"2421100d1bb44047cb500f438366798ecbd917c5"},{"author":{"_account_id":9796,"name":"ChangBo Guo","email":"glongwave@gmail.com","username":"gcb"},"change_message_id":"e4dc09ab64a3e8879672352c57ac048a5ababb5d","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"In current code, time.sleep(0) does the same thing as greenthread.sleep(0) if"},{"line_number":36,"context_line":"time module is patched through eventlet.monkey_patch(). To be explicit, we"},{"line_number":37,"context_line":"recommend contributors use ``greenthread.sleep()`` instead of ``time.sleep()``."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"MySQL access and eventlet"},{"line_number":40,"context_line":"-------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a8bc5a2_f79b7bc7","line":37,"range":{"start_line":37,"start_character":22,"end_line":37,"end_character":26},"in_reply_to":"7a8ec9b2_da23c2bb","updated":"2016-09-23 08:26:53.000000000","message":"Done","commit_id":"2421100d1bb44047cb500f438366798ecbd917c5"}]}
