From de9689e39beaea51db07b9ec60ddb106493b5c28 Mon Sep 17 00:00:00 2001 From: Monty Brandenberg <monty@lindenlab.com> Date: Thu, 6 Nov 2014 16:39:40 -0500 Subject: BUG-7698, BUG-7688, BUG-7694 (others) CDN connection issues. Under pipelining, requests were given a 5x timeout factor due to the way that the timeout clock works in libcurl. Under CDN load, connections were not being torn down quickly and it was only this timer that led to disconnect and retry. So, we want to break a connection that isn't making progress but that isn't immediately possible. We'll compromise with a 60S timeout that (we hope) will be neither too long for stalled connections nor too short for large asset transfer requests. --- indra/llcorehttp/_httpoprequest.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp index fbbb1614fb..7482a89dac 100755 --- a/indra/llcorehttp/_httpoprequest.cpp +++ b/indra/llcorehttp/_httpoprequest.cpp @@ -623,8 +623,23 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service) // a handwave but bump the transfer timeout up by the pipelining // depth to give some room. // + // BUG-7698, BUG-7688, BUG-7694 (others). Scylla and Charybdis + // situation. Operating against a CDN having service issues may + // lead to requests stalling for an arbitrarily long time with only + // the CURLOPT_TIMEOUT value leading to a closed connection. Sadly + // for pipelining, libcurl (7.39.0 and earlier, at minimum) starts + // the clock on this value as soon as a request is started down + // the wire. We want a short value to recover and retry from the + // CDN. We need a long value to safely deal with a succession of + // piled-up pipelined requests. + // // *TODO: Find a better scheme than timeouts to guarantee liveness. - xfer_timeout *= cpolicy.mPipelining; + // Progress on the connection is what we really want, not timeouts. + // But we don't have access to that and the request progress indicators + // (various libcurl callbacks) have the same problem TIMEOUT does. + // + // xfer_timeout *= cpolicy.mPipelining; + xfer_timeout *= 2L; } // *DEBUG: Enable following override for timeout handling and "[curl:bugs] #1420" tests // xfer_timeout = 1L; -- cgit v1.2.3 From 0cef46ff542234e2e394d09cd3ba853005fcc709 Mon Sep 17 00:00:00 2001 From: Oz Linden <oz@lindenlab.com> Date: Mon, 12 Jan 2015 15:08:48 -0500 Subject: Added tag 3.7.24-release for changeset d3d0101e980e --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index a9ab8061d3..81248f02a7 100755 --- a/.hgtags +++ b/.hgtags @@ -496,3 +496,4 @@ bcc2770e21c125e0bab59141c51db9145aec068d 3.7.17-release 9ecab4b0c7d8614767724a3422d3c1dca6bd4e4f 3.7.21-release bc61801f614022c920cb5c3df1d7d67a9561ce1f 3.7.22-release 3be800e1afad9615442159e388d6d137be7b951e 3.7.23-release +d3d0101e980ec95043e0af9b7903045d3bc447e4 3.7.24-release -- cgit v1.2.3 From fad02b30ce61a38007c5cd450cbdd2e09464888d Mon Sep 17 00:00:00 2001 From: Oz Linden <oz@lindenlab.com> Date: Mon, 12 Jan 2015 15:08:48 -0500 Subject: increment viewer version to 3.7.25 --- indra/newview/VIEWER_VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index f36181278b..c282746153 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.7.24 +3.7.25 -- cgit v1.2.3