Commit Graph

282 Commits

Author SHA1 Message Date
Justin Clark-Casey (justincc)
86367d7219 refactor: Move methods to start a monitored thread, start work in its own thread and run work in the jobengine from Watchdog to a WorkManager class.
This is to achieve a clean separation of concerns - the watchdog is an inappropriate place for work management.
Also adds a WorkManager.RunInThreadPool() class which feeds through to Util.FireAndForget.
Also switches around the name and obj arguments to the new RunInThread() and RunJob() methods so that the callback obj comes after the callback as seen in the SDK and elsewhere
2014-11-25 23:56:32 +00:00
Justin Clark-Casey (justincc)
66b1c37973 Fix bug in HG attachment throttling code where attachments were never rezzed on any teleport within a foreign grid after the first.
Bug was introduced in ghosts branch commit 69abade
2014-11-25 23:23:12 +00:00
Justin Clark-Casey (justincc)
aeae34505f When processing incoming attachments via HG, if a request for uuid gathering or final asset import takes too long remove remaining requests from same user to prevent hold up of other user's incoming attachments.
This improves upon the earlier naive simply queueing immplementation.
Threshold is 30 seconds.  If this happens to a user they can relog and fetch will be reattempted.
2014-11-25 23:23:11 +00:00
Justin Clark-Casey (justincc)
06a5d6e9ef Introduce an IteratingUuidGatherer where each fetch from the asset service (iteration) can be controlled by the caller.
This is to enable an imminent change where incoming HG scene object fetching can assess the time taken by each request rather than being forced to perform all requests in one call.
Soon, this will replace the existing UuidGatherer since it is both simpler and more flexible.
2014-11-25 23:23:11 +00:00
Justin Clark-Casey (justincc)
d6c9705a3b Add incoming packet async handling engine to queue some inbound udp async requests.
This is to reduce the potential for overload of the threadpool if there are many simultaneous requets in high concurrency situations.
Currently only applied to AvatarProperties and GenericMessage requests.
2014-11-25 23:23:11 +00:00
Justin Clark-Casey (justincc)
1c5c6af274 Add missing class from recent commit 69abade 2014-11-25 23:23:10 +00:00
Justin Clark-Casey (justincc)
f54c70741b Add "show threadpool calls active" console debug command.
This shows named threadpool calls (excluding timer and network calls) that are currently queued or running.
Also shows total of labelled and any anonymous calls.
2014-11-25 23:23:10 +00:00
Justin Clark-Casey (justincc)
1d19e1bbd0 Add naive implementation of controlled incoming HG attachments to manage load.
Instead of processing all incoming attachment scene object concurrently, process them consecutively to eliminate potential overload from this source.
This is a naive implementation because it does not currently account for slow foreign asset services.
Although it may take longer, this approach may also improve attachment visibility for HG avatars
since the scene object is now always added to the scene after receiving assets from the foreign service and not before.
2014-11-25 23:23:10 +00:00
Justin Clark-Casey (justincc)
ec8d21c434 Label all threadpool calls being made in core OpenSimulator. This is to add problem diagnosis.
"show threadpool calls" now also returns named (labelled), anonymous (unlabelled) and total call stats.
2014-11-25 23:23:10 +00:00
Justin Clark-Casey (justincc)
dacd0ecfee minor: Remove unused field from EntityTransferModule 2014-11-25 23:21:37 +00:00
Justin Clark-Casey (justincc)
458ccd26ff Use Scene or IEntityTransferModule directly in HGEntityTransferModule instead of casting or re-obtaining module.
This code originates from when IEntityTransferModule was shared rather than one per region.
Now it's one per region we know that callers are always in the same scene as the module.
2014-10-08 23:16:01 +01:00
AliciaRaven
8d4c1945c2 HG Restricted appearance checking code is only called when HG teleporting via the map but bypassed completely when teleporting via landmarks. This fixes this by including a call when acting on landmarks. Does not affect local grid teleports as flags are checked. 2014-10-08 23:04:19 +01:00
Justin Clark-Casey (justincc)
91e1aaa5d4 On teleport to a region that already has a child agent established (e.g. a neighbour) don't resend all the initial avatar and object data again.
This is unnecessary since it has been received (and data continues to be received) in the existing child connection.
2014-08-15 21:47:34 +01:00
Michael Cerquoni
e455374a4b fix all instances of "non-existant" to "non-existent" (spelling mistakes) thanks Ai Austin for pointing this out. 2014-07-17 09:37:24 -04:00
Justin Clark-Casey (justincc)
20b47fce07 Still log (but this time with warning rather than an exception) if we regenerate a new child caps seed for a region where we already have one.
I think it's still useful to know this to show up any errors early, but it's reasonable to still carry on rather than throw an exception.
Follow on from Diva's commit 9643792
2014-07-04 22:59:10 +01:00
Diva Canto
d99c8e68a7 It turns out that child agent management has had a bug for a while: there was an inconsistency in the scope between opening and closing child agents in neighboring regions. For opening (in EnableChildAgents), the region's DrawDistance was being used; for closing (in IsOUtsideView) , the viewer's (SP) DrawDistance was being used. This fixes this inconsistency, therefore eliminating bugs observed in TPs between, at least, neighboring varregions. 2014-07-04 10:13:53 -07:00
Diva Canto
9643792b34 Avoid an exception in creating child agents some times. 2014-07-03 20:09:16 -07:00
Diva Canto
fe779128b0 Added simulation version compatibility check so that agents coming from 0.7.6 to a varregion running in 0.8 and above will be denied teleport, rather than be allowed and crash the viewer. 2014-06-06 11:04:53 -07:00
Robert Adams
22dade6463 varregion: More tweeking to only sending patches within avatar draw distance.
Still has problems with child avatars.
2014-05-31 12:19:50 -07:00
Oren Hurvitz
47b84875fd Tell QueryAccess explicitly whether the user is coming in via Teleport or Cross, because the permission checks are different.
Previously we used a heuristic of checking if the entry position is 0 to differentiate between Teleport and Cross, but that doesn't work anymore since we've started providing the precise entry position for cross, too. That's required in order to ensure that the user is allowed to enter the parcel that he's walking into.
2014-05-19 11:19:11 +01:00
Oren Hurvitz
dd30a29ba0 Return more specific error messages if an attempt to enter a region fails due to permissions (in QueryAccess and IsAuthorizedForRegion) 2014-05-19 11:11:30 +01:00
Oren Hurvitz
998d7009a6 Eliminated many warnings 2014-04-23 16:37:36 +03:00
Oren Hurvitz
b3ebec184f In teleports, when sending the Source region, set its ServerURI to the Gatekeeper URI (which is used with Regions); not the Home URI (which is used with Users) 2014-04-13 12:58:37 +03:00
Oren Hurvitz
06e0528d0b In teleports, pass the source region to the destination (similar to an HTTP referrer) 2014-04-09 09:22:20 +01:00
Oren Hurvitz
af406748a2 Improved error messages when a teleport fails. The viewer's dialog already says "Teleport failed", so adding "Teleport refused" is redundant. 2014-04-08 08:11:30 +01:00
Oren Hurvitz
85d51e57a9 When sending QueryAccess to a region, also send the user's Home URI 2014-04-07 07:32:36 +01:00
Oren Hurvitz
55cc8044cb Refactored: use Scene.GetAgentHomeURI() to get the Home URI of a user 2014-04-07 07:26:44 +01:00
Oren Hurvitz
f3508649f5 Fixed: during a teleport we always sent the error "The teleport destination could not be found" to the client. This happened on both success and failure.
On successful teleports this error wasn't actually shown to the user. But on failed teleports this error could hide the true cause of the failure. For example, attempting to use a Landmark that's more than 4095 regions away would result in two warnings appearing in the viewer: "Region too far" and "Destination could not be found". The second message hid the first one, so it wasn't obvious to the user what is actually the problem.
2014-04-06 15:42:33 +01:00
Oren Hurvitz
abe0f4a088 When preparing a Hypergrid teleport, tell the receiving grid which user is entering the grid.
This can affect which region to use. E.g., returning users may be allowed to enter any region, whereas users from other grids will have to enter a gateway region. Previously per-user decisions were only made later, but by then it's too late to change which region the user enters.
2014-04-06 15:40:45 +01:00
Oren Hurvitz
d4acaf25af Pass the correct position to QueryAccess() instead of UUID.Zero (it was wrong in one place) 2014-04-06 15:40:45 +01:00
Oren Hurvitz
6d2893be67 When teleporting using Hypergrid, show more informative error messages in case of error 2014-04-03 14:13:03 +01:00
Robert Adams
65c4cb48ac BulletSim: make avatar physical shape to be a rectangle rather than
a capsule. Set the default to be the rectangle shape and adjust the
parameters in OpenSimDefaults.ini for the new shape.

