summaryrefslogtreecommitdiff
path: root/indra/newview/llmeshrepository.cpp
AgeCommit message (Collapse)Author
2014-05-14v-r -> s-e merge WIPBrad Payne (Vir Linden)
2014-05-13sunshine-external merge WIPBrad Payne (Vir Linden)
2014-02-25merge viewer-release to sunshine-externalBrad Payne (Vir Linden)
2014-02-24merge with releaseRichard Linden
2014-01-09SH-4667 HTTP Viewer reports network error instead of a misnamed joint on ↵Monty Brandenberg
mesh upload Tried to add consistent mesh upload retries in the HTTP work but a combination of bad status choices in the upload service and the one-shot nature of the upload capabilities means that status information can be lost. For now, retain the wonderful manual retry logic. At some future point, we might fix the services or add application-level retry.
2013-12-06SH-4645 Viewer hangs on exit after cancelling a mesh upload.Monty Brandenberg
Problem involved a 3-way livelock between the main, upload and decomposition threads. Viewer is shutting down but an upload is in the 'generate hulls' state. Main thread asks upload request to discard and spins waiting for it to finish. Upload thread is in generateHulls spinning waiting for the decomposition thread to process a mesh request. Decomposition thread is sleeping waiting for main thread to deliver work that upload thread has asked the decomposition thread to do.
2013-10-25trivial: fix several weird compiling errors.Xiaohong Bao
2013-10-16mergeBrad Payne (Vir Linden)
2013-10-08merge from viewer-releaseRichard Linden
2013-10-04Merge. Pull in viewer-release after 3.6.7 release.Monty Brandenberg
2013-09-27Up the transfer timeout of small meshes to 120S. This matchesMonty Brandenberg
the change made for MAINT-2347. Large transfers are still 10 minutes. Add/update to-do list and add some more info to the FAQ in the Readme.
2013-09-24SH-3690 SH-4505 Cleanup pass through code.Monty Brandenberg
Start using DNS cache in legacy LLCurl code. Go to 15 seconds particularly as we're using threaded resolver at this point. Documentation cleanup. Add libcurl status checking and logging for curl_easy_setopt() operations that fail. Shouldn't happen and we'll just continue anyway but there's info in the logs to track these down now. Cleaned up logic around FASTTIMER enable defines used to evaluate pipeline stalls in main thread. Removed long-standing thread race around caps strings and URL construction. Not a significant risk but refactoring the code to get rid of them removed one huge eyesore. It can be made even slicker if desired (see notes).
2013-09-20Move from std::queue to std::list which has betterMonty Brandenberg
behavior and swap() as well. Should probably do this for the other queues at some point.
2013-09-20Used a c++11 feature unintentionally. Use a moreMonty Brandenberg
traditional swap-less object transfer.
2013-09-19SH-4516 Fix a subset of thread races in llmeshrepositoryMonty Brandenberg
Much earlier identified some thread races including two on mskininfoq and mdecompositionq. I actually hit one in testing the other day so I'm fixing them now. Put them under the mMutex lock and use the mutex in such a way that main thread stalls are not added.
2013-09-13log spam cleanupBrad Payne (Vir Linden)
2013-09-12SH-4489 New debug/dev settings for control over new mesh behaviorMonty Brandenberg
While giving myself a full project code review, found a bug in the MeshUseGetMesh1 setting. Mostly defaulted to old configuration but used the GetMesh2 caps which would have been a huge DoS resource sink. Did some documentation maintenance as well while I was in there. More for the to-do list, etc.
2013-09-11SH-4490 More 'humane' error code presentation from llcorehttp callersMonty Brandenberg
Added toTerseString() conversion on HttpStatus to generate a string that's more descriptive than the hex value of the HttpStatus value but still forms a short, searchable token (e.g. "Http_503" or "Core_7"). Using this throughout the viewer now, no live cases of toHex(), I believe.
2013-09-11SH-4489 New debug/dev settings for control over new mesh behaviorMonty Brandenberg
Added 'MeshUseGetMesh1' and 'MeshUseHttpRetryAfter' debug settings to control mesh transport behavior. First forces the use of the legacy mesh fetch style with high concurrency and connection churn. The second, on by default, honors Retry-After values if they are reasonable. If off or unreasonable, internal delay times are used.
2013-09-06SH-4478 Corrected/updated error handling for all retrieval operations.Monty Brandenberg
In case of HTTP errors or parsing/processing errors, fail the fetch request rather than do a retry spin. Add logging for all such failure paths. Added a development/debug flag to create probabilistic failures to test these modes and general error recovery by higher-level layers.
2013-08-29Document the fast timer testing apparatus a bit.Monty Brandenberg
2013-08-29Merge. Pull in monty/viewer-drano-metrics. This will likely beMonty Brandenberg
the last time and that repo can soon be abandoned (QA function only).
2013-08-28Add conditional LLFastTimer blocks to stallable main thread methodsMonty Brandenberg
2013-08-16merge with viewer-releaseNyx Linden
2013-08-15SH-4410 Internal Documentation. Update and correct the mutex/dataMonty Brandenberg
lists to reflect current. Describe the functional flow of things for a single LOD request. Put together to-do list for follow on work. Knock down the low/high water limits for GetMesh a bit, 100/200 too high, 75/150 should be better, vis-a-vis pathological failures.
2013-08-09second phase summer cleaningRichard Linden
replace llinfos, lldebugs, etc with new LL_INFOS(), LL_DEBUGS(), etc.
2013-08-07Create separate high/low water level limits for GetMesh andMonty Brandenberg
GetMesh2 capabilities. They should be independent now.
2013-08-06SH-4411 Thread/mutex rework between main and worker threadMonty Brandenberg
Have the ::notifyLoadedMeshes() method doing correct locking and stall avoidance at the same time. This method now does lazy mutex lock acquisition (trylock()) and if it fails on either, it gives up and comes back later. Capture the maximum number of sequential failures and report this at the end of the run in the log. (So far, with big mesh regions, I've only seen 1s and 2s.) Locking/mutex requirements sorted in other locations as well. LLMutex gets trylock() method as well as new LLMutexTrylock scoped locking class. Clean up some documentation, more to do.
2013-08-05Added some simple counters to the mesh repository code and thenMonty Brandenberg
added a Mesh status line to the texture fetch console. Mesh is often in competition with textures and so the mesh information seems appropriate there. Do get a nice feel for progress and you definitely see when the throttles kick in.
2013-08-05Change the setting for GetMesh2 meshes to Mesh2MaxConcurrentRequests.Monty Brandenberg
While linking GetMesh2 to the old setting was simpler from a user point-of-view, they really shouldn't be linked and the old one will go away. This one may be renamed to AssetMaxConcurrentRequests or something similar if we get to the mesh/texture unification step.
2013-07-30SH-4371 Reduce 22mS inter-connection latency.Monty Brandenberg
This really extended into the client-side request throttling. Moved this from llmeshrepository (which doesn't really want to do connection management) into llcorehttp. It's now a class option with configurable rate. This still isn't the right thing to do as it creates coupling between viewer and services. When we get to pipelining, this notion becomes invalid.
2013-07-29SH-4368 Adjust upload timeout parameters for slow networks.Monty Brandenberg
Generally sorted the mesh timeout parameters for maximum transport time (staying with default 30 for connect). 60S for normal meshes, 600S for large. Also documented default option values in httpoptions.h. Useful to have these. In the future, the timeouts might go into standard llsd options where they can be tracked a bit more.
2013-07-25SH-4365 SH-4367 Conversion of mesh uploaders to llcorehttp.Monty Brandenberg
With this checkin, legacy LLCurl is out of the mesh code. Uploaders and responders are converted and functioning. Logging has been cleaned up throughout the code to use the macro form with tag/subtag capability. DEBUGS-level logging added for some upload path milestones. Better error information flow from failed responses to viewer alert boxes but I'd really, really like to do better here. Mesh upload problems are completely opaque as a user. Minor cleanups (removed dead members, method signatures tidied, less data conversion). Could almost call this complete, will likely have platform cleanups, however.
2013-07-23MergeXiaohong Bao
2013-07-18Merge. Refresh from viewer-release.Monty Brandenberg
2013-07-18Merge. Refresh from viewer-release.Monty Brandenberg
2013-07-18SH-4325 Viewer working mixed grid with GetMesh and GetMesh2 capsMonty Brandenberg
Viewer modified for preference for GetMesh2 caps. When found, uses this cap and uses 1/4 the connection concurrency specified by MeshMaxConcurrentRequests. Also uses a modified calculation for high/low water feeding into the llcorehttp library.
2013-06-28SH-4312 Clumsy configuration coordination between mesh and corehttpMonty Brandenberg
Taught llappcorehttp to register signals on the settings values that chagne behavior. Have initialization and settings changes sweep through settings and change them. Dynamic changes are tried but have no effect (produce a warning message) as dynamic settings still aren't supported but the plumbing is now connected. Just need to change llcorehttp. Bounced the 'teleport started' signal around and it ended up back where it started with some cleanup. This is making me less angry...
2013-06-28Merge with viewer-bear which was just merged with viewer-releasecallum_linden
2013-06-27SH-4311 Get highwater limiting of requests into llhttpcore working.Monty Brandenberg
Fixed the logic and have it covering all five types of requests now with validation via an assert (when enabled). Should keep things working smoothly and avoid floods of 503s when in debug modes. Also started a round of file-level documentation detailing thread usage and mutex coverage. More to do, more to describe. But the high- water stuff is functioning correctly.
2013-06-27SH-4310/BUG-2810/MAINT-2794 Better status checking and error logging in ↵Monty Brandenberg
Mesh code. Pay correct attention to status codes coming back from services. Generate better and consistent error messages when problems arise. There's more to do in error handling, need a way to cleanly fail all request types, only have that for LOD at this point. Do better keeping the HTTP pipeline between the low and high water marks. This was made challenging because the outer most code couldn't really see what's going on internally (whose actions are delayed in a worker thread). More to do here, the debug-like requests don't honor limits, that will come later. Made retry counts available from llcorehttp which can be used by the throttle-anticipating logic to advance the count. It helps but it reinforces the coupling between viewer and server which I do not like.
2013-06-20SH-4257 Preparation for a new cap grant: GetMesh2Monty Brandenberg
Mesh repo is using three policy classes now: one for large objects, one for GetMesh2 regions, one for GetMesh regions. It's also detecting the presence of the cap and using the correct class. Class initialization cleaned up significantly in llappcorehttp using data-directed code. Pulled in the changes to HttpHeader done for sunshine-internal then did a refactoring pass on the header callback which now uses a unified approach to clean up and deliver header information to all interested parties. Added support for using Retry-After header information on 503 retries.
2013-06-19Fixups for the transplant of the HttpHeader changes from sunshine.Monty Brandenberg
2013-06-18Occlusion culling overhaul.Dave Parks
2013-06-18merge with viewer-releaseNyx Linden
2013-06-05merge with viewer-releaseRichard Linden
2013-06-03Fix buildsimon
2013-05-30Merge. Pull in viewer-release reflecting new release structure.Monty Brandenberg
2013-05-29Merge downstream codesimon
2013-05-21BUG-2432: Crashfix. Don't call map::erase when the iterator is not valid.Oz Linden