Repository: trafficserver Updated Branches: refs/heads/master 42d687c47 -> 6ff7aafe4
TS-4317: Prevent cache stripe recovery from infinite loop. Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/6ff7aafe Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/6ff7aafe Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/6ff7aafe Branch: refs/heads/master Commit: 6ff7aafe42d3d51d3ed8d12828920451c1d3fd34 Parents: 42d687c Author: Alan M. Carroll <[email protected]> Authored: Sat Apr 2 20:03:50 2016 -0500 Committer: Alan M. Carroll <[email protected]> Committed: Sat Apr 2 20:03:50 2016 -0500 ---------------------------------------------------------------------- iocore/cache/Cache.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/6ff7aafe/iocore/cache/Cache.cc ---------------------------------------------------------------------- diff --git a/iocore/cache/Cache.cc b/iocore/cache/Cache.cc index 882bd4c..ae25d10 100644 --- a/iocore/cache/Cache.cc +++ b/iocore/cache/Cache.cc @@ -1689,8 +1689,10 @@ Vol::handle_recover_from_data(int event, void * /* data ATS_UNUSED */) if (s > e) s -= round_to_approx_size(doc->len); recover_pos -= e - s; - if (recover_pos >= skip + len) + if (recover_pos >= skip + len) { + recover_wrapped = 1; recover_pos = start; + } io.aiocb.aio_nbytes = RECOVERY_SIZE; if ((off_t)(recover_pos + io.aiocb.aio_nbytes) > (off_t)(skip + len)) io.aiocb.aio_nbytes = (skip + len) - recover_pos;