The rectangle shape will perform better and avatar height can be
computed more accurately.
2014-04-02 21:53:58 -07:00
Justin Clark-Casey (justincc)
17929abd28 Wrap contents of ETM.CrossAgentToNewRegionAsync() in try/catch to avoid a failure terminating simulators running on Windows
In relation to http://opensimulator.org/mantis/view.php?id=7050
2014-04-03 00:34:20 +01:00
dahlia
a2866b85f3 add newRegion parameter to CrossAgentToNewRegion event and trigger the event after crossing thread is invoked 2014-02-20 00:18:28 -08:00
Robert Adams
7fc289c039 Properly restore position on crossing failure for mega-regions.
Fix odd "cannot cross into banned parcel" viewer error message when crossing
into non-existant region. Proper permission failure messages are now returned.
2014-02-15 17:02:53 -08:00
Robert Adams
877bdcdce1 Rewrite of mega-region code to use new form of border checking.
This commit eliminates all of the 'border' class and list code and replaces
it with testing if in the current region.
Impacts: can make a mega-region out of varregions of the same size; and
mega-region combinations must be rectangular (not square but rectangular)
2014-02-15 16:01:43 -08:00
Justin Clark-Casey (justincc)
ffd0da23fb Merge branch 'justincc-master' 2014-02-14 00:16:17 +00:00
Justin Clark-Casey (justincc)
f49d513089 Change warns associated with UserAgentServiceConnector to debugs, as this is not necessarily a problen with the source simulator (e.g. someone else's remote simulator cannot be contacted).
This is Oren Hurvitz's second patch from http://opensimulator.org/mantis/view.php?id=6956 with a small amount of correction
2014-02-14 00:08:13 +00:00
Justin Clark-Casey (justincc)
fc35b45e21 If calls to UserAgentServiceConnector fail then throw an exception. This lets the caller decide whether to discard the error or not.
This is Oren Hurvitz's 0001 patch from http://opensimulator.org/mantis/view.php?id=6956 but I ended up doing some tweaking to resolve patch application issues.
2014-02-14 00:01:12 +00:00
Robert Adams
49af6b53e7 varregion: enable teleporting to a varregion by clicking on the map and
pressing the 'teleport' button.
This commit adds returning region map info for all the subregions of a
varregion. This also handles the selection of the extra region and then
the displacement of the postion so the teleport is to the correct location.
2014-01-26 19:32:28 -08:00
Robert Adams
4c362a83f9 Merge branch 'master' into varregion 2014-01-21 11:31:51 -08:00
Oren Hurvitz
3018b2c5d7 Materials module: a) Store materials as assets; b) Finalized it (removed the "Demo" label; removed most of the logging); c) Enabled by default
Changed UuidGatherer to use 'sbyte' to identify assets instead of 'AssetType'. This lets UuidGatherer handle Materials, which are defined in a different enum from 'AssetType'.
2014-01-20 00:38:42 -08:00
Robert Adams
f127e4b4ee Merge branch 'master' into varregion 2014-01-19 07:38:53 -08:00
Justin Clark-Casey (justincc)
9fefbcf7fc minor: since structs are values, assigning them to another variable copies it. Instantiation is unnecessary. 2014-01-17 23:32:37 +00:00
Robert Adams
38148bd4b6 Some missing definitions needed for successful compilation. 2014-01-04 19:01:05 -08:00
Robert Adams
7e32313a49 varregion: Add region size to teleport event messages (EnableSimulator,
CorssRegion, TeleportFinishEvent).
Have Simian grid service return the region size.
Many teleport related debug log messages. Can be removed when teleport
works (like that's ever going to happen).

Conflicts:

	OpenSim/Framework/RegionInfo.cs
2014-01-04 19:01:04 -08:00
Robert Adams
9984ecf862 varregion: Add region size to teleport event messages (EnableSimulator,
CorssRegion, TeleportFinishEvent).
Have Simian grid service return the region size.
Many teleport related debug log messages. Can be removed when teleport
works (like that's ever going to happen).
2014-01-03 07:41:06 -08:00
Robert Adams
01c0bbf181 varregion: extract banned region logic into a class for cleanlyness.
Add 'not found' caching in EntityTransferModule.GetRegionContainingWorldLocation
so hitting borders and bad teleports do not continuiously hammer on the GridService.
2013-12-27 08:23:37 -08:00
Robert Adams
2d2bea4aa7 varregion: many more updates removing the constant RegionSize and replacing
with a passed region size. This time in the map code and grid services code.
2013-12-26 22:45:59 -08:00
Robert Adams
e5f7c8b6e8 varregion: add lots of DEBUG level log messages. Especially for teleport. 2013-12-24 12:31:26 -08:00