payload: {"push_id":3773516878,"size":4,"distinct_size":1,"ref":"refs/heads/master","head":"ef879f16090a46f376860147e9a4a177d56f0ea1","before":"e5845f2b09b8afe26afad33614a3675f8ba9dff0","commits":[{"sha":"494814b7edbd60503e64ebc2a8f85dad9bedfa89","author":{"name":"Agis Anastasopoulos","email":"86f7e437faa5a7fce15d1ddcb9eaeaea377667b8@xz0.org"},"message":"Try coalescing before checking result cache\n\nUntil now, when a new build was scheduled we:\n\n1. checked if there was a finished identical build we could re-use as the\n   result (i.e. result cache). If there wasn't, then we\n2. checked if there was a pending identical build we should coalesce the\n   new build with\n\nThis ordering is wrong. It could happen that an identical build\nfinished after (1) and before (2), resulting in the new build executing\neven though it shouldn't (it should either be coalesced or use the\nresult cache).\n\nWhile this is not a serious issue, it could result in lower cache hit\nrates.\n\nInstead, we now check first if there's an identical build going on and\nif so, we coalesce. If there isn't, we then attempt to use the result cache.","distinct":false,"url":"https://api.github.com/repos/skroutz/mistry/commits/494814b7edbd60503e64ebc2a8f85dad9bedfa89"},{"sha":"c7eecbc2b25093fcc0278aabf79f6286c3034176","author":{"name":"Agis Anastasopoulos","email":"86f7e437faa5a7fce15d1ddcb9eaeaea377667b8@xz0.org"},"message":"Properly initialize BuildInfo","distinct":false,"url":"https://api.github.com/repos/skroutz/mistry/commits/c7eecbc2b25093fcc0278aabf79f6286c3034176"},{"sha":"ab5ba18b59ffd579834abd69e83c756263e4c858","author":{"name":"Agis Anastasopoulos","email":"86f7e437faa5a7fce15d1ddcb9eaeaea377667b8@xz0.org"},"message":"Don't link failed builds to 'latest' link\n\nNOTE: We use the terms 'link' and 'symlink' interchangeably.\n\nBACKGROUND:\n\n1. Builds that exit with a non-zero status code are (and should be)\n   considered failed by mistry's semantics. Those builds are not linked to\n   the 'latest' build, since we only want successful builds to serve as a\n   cache for incremental building.\n\n2. When a new build is submitted, we first check if there's an identical\n   (i.e. same params) previous build already finished, so that we can\n   short-circuit and use it's results (aka. \"build result cache\") instead of\n   building again the same things. However, if that previous build was a\n   failure, we remove it completely from the filesystem and proceed with\n   the new build (essentially re-building).\n\nBUG:\n\nThe code that determined if we should link a finished build to\n'latest' (i.e. by checking if the build was successful), did NOT check\nthe exit code of the build's container. Therefore we would (erroneously)\nlink failed builds to 'latest', which violates (1).\n\nThen if a subsequent identical build was submitted, we'd see\nthat the cached result is a failure and we'd remove the build (see (2)),\ndespite it being a link to 'latest'. This is obviously bad, since we\nshould never delete a build pointed to by the 'latest' link.\n\nThis would cause builds to fallback to non-incremental mode (i.e. start\nwith cold caches), even though they should be incremental.\n\nFIX:\n\nFrom now on, take into account the container command exit code to\ndetermine if the build should be linked from the 'latest' link. If the\nbuild exited with a non-zero status code, we do not link it.","distinct":false,"url":"https://api.github.com/repos/skroutz/mistry/commits/ab5ba18b59ffd579834abd69e83c756263e4c858"},{"sha":"ef879f16090a46f376860147e9a4a177d56f0ea1","author":{"name":"Agis Anastasopoulos","email":"86f7e437faa5a7fce15d1ddcb9eaeaea377667b8@xz0.org"},"message":"Merge pull request #116 from skroutz/T29410-incremental-fix\n\nDon't link failed builds to 'latest' link","distinct":true,"url":"https://api.github.com/repos/skroutz/mistry/commits/ef879f16090a46f376860147e9a4a177d56f0ea1"}]}
other: {"actor":{"display_login":"agis"}}