{"push_id":909798585,"size":5,"distinct_size":5,"ref":"refs/heads/master","head":"2b2c0b370cc287756838f4b8b5720d39d8c1323a","before":"67b29afe573f845eb46f132c084e04f862136e2d","commits":[{"sha":"951fdf8aab804f66e78e9c19ce54e8bc163df3f8","author":{"email":"2981664a3634c8ddfd6ce9082c1825986832f746@iki.fi","name":"Pekka Klärck"},"message":"enhanced timeout tests to reproduce windows crash more easily","distinct":true,"url":"https://api.github.com/repos/robotframework/robotframework/commits/951fdf8aab804f66e78e9c19ce54e8bc163df3f8"},{"sha":"1a5eeaa7f58a90021fa08bef23ce90855a7a8ffd","author":{"email":"2981664a3634c8ddfd6ce9082c1825986832f746@iki.fi","name":"Pekka Klärck"},"message":"Fixed sporadic problems with timeouts on Win Py2.6.\n\nTimeout tests started to fail sporadically on Windows with Python 2.6\nafter recent refactoring of keyword execution logic. Based on git\nbisect the \"bad commit\" was 08390eb2b544dc4d9ef7dc00fc977d85e6b302a9.\n\nThe actual problem turned out to be in the code related to\nasynchronously raising exception in the runner thread to signal\ntimeout. In some cases the exception was raised so that it occurred\nduring the code that was trying to cancel it. Most likely the old\nkeyword execution code catched the resulting TimeoutError but that\ndidn't anymore happen after the refactoring. Not sure why that problem\nonly manifested itself with Python 2.6, though.\n\nThe fix has two parts:\n- Check has timeout occurred inside try/finally and wait for it to be\n  actually raised. This ensures it won't happen inside the finally block.\n- Add new `_finished` flag to signal execution has finished and timeout\n  should not be raised. Also use locks to avoid race conditions when\n  setting `_finished` and `_timeout_occurred`.\n\nInterestingly the problem seems to vanish with just the first\nfix. Looking at the code, the problem could occur also then, so it is safer\nto keep both parts.","distinct":true,"url":"https://api.github.com/repos/robotframework/robotframework/commits/1a5eeaa7f58a90021fa08bef23ce90855a7a8ffd"},{"sha":"dd2a65dbe8b803fe08ea64d45cf68dfd2b828002","author":{"email":"2981664a3634c8ddfd6ce9082c1825986832f746@iki.fi","name":"Pekka Klärck"},"message":"Cleaned up Windows timeout implementation a little","distinct":true,"url":"https://api.github.com/repos/robotframework/robotframework/commits/dd2a65dbe8b803fe08ea64d45cf68dfd2b828002"},{"sha":"6e7c9831dcfaafde9b0a1d35b4b8dbbfc73dd7be","author":{"email":"2981664a3634c8ddfd6ce9082c1825986832f746@iki.fi","name":"Pekka Klärck"},"message":"Sleep in shorter parts to give timeouts more possibilities to stop.\n\nSpeeds up timeout tests on Windows.","distinct":true,"url":"https://api.github.com/repos/robotframework/robotframework/commits/6e7c9831dcfaafde9b0a1d35b4b8dbbfc73dd7be"},{"sha":"2b2c0b370cc287756838f4b8b5720d39d8c1323a","author":{"email":"2981664a3634c8ddfd6ce9082c1825986832f746@iki.fi","name":"Pekka Klärck"},"message":"Windows timeouts: Fixed handling failing kws after earlier changes","distinct":true,"url":"https://api.github.com/repos/robotframework/robotframework/commits/2b2c0b370cc287756838f4b8b5720d39d8c1323a"}]}