{"push_id":2905361583,"size":6,"distinct_size":6,"ref":"refs/heads/master","head":"340763b10a7088eb48e22c816f4a93ffbe98851d","before":"34bc9b08319382d4ce9035acd1128519ff9e4433","commits":[{"sha":"b273e6b577dd7ad73670d1fd8214fc1399487adc","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Fix React DOM attribute","distinct":true,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/b273e6b577dd7ad73670d1fd8214fc1399487adc"},{"sha":"d1c317f5a7c677e14a0ca5f60111fbc15ef747b4","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Speed up test_reorder.py","distinct":true,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/d1c317f5a7c677e14a0ca5f60111fbc15ef747b4"},{"sha":"9f3bc797d435d540241ff9fcf90c8ea862788ecb","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Make fetch async\n\nFixes Redis running out of connections: the backend was never freeing\nthem because async_to_sync leads to flakiness.","distinct":true,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/9f3bc797d435d540241ff9fcf90c8ea862788ecb"},{"sha":"7b29f2102e38bd2825c27819e7ca889d7bc4b3fa","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Merge branch 'master' of github.com:CJWorkbench/cjworkbench","distinct":true,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/7b29f2102e38bd2825c27819e7ca889d7bc4b3fa"},{"sha":"634952703109a87008ceef7a1284c7ce66807a9d","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Nix redundant cooperative_lock()s that break async\n\nBasically, today's rules are:\n* Delta.create_impl() uses cooperative_lock (once)\n* undo/redo use cooperative_lock\n* execute uses cooperative_lock (once)\n* module_dispatch_event does _not_ lock (but commit_result does)\n* Some views lock for simple DB changes\n* We avoid locks in many places by only writing the fields we're editing\n\nThe future is lock-free. This commit gets us a step or two closer. It\nmay create a race, but it prevents deadlock and that's more important.\n\n(Deadlock? Yes. cooperative_lock() is unsafe across async boundaries,\nbecause each async function gets its own context and thus its own\ntransaction. If the sub-function tries to lock while its caller has also\nlocked, then the sub-function will lock, preventing the caller from\nfinishing.)","distinct":true,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/634952703109a87008ceef7a1284c7ce66807a9d"},{"sha":"340763b10a7088eb48e22c816f4a93ffbe98851d","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Nix another dangerous cooperative_lock","distinct":true,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/340763b10a7088eb48e22c816f4a93ffbe98851d"}]}
{"actor":{"display_login":"adamhooper"}}