Age | Commit message (Collapse) | Author |
|
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.
|
|
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).
|
|
behavior and swap() as well. Should probably do this
for the other queues at some point.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
Added second mesh class as well as an asset upload class.
Refactored initialization to use less code and more data to
cleanly get http started. Modified mesh to use the new
http class for large requests (>2MB for now). Added additional
timeout setting to llcorehttp to distinguish connection timeout
from transport timeout and are now using transport timeout
values for large asset downloads that may need more time.
|
|
after delete, erase() on end() iterator, a few more like that.
Killed a dead variable.
|
|
|
|
Initial work completed on linux, moving over to windows to do debug
and refinement. This includes 5/6 handlers based on existing responders
and use of llcorehttp for the mesh header fetch.
|
|
Timer interface violated my design rules and I paid for it
with clumsiness and silent errors. Cleaned it up mainly
removing the evil default values. Found better integration
points in the mesh downloader and it's producing fairly
consistent numbers on the MeshTest2 test region (about
5500 downloads, ~90 seconds, +/- 10 seconds). Will review
with davep and do an early timer stop on teleport which
invalidates a timing sequence.
|
|
windows
to do real work.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lowercased version of the header file names.
|
|
|
|
|
|
|
|
Will clean this up to be more in line with our standards later
|
|
|
|
crashes.
|
|
|
|
performance tested impact of animated textures
Also did some cleanup to ensure branch built and ran properly after
last merge.
|
|
|
|
LLPhysicsDecomp::doDecompositionSingleHull warnings
SH-1333: [PUBLIC] Simple mesh causing the viewer to crash
|
|
around magic numbers, remove dead calcResourceCost
|
|
|
|
LLPhysicsDecomp::doDecompositionSingleHull warnings
SH-1333: [PUBLIC] Simple mesh causing the viewer to crash
|
|
|
|
|
|
Name of mesh is not loaded into mesh uploader floater. Also removed a lot of dead mesh uploader code.
|
|
gracefully
Restructured the code to be a bit cleaner, now have callbacks with appropriate functionality
in both the wizard and advanced uploaders. If the upload fails, it requires the user to
re-submit the recalculate request.
|
|
adding observer classes for the upload step so we don't move to success state until upload succeeds.
|
|
upload fee & prim equivalency)
- Changed XUI according to the spec
- Added requesting upload permission, physics weight and fee weight
- Split requesting fee and uploading model steps in mesh repository
|
|
|
|
eliminated crashing, but still failed to upload it.
|
|
skpfile.dae model with High LOD selected as Physics shape
|
|
|
|
MissingString MacLocale warnings. Reviewed by Dave
|
|
|