* This is being done by preventing close from being called twice on child agent closure (nres which would have been thrown are being swallowed).
* However, it should be possible to do much better cleanup on this code in the future
occasionally, but are fixed on restart (issue 1919).
This patch introduces the following changes:
1. when a user teleports out of Region A, remove that user's profile
from the Region A user profile cache
2. when a user crosses between regions out of Region A, remove that
user's profile from the Region A user profile cache
3. the user profile cache's session ID member can now be set (written),
and is updated each time a connection with a new avatar is established (ie: a
new avatar enters the region)
4. when a region server looks up a user profile and a cache miss
occurs, fetch the user profile from the user server first instead of
immediately returning null
ScenePresence. Pace prim delivery to about 200 updates/s max. Break
a long-held lock that caused the notorious MapBlockQuery XMLRPC timeout
on agent login. Eliminate 60 second timeout at "Waiting for region handshake".
Fix region crossing/teleport response. Fix appearance in primmy regions.
llRezObject changed to llRezAtRoot. llRezObject implemented
to call llRezAtRoot until I can figure out how to calculate
a bounding box. Partial implementation of llPushObject
(no angular impulse applied)
patch attached replaces the tree walk algorithm used to build the
folder hierarchy with a single database query. That is, we replace
1 database query per folder with 1 query for the root folder's
properties and 1 query to retrieve the entire collection of folders for a user.
In case you run the server with mono --debug OpenSim.exe
line numbers are reported as <filename>:<linenumber>, so no
"at line" is found. That led to an exception, which is caught
since r5766. The attached patch fixes this for mono;
Bringing in an old private patch, increasing region registration timeout
to 90 seconds. That allows regions witj > 10000 prims to register
successfully. Running them.... well, YMMV
* If there's a Socket.AlreadyInProgress, just silently ignore this one
* Tried to refactor the Reset and BeginRecieve logic into something a little more readable, little less duplicated
Increase GetUserProfile timeout from 6 to 30 seconds. Because
the worker thread fo the XMLRPC data pump sits on a lock
while the system starts, regions with upwards of 6000 prims
throw and exception when that thread gets blocked for more
than 6 seconds, due to this timeout, and won't start.
When a region is re-registered (e.g. because of region restart),
it is removed from m_regions. If I understood that correctly,
the old entry should be replaced, instead.
This fixes a sitting problem which popped up on loading regions from
archive and turned out to be caused by the fact that the archiving
mechanisms all preserve the sit-target information that is set in the
object at the time the image is captured. This caused the new region
to pick a sit-target prim that did not correspond to the prim on which
the script was running, so the script's changed event is driven with
an invalid avatar UUID.
I have modified the ArchiveReadRequest class so that any sit information
that survives the archiving process is deleted before the object is
instantiated. This change has just been checked in.