| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
| |
Signed-off-by: nebadon <michael@osgrid.org>
|
|
|
|
|
|
| |
scripts in a region.
Addresses http://opensimulator.org/mantis/view.php?id=5940
|
| |
|
|
|
|
| |
This is for the top scripts report.
|
|
|
|
|
|
|
|
|
|
|
| |
measurement period and an idealised frame time.
The previous lines-per-second measurement used for top scripts report was inaccurate, since lines executed does not reflect time taken to execute.
Also, every fetch of the report would reset all the numbers limiting its usefulness and we weren't even guaranteed to see the top 100.
The actual measurement value should be script execution time per frame but XEngine does not work this way.
Therefore, we use actual script execution time scaled by the measurement period and an idealised frame time.
This is still not ideal but gives reasonable results and allows scripts to be compared.
This commit moves script execution time calculations from SceneGraph into IScriptModule implementations.
|
|
|
|
|
|
|
|
|
|
| |
multiple scripts in the same linkset can cause unnecessary thread aborts.
The first llDie() could lock Scene.m_deleting_scene_object.
The second llDie() would then wait at this lock.
The first llDie() would go on to remove the second script but always abort it since the second script's WorkItem would not go away.
Easiest solution here is to remove the m_deleting_scene_object since it's no longer justified - we no longer lock m_parts but take a copy instead.
This also requires an adjustment in XEngine.OnRemoveScript not to use instance.ObjectID instead when firing the OnObjectRemoved event.
|
|
|
|
|
|
|
|
|
|
| |
to release locks, resulting in a crippled simulator.
This seems to be a particular problem with ReaderWriterLockSlim, though other locks can be affected as well.
It has been seen to happen when llDie() is called in a linkset running more than one script.
Alleviation here means supplying a ScriptInstance.Stop() timeout of 1000ms rather than 0ms, to give events a chance to complete.
Also, we check the IsRunning status at the top of the ScriptInstance.EventProcessor() so that another event doesn't start in the mean time.
Ultimately, a better solution may have to be found since a long-running event would still exceed the timeout and be aborted.
|
|
|
|
|
|
| |
it more understandable as to what it is and what it does (hold a thread pool work item for a waiting of in-progress event)
Also add other various illustrative comments
|
|
|
|
| |
command
|
|
|
|
|
|
|
|
|
|
|
| |
<category/module>" to display commands in a category.
This is to deal with the hundred lines of command splurge when one previously typed "help"
Modelled somewhat on the mysql console
One can still type help <command> to get per command help at any point.
Categories capitalized to avoid conflict with the all-lowercase commands (except for commander system, as of yet).
Does not affect command parsing or any other aspects of the console apart from the help system.
Backwards compatible with existing modules.
|
|
|
|
|
|
| |
status" command.
This is for diagnostic purposes.
|
|
|
|
|
|
|
|
| |
Path.GetDirectoryName when getting assembly loading path in Compiler.CompileFromDotNetText().
The Path.GetDirectoryName call in Compiler.CompileFromDotNetText is unnecessary since AppDomain.CurrentDomain.BaseDirectory is always a directory.
Later path concatenation is already done by Path.Combine() which handles any trailing slash.
Removing Path.GetDirectoryName() will not affect the runtime but allows NUnit to work since it doesn't add a trailing slash to AppDomain.CurrentDomain.BaseDirectory.
|
|
|
|
| |
console lines.
|
|
|
|
| |
command
|
| |
|
| |
|
|
|
|
|
|
| |
display one script's status
Usage is now scripts show [<script-item-uuid>]
|
|
|
|
|
|
|
| |
scripts from the appdomain in XEngine.
All the other actions (script state save, etc.) still occur.
This makes shutdown where there are many scripts vastly quicker.
|
|
|
|
| |
This causes false positives if a simulator has more than 1 region and the current region is 'root' since this sends the command separately to each region and each region has its own XEngine
|
|
|
|
|
|
| |
a single script by giving the script item id (which can be found via scripts show).
Not an ideal way to do this on a region with many scripts. Needs refinement later.
|
|
|
|
|
| |
These will stop all running scripts and start all stopped scripts respectively.
A stopped script does not save any events for later processing.
|
| |
|
|
|
|
|
| |
On resume, we need to place requeue the script for event processing if there are any events on the queue.
Also need to do this under m_Script lock in order to avoid a race
|
|
|
|
|
| |
These aim currently to suspend and resume all scripts.
However, resume isn't currently working due to what looks like a bug in resume functionality itself.
|
|
|
|
| |
The item ID is the one required for any script manipulation on the command line, so I think it's somewhat more useful to show this bearing in mind the limited space available
|
| |
|
|
|
|
|
|
| |
engine in the current region.
Also added synonym of "scripts show"
|
|
|
|
| |
module is disabled.
|
|
|
|
| |
user knows why they are waiting.
|
|
|
|
| |
out that prim's local id in the error message.
|
| |
|
|
|
|
| |
It's never possible for SOG to have no RootPart, except in the first few picosends of the big bang when it's pulled from region persistence or deserialized
|
|
|
|
|
| |
The only times when ParentGroup might be null is during regression tests (which might not be a valid thing) and when scene objects are being constructed from the database.
At all other times it's not possible for a SOP not to have a SOG parent.
|
|
|
|
|
|
| |
Apart from one obvious bug, this was failing because attempting to serialize the script from inside the script (as part of saving the attachment as an inventory asset) was triggering an extremely long delay.
So we now don't do this. The state will be serialized anyway when the avatar normally logs out.
The worst that can happen is that if the client/server crashes, the attachment scripts start without previous state.
|
| |
|
|
|
|
| |
OpenSim.Tests.Common instead
|
| |
|
|
|
|
|
|
|
|
|
| |
Adding ability to place script engine assemblies outside
the codebase directories.
Uses new [XEngine] option: ScriptEnginesPath = "path_to_assemblies"
Signed-off-by: Melanie <melanie@t-data.com>
|
| |
|
| |
|
|
|
|
|
|
| |
Revert "Reverting this for now, but this needs to go in again."
This reverts commit c0d9ab941dd1ab88f00f6d4f2a53a4fe5c605e57.
|
|
|
|
|
|
| |
Revert "Another stab at http://opensimulator.org/mantis/view.php?id=4858. Eliminated more nested locks."
This reverts commit ffbae52a130376ecaa04d7d475709985c62c06ed.
|
|
|
|
| |
more nested locks.
|
|
|
|
| |
Eliminated the nested locks of m_Scripts and m_PrimObjects.
|
|
|
|
|
|
| |
know what"
This reverts commit f798679b8005e532f933553007cca989112f4a1d.
|
|
|
|
| |
this is, you should test it. If you don't, don't use it.
|
|
|
|
| |
region anyway
|
|
|
|
| |
due to unhandled file lock exception. Attempt to resolve by wrapping several instances of file create / read logic in using statements and added some error handling for locked file exceptions. If it is IDisposable, it must be disposed! The close statements are unnecessary but harmless so I have left those in. The end of the using block will close and dispose automagically.
|