summaryrefslogtreecommitdiff
path: root/indra/newview/lltexturefetch.cpp
AgeCommit message (Collapse)Author
2012-12-04Pull in upstream viewer-development via viewer-lionsimon@Simon-PC.lindenlab.com
2012-12-04Pull and merge viewer-developmentsimon@Simon-PC.lindenlab.com
2012-11-20Automated merge with https://bitbucket.org/lindenlab/viewer-developmentDave Parks
2012-10-15Merge in viewer-development code and fix buildsimon@Simon-PC.lindenlab.com
2012-10-10pull back 3.4.1-beta6 fixesOz Linden
2012-10-03Fix non-thread-safe refcounting of LLHTTPClient::Responder and fix ↵Dave Parks
out-of-order deletion of LLTextureFetch on shutdown
2012-09-08DRTVWR-209 Merge of viewer-development with SH-3316 drano-http code.Monty Brandenberg
cmake and other files didn't get moved over, do it by hand.
2012-09-07DRTVWR-209 Additional merge of viewer-development with SH-3316 drano-http code.Monty Brandenberg
Restore original deleteRequest/removeRequest implementation removing a small race. Remove a short-lived additional timeout scheme on requests which really isn't appropriate as originally implemented as we can have very long-lived requests on big regions.
2012-09-07DRTVWR-209 Merge of viewer-development with SH-3316 drano-http code.Monty Brandenberg
This was yet another refresh from v-d because of significant changes to lltexturefetch that would not have been resolvable by casual application of any merge tool. There are still a few questions outstanding but this is the initial, optimistic merge.
2012-09-05Merge in latest viewer-developmentsimon@Simon-PC.lindenlab.com
2012-08-24Automated merge with http://bitbucket.org/lindenlab/viewer-catRichard Linden
2012-08-21Pointless edit to tickle TC/codeticket.Monty Brandenberg
2012-08-21SH-3325 texture load slow on some machinesMonty Brandenberg
This doesn't really address 3325 directly but it is the result of research done while hunting it down. First, this is a thread safety improvement for canceled requests that have gone into resource wait state. I don't think we've seen a failure there but there was a window. It also cleans the resource wait queue earlier which lets us do less work and get requests more quickly into llcorehttp by bypassing the resource wait state. With this, I finally feel comfortable about rundown of requests.
2012-08-19SH-3329 Cached scene loads slower than same scene with cleared cache.Monty Brandenberg
A/B comparison with original code showed the newer issuing lower-priority requests of the cache reader and some other minor changes. Brought them into agreement (this is cargo-cult programming). Made the HTTP resource semaphore an atomic int for rigorous correctness across threads. I swear I'm going to tear down this code someday.
2012-08-17SH-3327 HTTP transfers not showing up in texture console 'net tot tex' value.Monty Brandenberg
Dropped an argument during integration which made the total byte count read lower than expected. Everything else is fine, however.
2012-08-17Merged in from viewer-development.Aura Linden
2012-08-15merge changes for DRTVWR-194Oz Linden
2012-08-13Merge from viewer-development.Monty Brandenberg
2012-08-03Merge of viewer-development (3.4.1).Monty Brandenberg
2012-07-30mergeBrad Payne (Vir Linden)
2012-07-19SH-3280 Better init/shutdown functionality for llcorehttp by llappviewerMonty Brandenberg
Isolate llcorehttp initialization into a utility class (LLAppCoreHttp) that provides glue between app and library (sets up policies, handles notifications). Introduce 'TextureFetchConcurrency' debug setting to provide some field control when absolutely necessary.
2012-07-18SH-3275 WIP Run viewer metrics for object update messagesRichard Linden
continued clean up of llstats stuff
2012-07-17SH-3189 Improve naive data structuresMonty Brandenberg
Move releaseHttpWaiters() to commonUpdate from doWork. More appropriate home for it. Have deleteOK() defer deletion of anything in WAIT_HTTP_RESOURCE2 state to keep pointers valid for the releaseHttpWaiters() method. It will then transition canceled operations to SEND_HTTP_REQ where they can be deleted.
2012-07-16SH-3275 WIP Run viewer metrics for object update messagesRichard Linden
clean up of llstats stuff
2012-07-16SH-3189 Remove/improve naive data structuresMonty Brandenberg
When releasing HTTP waiters, avoid unnecessary sort activity. For Content-Type in responses, let libcurl do the work and removed my parsing of headers. Drop Content-Encoding as libcurl will deal with that. If anyone is interested, they can parse.
2012-07-11fix for SH-3137: delay to issue new http fetching requests if http ↵Xiaohong Bao
connection failure happens
2012-07-10SH-3244 Syscall avoidance in HttpRequest::update() methodMonty Brandenberg
Well, achieved that by doing work in bulk when needed. But turned into some additional things. Change timebase from mS to uS as, well, things are headed that way. Implement an HttpReplyQueue::fetchAll method (advertised one, hadn't implemented it).
2012-07-10SH-3276 Handle 416 status back from texture fetches as okay.Monty Brandenberg
A 416 will just mean there's no more data and whatever we have is complete.
2012-07-09Take body size as the reply size when Content-Range header isn't available.Monty Brandenberg
2012-07-09Safe implementation of the HTTP resource waiter release method.Monty Brandenberg
Doesn't use sets or maps and so there's no ordering assumption to be violated when priorities are changed. Should also be faster. Still want to get rid of the ancillary list, however...
2012-07-09SH-3187 Issue smarter 'Range' requests for textures.Monty Brandenberg
First, try to issue ranged GETs that are always at least partially satisfiable. This will keep Varnish-type caches from simply sending back 200/full asset responses to unsatisfiable requests. Implement awareness of Content-Range headers as well. Currently they're not coming back but they will be someday.
2012-07-06fix for MAINT-1201: 404 errors appear in the log when opening the world mapXiaohong Bao
2012-07-06Automated merge with https://bitbucket.org/VirLinden/dranoXiaohong Bao
2012-07-06fix for SH-3234: Map tile fetching broken in drano buildXiaohong Bao
2012-07-03More integration work for texture fetch timeouts.Monty Brandenberg
The fetch state machine received a new timeout during the WAIT_HTTP_REQ state. For the integration, rather than jump the state to done, we issue a request cancel and let the notification plumbing do the rest without any race conditions or special-case logic.
2012-07-02Merge 3.3.3 release with Drano HTTP library at 3.3.0Monty Brandenberg
Big delta was converting the new texture debugger support code to the new library. Viewer manifest should probably get an eyeball before release.
2012-06-28mergeDave Parks
2012-06-26fix merge conflicts: v-r to dranoXiaohong Bao
2012-06-26v-r to drano merge conflicts wipBrad Payne (Vir Linden)
2012-06-22SH-3177, SH-3180 std::iostream and LLSD serialization for BufferArray objects.Monty Brandenberg
Seems to be working correctly. Not certain this is the fastest possible way to provide a std::streambuf interface but it's visually acceptable.
2012-06-20SH-3181 More interface options for API. Also includes returned headers.Monty Brandenberg
Only thing interesting in this changeset is the discovery that a sleep in the fake HTTP server ties up tests. Need to thread that or fail on client disconnect or something to speed that up and make it usable for bigger test scenarios. But good enough for now...
2012-06-19When a Content-Range header is received, make available the full triplet of ↵Monty Brandenberg
<offset, length, fulllength>.
2012-06-18Tidy Texture Console, add cache & resource wait stats, issue stats line to ↵Monty Brandenberg
log on exit. With much trial-and-error, cleaned up the banner on the texture console and made everything mostly fit. Added global cache read, cache write and resource wait count events to the console display to show if cache is working. On clean exit, emit a log line to report stats to log file (intended for automated tests, maybe): LLTextureFetch::endThread: CacheReads: 2618, CacheWrites: 117, ResWaits: 0, TotalHTTPReq: 117
2012-06-14LLMutex recursive lock, global & per-request tracing, simple GET request, ↵Monty Brandenberg
LLProxy support, HttpOptions starting to work, HTTP resource waiting fixed. Non-LLThread-based threads need to do some registration or LLMutex locks taken out in these threads will not work as expected (SH-3154). We'll get a better solution later, this fixes some things for now. Tracing of operations now supported. Global and per-request (via HttpOptions) tracing levels of [0..3]. The 2 and 3 levels use libcurl's VERBOSE mode combined with CURLOPT_DEBUGFUNCTION to stream high levels of detail into the log. *Very* laggy but useful. Simple GET request supported (no Range: header). Really just a degenrate case of a ranged get but supplied an API anyway. Global option to use the LLProxy interface to setup CURL handles for either socks5 or http proxy usage. This isn't really the most encapsulated way to do this but a better solution will have to come later. The wantHeaders and tracing options are now supported in HttpOptions giving per-request controls. Big refactoring of the HTTP resource waiter in lltexturefetch. What I was doing before wasn't correct. Instead, I'm implementing the resource wait after the Semaphore model (though not using system semaphores). So instead of having a sequence like: SEND_HTTP_REQ -> WAIT_HTTP_RESOURCE -> SEND_HTTP_REQ, we now do WAIT_HTTP_RESOURCE -> WAIT_HTTP_RESOURCE2 (actual wait) -> SEND_HTTP_REQ. Works well but the prioritized filling of the corehttp library needs some performance work later.
2012-06-13Restore original priority scheme of LOW/HIGH.Monty Brandenberg
The NORMAL range doesn't do any sleeping at all and so we'll spin the core harder than we already are. Bring all idlers into the same range.
2012-06-12for SH-3073: implement a fast cache system for texture fetchingXiaohong Bao
2012-06-11Refactoring of the request completion thread and removal of ↵Monty Brandenberg
206/content-range hack in xport. Retry/response handling is decided in policy so moved that there. Removed special case 206-without-content-range response in transport. Have this sitation recognizable in the API and let callers deal with it as needed.
2012-06-11avatar metrics - cleanup, removed unused fieldsBrad Payne (Vir Linden)
2012-06-08Implemented HTTP retry for requests. Went in rather easily whichMonty Brandenberg
surprised me. Added a retry queue similar to ready queue to the policy object which is sorted by retry time. Currently do five retries (after the initial try) delayed by .25, .5, 1, 2 and 5 seconds. Removed the retry logic from the lltexturefetch module. Upped the waiting time in the unit test for the retries. People won't like this but tough, need tests.
2012-06-08SH-3153 FIXBrad Payne (Vir Linden)