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.mb-throttle-test
parent
72cb1cc7d6
commit
ec8d21c434
|
@ -483,7 +483,7 @@ namespace OpenSim.Framework.Communications
|
|||
/// In case, we are invoked asynchroneously this object will keep track of the state
|
||||
/// </summary>
|
||||
AsyncResult<Stream> ar = new AsyncResult<Stream>(callback, state);
|
||||
Util.FireAndForget(RequestHelper, ar);
|
||||
Util.FireAndForget(RequestHelper, ar, "RestClient.BeginRequest");
|
||||
return ar;
|
||||
}
|
||||
|
||||
|
|
|
@ -365,13 +365,21 @@ namespace OpenSim.Framework.Servers
|
|||
{
|
||||
List<KeyValuePair<string, int>> calls = Util.GetFireAndForgetCallsMade().ToList();
|
||||
calls.Sort((kvp1, kvp2) => kvp2.Value.CompareTo(kvp1.Value));
|
||||
int namedCallsMade = 0;
|
||||
|
||||
ConsoleDisplayList cdl = new ConsoleDisplayList();
|
||||
foreach (KeyValuePair<string, int> kvp in calls)
|
||||
{
|
||||
cdl.AddRow(kvp.Key, kvp.Value);
|
||||
namedCallsMade += kvp.Value;
|
||||
}
|
||||
|
||||
cdl.AddRow("TOTAL NAMED", namedCallsMade);
|
||||
|
||||
long allCallsMade = Util.TotalFireAndForgetCallsMade;
|
||||
cdl.AddRow("TOTAL ANONYMOUS", allCallsMade - namedCallsMade);
|
||||
cdl.AddRow("TOTAL ALL", allCallsMade);
|
||||
|
||||
MainConsole.Instance.Output(cdl.ToString());
|
||||
}
|
||||
|
||||
|
|
|
@ -1928,11 +1928,6 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
public static void FireAndForget(System.Threading.WaitCallback callback)
|
||||
{
|
||||
FireAndForget(callback, null, null);
|
||||
}
|
||||
|
||||
public static void InitThreadPool(int minThreads, int maxThreads)
|
||||
{
|
||||
if (maxThreads < 2)
|
||||
|
@ -1977,8 +1972,7 @@ namespace OpenSim.Framework
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Additional information about threads in the main thread pool. Used to time how long the
|
||||
/// thread has been running, and abort it if it has timed-out.
|
||||
|
@ -2052,10 +2046,10 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private static long nextThreadFuncNum = 0;
|
||||
private static long numQueuedThreadFuncs = 0;
|
||||
private static long numRunningThreadFuncs = 0;
|
||||
private static long numTotalThreadFuncsCalled = 0;
|
||||
private static Int32 threadFuncOverloadMode = 0;
|
||||
|
||||
// Maps (ThreadFunc number -> Thread)
|
||||
|
@ -2086,20 +2080,29 @@ namespace OpenSim.Framework
|
|||
}
|
||||
}
|
||||
|
||||
public static long TotalFireAndForgetCallsMade { get { return numTotalThreadFuncsCalled; } }
|
||||
|
||||
public static Dictionary<string, int> GetFireAndForgetCallsMade()
|
||||
{
|
||||
return new Dictionary<string, int>(m_fireAndForgetCallsMade);
|
||||
}
|
||||
}
|
||||
|
||||
private static Dictionary<string, int> m_fireAndForgetCallsMade = new Dictionary<string, int>();
|
||||
|
||||
public static void FireAndForget(System.Threading.WaitCallback callback)
|
||||
{
|
||||
FireAndForget(callback, null, null);
|
||||
}
|
||||
|
||||
public static void FireAndForget(System.Threading.WaitCallback callback, object obj)
|
||||
{
|
||||
FireAndForget(callback, obj, null);
|
||||
}
|
||||
|
||||
|
||||
public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context)
|
||||
{
|
||||
Interlocked.Increment(ref numTotalThreadFuncsCalled);
|
||||
|
||||
if (context != null)
|
||||
{
|
||||
if (!m_fireAndForgetCallsMade.ContainsKey(context))
|
||||
|
|
|
@ -1161,7 +1161,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
/// <param name="map">heightmap</param>
|
||||
public virtual void SendLayerData(float[] map)
|
||||
{
|
||||
Util.FireAndForget(DoSendLayerData, m_scene.Heightmap.GetTerrainData());
|
||||
Util.FireAndForget(DoSendLayerData, m_scene.Heightmap.GetTerrainData(), "LLClientView.DoSendLayerData");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -1373,7 +1373,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
/// <param name="windSpeeds">16x16 array of wind speeds</param>
|
||||
public virtual void SendWindData(Vector2[] windSpeeds)
|
||||
{
|
||||
Util.FireAndForget(DoSendWindData, windSpeeds);
|
||||
Util.FireAndForget(DoSendWindData, windSpeeds, "LLClientView.SendWindData");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -1382,7 +1382,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
/// <param name="windSpeeds">16x16 array of cloud densities</param>
|
||||
public virtual void SendCloudData(float[] cloudDensity)
|
||||
{
|
||||
Util.FireAndForget(DoSendCloudData, cloudDensity);
|
||||
Util.FireAndForget(DoSendCloudData, cloudDensity, "LLClientView.SendCloudData");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -8093,7 +8093,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
{
|
||||
// This requests the asset if needed
|
||||
HandleSimInventoryTransferRequestWithPermsCheck(sender, transfer);
|
||||
});
|
||||
}, null, "LLClientView.HandleTransferRequest");
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -732,7 +732,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
if (!m_udpServer.OqrEngine.IsRunning)
|
||||
{
|
||||
// Asynchronously run the callback
|
||||
Util.FireAndForget(FireQueueEmpty, categories);
|
||||
Util.FireAndForget(FireQueueEmpty, categories, "LLUDPClient.BeginFireQueueEmpty");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -991,7 +991,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
// Fire this out on a different thread so that we don't hold up outgoing packet processing for
|
||||
// everybody else if this is being called due to an ack timeout.
|
||||
// This is the same as processing as the async process of a logout request.
|
||||
Util.FireAndForget(o => DeactivateClientDueToTimeout(client, timeoutTicks));
|
||||
Util.FireAndForget(
|
||||
o => DeactivateClientDueToTimeout(client, timeoutTicks), null, "LLUDPServer.DeactivateClientDueToTimeout");
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -1225,7 +1226,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
// buffer.
|
||||
object[] array = new object[] { new IPEndPoint(endPoint.Address, endPoint.Port), packet };
|
||||
|
||||
Util.FireAndForget(HandleUseCircuitCode, array);
|
||||
Util.FireAndForget(HandleUseCircuitCode, array, "LLUDPServer.HandleUseCircuitCode");
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -1238,7 +1239,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
// buffer.
|
||||
object[] array = new object[] { new IPEndPoint(endPoint.Address, endPoint.Port), packet };
|
||||
|
||||
Util.FireAndForget(HandleCompleteMovementIntoRegion, array);
|
||||
Util.FireAndForget(
|
||||
HandleCompleteMovementIntoRegion, array, "LLUDPServer.HandleCompleteMovementIntoRegion");
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -167,7 +167,7 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
|
|||
|
||||
// Do Decode!
|
||||
if (decode)
|
||||
Util.FireAndForget(delegate { Decode(assetID, j2kData); });
|
||||
Util.FireAndForget(delegate { Decode(assetID, j2kData); }, null, "J2KDecoderModule.BeginDecode");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -302,7 +302,7 @@ namespace OpenSim.Region.CoreModules.Asset
|
|||
}
|
||||
|
||||
Util.FireAndForget(
|
||||
delegate { WriteFileCache(filename, asset); });
|
||||
delegate { WriteFileCache(filename, asset); }, null, "FlotsamAssetCache.UpdateFileCache");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
|
@ -593,7 +593,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
|||
|
||||
if (sendTime < now)
|
||||
{
|
||||
Util.FireAndForget(o => SendAppearance(avatarID));
|
||||
Util.FireAndForget(o => SendAppearance(avatarID), null, "AvatarFactoryModule.SendAppearance");
|
||||
m_sendqueue.Remove(avatarID);
|
||||
}
|
||||
}
|
||||
|
@ -611,7 +611,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
|||
|
||||
if (sendTime < now)
|
||||
{
|
||||
Util.FireAndForget(o => SaveAppearance(avatarID));
|
||||
Util.FireAndForget(o => SaveAppearance(avatarID), null, "AvatarFactoryModule.SaveAppearance");
|
||||
m_savequeue.Remove(avatarID);
|
||||
}
|
||||
}
|
||||
|
@ -1038,7 +1038,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
|||
client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++);
|
||||
else
|
||||
m_log.WarnFormat("[AVFACTORY]: Client_OnRequestWearables unable to find presence for {0}", client.AgentId);
|
||||
});
|
||||
}, null, "AvatarFactoryModule.OnClientRequestWearables");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -187,7 +187,7 @@ namespace OpenSim.Region.CoreModules.Avatar.BakedTextures
|
|||
{
|
||||
rc.Request(reqStream, m_Auth);
|
||||
m_log.DebugFormat("[XBakes]: stored {0} textures for user {1}", data.Length, agentId);
|
||||
}
|
||||
}, null, "XBakesModule.Store"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -511,7 +511,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
|||
|
||||
// Notify about this user status
|
||||
StatusNotify(friendList, agentID, online);
|
||||
}
|
||||
}, null, "FriendsModule.StatusChange"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -660,7 +660,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
|||
FriendsService.Delete(friendUUI, agentID.ToString());
|
||||
|
||||
// notify the exfriend's service
|
||||
Util.FireAndForget(delegate { Delete(exfriendID, agentID, friendUUI); });
|
||||
Util.FireAndForget(
|
||||
delegate { Delete(exfriendID, agentID, friendUUI); }, null, "HGFriendsModule.DeleteFriendshipForeignFriend");
|
||||
|
||||
m_log.DebugFormat("[HGFRIENDS MODULE]: {0} terminated {1}", agentID, friendUUI);
|
||||
return true;
|
||||
|
@ -678,7 +679,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
|||
FriendsService.Delete(agentUUI, exfriendID.ToString());
|
||||
|
||||
// notify the agent's service?
|
||||
Util.FireAndForget(delegate { Delete(agentID, exfriendID, agentUUI); });
|
||||
Util.FireAndForget(
|
||||
delegate { Delete(agentID, exfriendID, agentUUI); }, null, "HGFriendsModule.DeleteFriendshipLocalFriend");
|
||||
|
||||
m_log.DebugFormat("[HGFRIENDS MODULE]: {0} terminated {1}", agentUUI, exfriendID);
|
||||
return true;
|
||||
|
|
|
@ -213,7 +213,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
|||
HandleUndeliverableMessage(im, result);
|
||||
else
|
||||
result(success);
|
||||
});
|
||||
}, null, "HGMessageTransferModule.SendInstantMessage");
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -194,7 +194,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
|
|||
Util.FireAndForget(delegate
|
||||
{
|
||||
GetImageAssets(((IScenePresence)obj).UUID);
|
||||
});
|
||||
}, null, "UserProfileModule.GetImageAssets");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -169,7 +169,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
AgentCircuitData aCircuit = Scene.AuthenticateHandler.GetAgentCircuitData(so.AttachedAvatar);
|
||||
if (aCircuit != null && (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0)
|
||||
{
|
||||
if (aCircuit.ServiceURLs != null && aCircuit.ServiceURLs.ContainsKey("AssetServerURI"))
|
||||
if (aCircuit.ServiceURLs != null && aCircuit.ServiceURLs.ContainsKey("AssetServRezerURI"))
|
||||
{
|
||||
string url = aCircuit.ServiceURLs["AssetServerURI"].ToString();
|
||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Incoming attachment {0} for HG user {1} with asset server {2}", so.Name, so.AttachedAvatar, url);
|
||||
|
|
|
@ -295,7 +295,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
|||
|
||||
if (asset != null)
|
||||
{
|
||||
Util.FireAndForget(delegate { handler(id, sender, asset); });
|
||||
Util.FireAndForget(delegate { handler(id, sender, asset); }, null, "HGAssetBroker.GotFromCache");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -236,7 +236,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
|||
|
||||
if (asset != null)
|
||||
{
|
||||
Util.FireAndForget(delegate { handler(id, sender, asset); });
|
||||
Util.FireAndForget(
|
||||
o => handler(id, sender, asset), null, "LocalAssetServiceConnector.GotFromCacheCallback");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -249,7 +250,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
|||
// if (null == a)
|
||||
// m_log.WarnFormat("[LOCAL ASSET SERVICES CONNECTOR]: Could not asynchronously find asset with id {0}", id);
|
||||
|
||||
Util.FireAndForget(delegate { handler(assetID, s, a); });
|
||||
Util.FireAndForget(
|
||||
o => handler(assetID, s, a), null, "LocalAssetServiceConnector.GotFromServiceCallback");
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -226,7 +226,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// We must take a copy here since handle is acts like a reference when used in an iterator.
|
||||
// This leads to race conditions if directly passed to SendCloseChildAgent with more than one neighbour region.
|
||||
ulong handleCopy = handle;
|
||||
Util.FireAndForget((o) => { SendCloseChildAgent(agentID, handleCopy, auth_code); });
|
||||
Util.FireAndForget(
|
||||
o => SendCloseChildAgent(agentID, handleCopy, auth_code),
|
||||
null,
|
||||
"SceneCommunicationService.SendCloseChildAgentConnections");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1235,7 +1235,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
string.Format("Rez attachments for {0} in {1}", Name, Scene.Name),
|
||||
null);
|
||||
else
|
||||
Util.FireAndForget(o => Scene.AttachmentsModule.RezAttachments(this));
|
||||
Util.FireAndForget(
|
||||
o => Scene.AttachmentsModule.RezAttachments(this), null, "ScenePresence.RezAttachmentsOnLogin");
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1338,7 +1339,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
UseFakeGroupTitle = false;
|
||||
SendAvatarDataToAllClients(false);
|
||||
});
|
||||
}, null, "Scenepresence.ForceViewersUpdateName");
|
||||
}
|
||||
|
||||
public int GetStateSource()
|
||||
|
@ -3645,7 +3646,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
agentpos.CopyFrom(cadu, ControllingClient.SessionId);
|
||||
|
||||
// Let's get this out of the update loop
|
||||
Util.FireAndForget(delegate { m_scene.SendOutChildAgentUpdates(agentpos, this); });
|
||||
Util.FireAndForget(
|
||||
o => m_scene.SendOutChildAgentUpdates(agentpos, this), null, "ScenePresence.SendOutChildAgentUpdates");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4515,7 +4517,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}, null, "ScenePresence.SendScriptEventToAttachments");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -323,7 +323,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
public UUID JsonRezAtRoot(UUID hostID, UUID scriptID, string item, Vector3 pos, Vector3 vel, Quaternion rot, string param)
|
||||
{
|
||||
UUID reqID = UUID.Random();
|
||||
Util.FireAndForget(o => DoJsonRezObject(hostID, scriptID, reqID, item, pos, vel, rot, param));
|
||||
Util.FireAndForget(
|
||||
o => DoJsonRezObject(hostID, scriptID, reqID, item, pos, vel, rot, param), null, "JsonStoreScriptModule.DoJsonRezObject");
|
||||
return reqID;
|
||||
}
|
||||
|
||||
|
@ -336,7 +337,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
public UUID JsonReadNotecard(UUID hostID, UUID scriptID, UUID storeID, string path, string notecardIdentifier)
|
||||
{
|
||||
UUID reqID = UUID.Random();
|
||||
Util.FireAndForget(o => DoJsonReadNotecard(reqID, hostID, scriptID, storeID, path, notecardIdentifier));
|
||||
Util.FireAndForget(
|
||||
o => DoJsonReadNotecard(reqID, hostID, scriptID, storeID, path, notecardIdentifier), null, "JsonStoreScriptModule.JsonReadNotecard");
|
||||
return reqID;
|
||||
}
|
||||
|
||||
|
@ -349,7 +351,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
public UUID JsonWriteNotecard(UUID hostID, UUID scriptID, UUID storeID, string path, string name)
|
||||
{
|
||||
UUID reqID = UUID.Random();
|
||||
Util.FireAndForget(delegate(object o) { DoJsonWriteNotecard(reqID,hostID,scriptID,storeID,path,name); });
|
||||
Util.FireAndForget(
|
||||
o => DoJsonWriteNotecard(reqID,hostID,scriptID,storeID,path,name), null, "JsonStoreScriptModule.DoJsonWriteNotecard");
|
||||
return reqID;
|
||||
}
|
||||
|
||||
|
@ -464,7 +467,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
public UUID JsonTakeValue(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||
{
|
||||
UUID reqID = UUID.Random();
|
||||
Util.FireAndForget(delegate(object o) { DoJsonTakeValue(scriptID,reqID,storeID,path,false); });
|
||||
Util.FireAndForget(
|
||||
o => DoJsonTakeValue(scriptID,reqID,storeID,path,false), null, "JsonStoreScriptModule.DoJsonTakeValue");
|
||||
return reqID;
|
||||
}
|
||||
|
||||
|
@ -472,7 +476,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
public UUID JsonTakeValueJson(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||
{
|
||||
UUID reqID = UUID.Random();
|
||||
Util.FireAndForget(delegate(object o) { DoJsonTakeValue(scriptID,reqID,storeID,path,true); });
|
||||
Util.FireAndForget(
|
||||
o => DoJsonTakeValue(scriptID,reqID,storeID,path,true), null, "JsonStoreScriptModule.DoJsonTakeValueJson");
|
||||
return reqID;
|
||||
}
|
||||
|
||||
|
@ -485,7 +490,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
public UUID JsonReadValue(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||
{
|
||||
UUID reqID = UUID.Random();
|
||||
Util.FireAndForget(delegate(object o) { DoJsonReadValue(scriptID,reqID,storeID,path,false); });
|
||||
Util.FireAndForget(
|
||||
o => DoJsonReadValue(scriptID,reqID,storeID,path,false), null, "JsonStoreScriptModule.DoJsonReadValue");
|
||||
return reqID;
|
||||
}
|
||||
|
||||
|
@ -493,7 +499,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
public UUID JsonReadValueJson(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||
{
|
||||
UUID reqID = UUID.Random();
|
||||
Util.FireAndForget(delegate(object o) { DoJsonReadValue(scriptID,reqID,storeID,path,true); });
|
||||
Util.FireAndForget(
|
||||
o => DoJsonReadValue(scriptID,reqID,storeID,path,true), null, "JsonStoreScriptModule.DoJsonReadValueJson");
|
||||
return reqID;
|
||||
}
|
||||
|
||||
|
|
|
@ -294,7 +294,8 @@ namespace OpenSim.Region.OptionalModules.ViewerSupport
|
|||
for (int i = 0 ; i < selection.Count ; i++)
|
||||
sel.Add(selection[i].AsUInteger());
|
||||
|
||||
Util.FireAndForget(x => { m_module.HandleMenuSelection(action, m_agentID, sel); });
|
||||
Util.FireAndForget(
|
||||
x => { m_module.HandleMenuSelection(action, m_agentID, sel); }, null, "DynamicMenuModule.HandleMenuSelection");
|
||||
|
||||
Encoding encoding = Encoding.UTF8;
|
||||
return encoding.GetBytes(OSDParser.SerializeLLSDXmlString(new OSD()));
|
||||
|
|
|
@ -3343,7 +3343,7 @@ Console.WriteLine(" JointCreateFixed");
|
|||
RequestAssetDelegate assetProvider = _parent_scene.RequestAssetMethod;
|
||||
if (assetProvider != null)
|
||||
assetProvider(_pbs.SculptTexture, MeshAssetReceived);
|
||||
});
|
||||
}, null, "ODEPrim.CheckMeshAsset");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2979,7 +2979,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
money.ObjectGiveMoney(
|
||||
m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount);
|
||||
});
|
||||
}, null, "LSL_Api.llGiveMoney");
|
||||
}
|
||||
|
||||
public void llMakeExplosion(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset)
|
||||
|
@ -3075,7 +3075,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
}
|
||||
// Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay)
|
||||
}
|
||||
});
|
||||
}, null, "LSL_Api.llRezAtRoot");
|
||||
|
||||
//ScriptSleep((int)((groupmass * velmag) / 10));
|
||||
ScriptSleep(100);
|
||||
|
@ -3270,7 +3270,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
/// </remarks>
|
||||
public void DetachFromAvatar()
|
||||
{
|
||||
Util.FireAndForget(DetachWrapper, m_host);
|
||||
Util.FireAndForget(DetachWrapper, m_host, "LSL_Api.DetachFromAvatar");
|
||||
}
|
||||
|
||||
private void DetachWrapper(object o)
|
||||
|
@ -12421,7 +12421,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
new LSL_String(replydata) },
|
||||
new DetectParams[0]));
|
||||
}
|
||||
});
|
||||
}, null, "LSL_Api.llTransferLindenDollars");
|
||||
|
||||
return txn.ToString();
|
||||
}
|
||||
|
|
|
@ -790,9 +790,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
// We will launch the teleport on a new thread so that when the script threads are terminated
|
||||
// before teleport in ScriptInstance.GetXMLState(), we don't end up aborting the one doing the teleporting.
|
||||
Util.FireAndForget(o => World.RequestTeleportLocation(
|
||||
presence.ControllingClient, regionName, position,
|
||||
lookat, (uint)TPFlags.ViaLocation));
|
||||
Util.FireAndForget(
|
||||
o => World.RequestTeleportLocation(
|
||||
presence.ControllingClient, regionName, position,
|
||||
lookat, (uint)TPFlags.ViaLocation),
|
||||
null, "OSSL_Api.TeleportAgentByRegionCoords");
|
||||
|
||||
ScriptSleep(5000);
|
||||
|
||||
|
@ -836,9 +838,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
// We will launch the teleport on a new thread so that when the script threads are terminated
|
||||
// before teleport in ScriptInstance.GetXMLState(), we don't end up aborting the one doing the teleporting.
|
||||
Util.FireAndForget(o => World.RequestTeleportLocation(
|
||||
presence.ControllingClient, regionHandle,
|
||||
position, lookat, (uint)TPFlags.ViaLocation));
|
||||
Util.FireAndForget(
|
||||
o => World.RequestTeleportLocation(
|
||||
presence.ControllingClient, regionHandle,
|
||||
position, lookat, (uint)TPFlags.ViaLocation),
|
||||
null, "OSSL_Api.TeleportAgentByRegionName");
|
||||
|
||||
ScriptSleep(5000);
|
||||
|
||||
|
|
|
@ -182,7 +182,8 @@ namespace OpenSim.Server.Handlers.Simulation
|
|||
if (action.Equals("release"))
|
||||
ReleaseAgent(regionID, id);
|
||||
else
|
||||
Util.FireAndForget(delegate { m_SimulationService.CloseAgent(destination, id, auth_token); });
|
||||
Util.FireAndForget(
|
||||
o => m_SimulationService.CloseAgent(destination, id, auth_token), null, "AgentHandler.DoAgentDelete");
|
||||
|
||||
responsedata["int_response_code"] = HttpStatusCode.OK;
|
||||
responsedata["str_response_string"] = "OpenSim agent " + id.ToString();
|
||||
|
|
|
@ -69,7 +69,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
|||
Util.FireAndForget(delegate(object o)
|
||||
{
|
||||
m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
|
||||
});
|
||||
}, null, "SimianActivityDetector.SetLastPositionOnMakeRootAgent");
|
||||
}
|
||||
|
||||
public void OnNewClient(IClientAPI client)
|
||||
|
@ -94,7 +94,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
|||
Util.FireAndForget(delegate(object o)
|
||||
{
|
||||
m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
|
||||
});
|
||||
}, null, "SimianActivityDetector.SetLastPositionOnEnteringNewParcel");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -225,7 +225,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
|||
{
|
||||
AssetBase asset = SimianGetOperation(id);
|
||||
handler(id, sender, asset);
|
||||
}
|
||||
}, null, "SimianAssetServiceConnector.GetFromService"
|
||||
);
|
||||
|
||||
return true;
|
||||
|
|
|
@ -198,7 +198,8 @@ namespace OpenSim.Services.HypergridService
|
|||
// So let's send back the call, but start a thread to continue
|
||||
// with the verification and the actual action.
|
||||
|
||||
Util.FireAndForget(delegate { ProcessFriendshipOffered(fromID, fromName, toID, message); });
|
||||
Util.FireAndForget(
|
||||
o => ProcessFriendshipOffered(fromID, fromName, toID, message), null, "HGFriendsService.ProcessFriendshipOffered");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -166,7 +166,8 @@ namespace OpenSim.Services.MapImageService
|
|||
// m_log.DebugFormat("{0} UpdateMultiResolutionFilesAsync: scheduling update for <{1},{2}>", LogHeader, x, y);
|
||||
multiRezToBuild.Enqueue(new mapToMultiRez(x, y));
|
||||
if (multiRezToBuild.Count == 1)
|
||||
Util.FireAndForget(DoUpdateMultiResolutionFilesAsync);
|
||||
Util.FireAndForget(
|
||||
DoUpdateMultiResolutionFilesAsync, null, "MapImageService.DoUpdateMultiResolutionFilesAsync");
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -78,7 +78,7 @@ namespace OpenSim.Tests.Stress
|
|||
Drawer d = new Drawer(this, i);
|
||||
drawers.Add(d);
|
||||
Console.WriteLine("Starting drawer {0}", i);
|
||||
Util.FireAndForget(o => d.Draw());
|
||||
Util.FireAndForget(o => d.Draw(), null, "VectorRenderModuleStressTests.TestConcurrentRepeatedDraw");
|
||||
}
|
||||
|
||||
Thread.Sleep(10 * 60 * 1000);
|
||||
|
|
Loading…
Reference in New Issue