{"push_id":889739970,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"ece4783488cdd83c1b22eb74b047f5954715b1f3","before":"5314984fec1f3e8b618861fcc8306fb9da496aaa","commits":[{"sha":"ece4783488cdd83c1b22eb74b047f5954715b1f3","author":{"email":"f655a5fec185ec4039edea89c8ce3cdec476d3a9@cs.stanford.edu","name":"Collin Lee"},"message":"Fix PreparedItem::handleTimerEvent deadlock\n\nPreparedItem::handleTimerEvent() previously synchronously sent the\nTxHintFailed RPC and held a thread and worker timer while waiting.\nThis can causes a deadlock when the RPC is destined to loop back to\nthe same master (e.g. all threads are busy waiting for the worker\ntimer to be released and there are no threads available to process the\nTxHintFailed RPC).  The solution is to make the handler asynchronous\nusing a rules-like structure; the handler will asynchronously send the\nRPC and rescheduled itself polling for the RPC's completion.","distinct":true,"url":"https://api.github.com/repos/PlatformLab/RAMCloud/commits/ece4783488cdd83c1b22eb74b047f5954715b1f3"}]}