)]}'
{"swift/common/utils.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f07c76e14dc3752ba565a560761b8d633c3fe87e","unresolved":false,"context_lines":[{"line_number":554,"context_line":"    #         if thread is monkey-patched."},{"line_number":555,"context_line":"    eventlet.patcher.monkey_patch(all\u003dFalse, socket\u003dTrue, select\u003dTrue,"},{"line_number":556,"context_line":"                                  thread\u003dTrue)"},{"line_number":557,"context_line":"    with threading._active_limbo_lock:"},{"line_number":558,"context_line":"        # Replace it with a re-entrant lock"},{"line_number":559,"context_line":"        threading._active_limbo_lock \u003d PipeMutex()"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f07aef22","line":557,"updated":"2020-09-18 00:56:38.000000000","message":"I\u0027m not entirely sure grabbing the lock is the right move -- what happens if something *does* trying to grab the lock while we\u0027ve got it? I guess, it\u0027ll end up acquiring the old version after we\u0027ve replaced it... which doesn\u0027t seem great...\n\nStill, it seems baybe better than swapping in an unlocked version when something already has the lock? IDK man...","commit_id":"44963dddbf3d8b2e7f41a1b61c9d274131dd3c9d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"0815fa9d9dd38a7ceb895ee1f213ee786c401788","unresolved":false,"context_lines":[{"line_number":557,"context_line":"    if not isinstance(threading._active_limbo_lock, PipeMutex):"},{"line_number":558,"context_line":"        with threading._active_limbo_lock:"},{"line_number":559,"context_line":"            # Replace it with a re-entrant lock"},{"line_number":560,"context_line":"            threading._active_limbo_lock \u003d PipeMutex()"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"def noop_libc_function(*args):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_6ddcca73","line":560,"range":{"start_line":560,"start_character":12,"end_line":560,"end_character":21},"updated":"2020-09-25 04:20:59.000000000","message":":think:\n\nBut is it the *right* threading? Or should I be using eventlet.patcher.original(\u0027threading\u0027)?","commit_id":"dd692153a059af12a7dfe6522190e900b95a93a0"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"9004f3060838441b6a7e1d9fdffc8c23efce21d8","unresolved":true,"context_lines":[{"line_number":556,"context_line":"                                  thread\u003dTrue)"},{"line_number":557,"context_line":"    # Trying to log threads while monkey-patched can lead to deadlocks; see"},{"line_number":558,"context_line":"    # https://bugs.launchpad.net/swift/+bug/1895739"},{"line_number":559,"context_line":"    logging.logThreads \u003d 0"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"def noop_libc_function(*args):"}],"source_content_type":"text/x-python","patch_set":4,"id":"b7c9daa5_42a7ac88","line":559,"updated":"2021-01-15 16:55:40.000000000","message":"Seems reasonable!\n\nhttps://docs.python.org/3/howto/logging.html#optimization","commit_id":"86b966d950000978e2438f1bd5d9e2bf2e238cd1"}]}
