{"push_id":761697364,"size":2,"distinct_size":2,"ref":"refs/heads/release-113.00","head":"c0ff3a13c53164880cbb7cf2b1289f3cb8b593ff","before":"f3e35b6a408e9751fca513559cc760c374134c59","commits":[{"sha":"9da08f03446a8848dc2d0afba54374f6ed6089aa","author":{"email":"601dae215a37d54ca7321b57ca48544edf1294d7@cl.cam.ac.uk","name":"Leo White"},"message":"113.00.00\n\n- Fixed race in `Rpc` that caused double connection cleanup.\n\n    Two errors, `Connection_closed` and a Writer error,\n    `(Uncaught_exn(monitor.ml.Error_((exn(\\\"writer error\\\"....))))))`,\n    occurring at the same time will cleanup the connection twice and call\n    response_handler of open_queries twice with two different errors.\n\n    (((pid 31291) (thread_id 0))\n     ((human_readable 2015-05-25T10:47:18+0100)\n      (int63_ns_since_epoch 1432547238929886105))\n     \"unhandled exception in Async scheduler\"\n     (\"unhandled exception\"\n      ((monitor.ml.Error_\n        ((exn\n          (\"Ivar.fill of full ivar\" (Full _)\n           lib/async_kernel/src/ivar0.ml:329:14))\n         (backtrace\n          (\"Raised at file \\\"error.ml\\\", line 7, characters 21-29\"\n           \"Called from file \\\"rpc.ml\\\", line 101, characters 8-31\"\n           \"Called from file \\\"connection.ml\\\", line 251, characters 8-172\"\n           \"Called from file \\\"core_hashtbl.ml\\\", line 244, characters 36-48\"\n           \"Called from file \\\"connection.ml\\\", line 248, characters 2-278\"\n           \"Called from file \\\"async_stream.ml\\\", line 49, characters 53-56\"\n           \"Called from file \\\"async_stream.ml\\\", line 21, characters 34-39\"\n           \"Called from file \\\"job_queue.ml\\\", line 124, characters 4-7\" \"\"))\n         (monitor\n          (((name main) (here ()) (id 1) (has_seen_error true)\n            (is_detached false) (kill_index 0))))))\n       ((pid 31291) (thread_id 0)))))\n\n- Fixed bugs in `Rpc` in which a TCP connection's reader was closed before its\n  writer.\n\n- In `Versioned_rpc`, eliminated an unnecessary Async cycle when placing RPC\n  messages.\n\n- Added `Rpc.Pipe_rpc.close_reason` and `Rpc.State_rpc.close_reason`, which\n  give the reason why a pipe returned by an RPC was closed.\n\n    These functions take the IDs that are returned along with the pipes by\n    the dispatch functions, so the interface of `dispatch` did not need to\n    change.\n\n- Made `Rpc.Expert.dispatch` expose that the connection was closed, just like\n  `One_way.Expert.dispatch`.\n\n- Expose the name of the `Versioned_rpc.Menu` RPC.","distinct":true,"url":"https://api.github.com/repos/janestreet/async_rpc_kernel/commits/9da08f03446a8848dc2d0afba54374f6ed6089aa"},{"sha":"c0ff3a13c53164880cbb7cf2b1289f3cb8b593ff","author":{"email":"601dae215a37d54ca7321b57ca48544edf1294d7@cl.cam.ac.uk","name":"Leo White"},"message":"prepare release","distinct":true,"url":"https://api.github.com/repos/janestreet/async_rpc_kernel/commits/c0ff3a13c53164880cbb7cf2b1289f3cb8b593ff"}]}