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.ghosts
parent
d3a550bc85
commit
3372210c46
|
@ -483,7 +483,7 @@ namespace OpenSim.Framework.Communications
|
||||||
/// In case, we are invoked asynchroneously this object will keep track of the state
|
/// In case, we are invoked asynchroneously this object will keep track of the state
|
||||||
/// </summary>
|
/// </summary>
|
||||||
AsyncResult<Stream> ar = new AsyncResult<Stream>(callback, state);
|
AsyncResult<Stream> ar = new AsyncResult<Stream>(callback, state);
|
||||||
Util.FireAndForget(RequestHelper, ar);
|
Util.FireAndForget(RequestHelper, ar, "RestClient.BeginRequest");
|
||||||
return ar;
|
return ar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -365,13 +365,21 @@ namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
List<KeyValuePair<string, int>> calls = Util.GetFireAndForgetCallsMade().ToList();
|
List<KeyValuePair<string, int>> calls = Util.GetFireAndForgetCallsMade().ToList();
|
||||||
calls.Sort((kvp1, kvp2) => kvp2.Value.CompareTo(kvp1.Value));
|
calls.Sort((kvp1, kvp2) => kvp2.Value.CompareTo(kvp1.Value));
|
||||||
|
int namedCallsMade = 0;
|
||||||
|
|
||||||
ConsoleDisplayList cdl = new ConsoleDisplayList();
|
ConsoleDisplayList cdl = new ConsoleDisplayList();
|
||||||
foreach (KeyValuePair<string, int> kvp in calls)
|
foreach (KeyValuePair<string, int> kvp in calls)
|
||||||
{
|
{
|
||||||
cdl.AddRow(kvp.Key, kvp.Value);
|
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());
|
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)
|
public static void InitThreadPool(int minThreads, int maxThreads)
|
||||||
{
|
{
|
||||||
if (maxThreads < 2)
|
if (maxThreads < 2)
|
||||||
|
@ -1977,8 +1972,7 @@ namespace OpenSim.Framework
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Additional information about threads in the main thread pool. Used to time how long the
|
/// 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.
|
/// 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 nextThreadFuncNum = 0;
|
||||||
private static long numQueuedThreadFuncs = 0;
|
private static long numQueuedThreadFuncs = 0;
|
||||||
private static long numRunningThreadFuncs = 0;
|
private static long numRunningThreadFuncs = 0;
|
||||||
|
private static long numTotalThreadFuncsCalled = 0;
|
||||||
private static Int32 threadFuncOverloadMode = 0;
|
private static Int32 threadFuncOverloadMode = 0;
|
||||||
|
|
||||||
// Maps (ThreadFunc number -> Thread)
|
// Maps (ThreadFunc number -> Thread)
|
||||||
|
@ -2086,20 +2080,29 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static long TotalFireAndForgetCallsMade { get { return numTotalThreadFuncsCalled; } }
|
||||||
|
|
||||||
public static Dictionary<string, int> GetFireAndForgetCallsMade()
|
public static Dictionary<string, int> GetFireAndForgetCallsMade()
|
||||||
{
|
{
|
||||||
return new Dictionary<string, int>(m_fireAndForgetCallsMade);
|
return new Dictionary<string, int>(m_fireAndForgetCallsMade);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Dictionary<string, int> m_fireAndForgetCallsMade = new Dictionary<string, int>();
|
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)
|
public static void FireAndForget(System.Threading.WaitCallback callback, object obj)
|
||||||
{
|
{
|
||||||
FireAndForget(callback, obj, null);
|
FireAndForget(callback, obj, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context)
|
public static void FireAndForget(System.Threading.WaitCallback callback, object obj, string context)
|
||||||
{
|
{
|
||||||
|
Interlocked.Increment(ref numTotalThreadFuncsCalled);
|
||||||
|
|
||||||
if (context != null)
|
if (context != null)
|
||||||
{
|
{
|
||||||
if (!m_fireAndForgetCallsMade.ContainsKey(context))
|
if (!m_fireAndForgetCallsMade.ContainsKey(context))
|
||||||
|
|
|
@ -1161,7 +1161,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
/// <param name="map">heightmap</param>
|
/// <param name="map">heightmap</param>
|
||||||
public virtual void SendLayerData(float[] map)
|
public virtual void SendLayerData(float[] map)
|
||||||
{
|
{
|
||||||
Util.FireAndForget(DoSendLayerData, m_scene.Heightmap.GetTerrainData());
|
Util.FireAndForget(DoSendLayerData, m_scene.Heightmap.GetTerrainData(), "LLClientView.DoSendLayerData");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1373,7 +1373,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
/// <param name="windSpeeds">16x16 array of wind speeds</param>
|
/// <param name="windSpeeds">16x16 array of wind speeds</param>
|
||||||
public virtual void SendWindData(Vector2[] windSpeeds)
|
public virtual void SendWindData(Vector2[] windSpeeds)
|
||||||
{
|
{
|
||||||
Util.FireAndForget(DoSendWindData, windSpeeds);
|
Util.FireAndForget(DoSendWindData, windSpeeds, "LLClientView.SendWindData");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1382,7 +1382,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
/// <param name="windSpeeds">16x16 array of cloud densities</param>
|
/// <param name="windSpeeds">16x16 array of cloud densities</param>
|
||||||
public virtual void SendCloudData(float[] cloudDensity)
|
public virtual void SendCloudData(float[] cloudDensity)
|
||||||
{
|
{
|
||||||
Util.FireAndForget(DoSendCloudData, cloudDensity);
|
Util.FireAndForget(DoSendCloudData, cloudDensity, "LLClientView.SendCloudData");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -8093,7 +8093,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
{
|
{
|
||||||
// This requests the asset if needed
|
// This requests the asset if needed
|
||||||
HandleSimInventoryTransferRequestWithPermsCheck(sender, transfer);
|
HandleSimInventoryTransferRequestWithPermsCheck(sender, transfer);
|
||||||
});
|
}, null, "LLClientView.HandleTransferRequest");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -732,7 +732,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
if (!m_udpServer.OqrEngine.IsRunning)
|
if (!m_udpServer.OqrEngine.IsRunning)
|
||||||
{
|
{
|
||||||
// Asynchronously run the callback
|
// Asynchronously run the callback
|
||||||
Util.FireAndForget(FireQueueEmpty, categories);
|
Util.FireAndForget(FireQueueEmpty, categories, "LLUDPClient.BeginFireQueueEmpty");
|
||||||
}
|
}
|
||||||
else
|
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
|
// 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.
|
// 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.
|
// 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;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1225,7 +1226,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
// buffer.
|
// buffer.
|
||||||
object[] array = new object[] { new IPEndPoint(endPoint.Address, endPoint.Port), packet };
|
object[] array = new object[] { new IPEndPoint(endPoint.Address, endPoint.Port), packet };
|
||||||
|
|
||||||
Util.FireAndForget(HandleUseCircuitCode, array);
|
Util.FireAndForget(HandleUseCircuitCode, array, "LLUDPServer.HandleUseCircuitCode");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1238,7 +1239,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
// buffer.
|
// buffer.
|
||||||
object[] array = new object[] { new IPEndPoint(endPoint.Address, endPoint.Port), packet };
|
object[] array = new object[] { new IPEndPoint(endPoint.Address, endPoint.Port), packet };
|
||||||
|
|
||||||
Util.FireAndForget(HandleCompleteMovementIntoRegion, array);
|
Util.FireAndForget(
|
||||||
|
HandleCompleteMovementIntoRegion, array, "LLUDPServer.HandleCompleteMovementIntoRegion");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,7 +167,7 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
|
||||||
|
|
||||||
// Do Decode!
|
// Do Decode!
|
||||||
if (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(
|
Util.FireAndForget(
|
||||||
delegate { WriteFileCache(filename, asset); });
|
delegate { WriteFileCache(filename, asset); }, null, "FlotsamAssetCache.UpdateFileCache");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
|
@ -593,7 +593,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
||||||
|
|
||||||
if (sendTime < now)
|
if (sendTime < now)
|
||||||
{
|
{
|
||||||
Util.FireAndForget(o => SendAppearance(avatarID));
|
Util.FireAndForget(o => SendAppearance(avatarID), null, "AvatarFactoryModule.SendAppearance");
|
||||||
m_sendqueue.Remove(avatarID);
|
m_sendqueue.Remove(avatarID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -611,7 +611,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
||||||
|
|
||||||
if (sendTime < now)
|
if (sendTime < now)
|
||||||
{
|
{
|
||||||
Util.FireAndForget(o => SaveAppearance(avatarID));
|
Util.FireAndForget(o => SaveAppearance(avatarID), null, "AvatarFactoryModule.SaveAppearance");
|
||||||
m_savequeue.Remove(avatarID);
|
m_savequeue.Remove(avatarID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1038,7 +1038,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
||||||
client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++);
|
client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++);
|
||||||
else
|
else
|
||||||
m_log.WarnFormat("[AVFACTORY]: Client_OnRequestWearables unable to find presence for {0}", client.AgentId);
|
m_log.WarnFormat("[AVFACTORY]: Client_OnRequestWearables unable to find presence for {0}", client.AgentId);
|
||||||
});
|
}, null, "AvatarFactoryModule.OnClientRequestWearables");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -187,7 +187,7 @@ namespace OpenSim.Region.CoreModules.Avatar.BakedTextures
|
||||||
{
|
{
|
||||||
rc.Request(reqStream, m_Auth);
|
rc.Request(reqStream, m_Auth);
|
||||||
m_log.DebugFormat("[XBakes]: stored {0} textures for user {1}", data.Length, agentId);
|
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
|
// Notify about this user status
|
||||||
StatusNotify(friendList, agentID, online);
|
StatusNotify(friendList, agentID, online);
|
||||||
}
|
}, null, "FriendsModule.StatusChange"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -660,7 +660,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||||
FriendsService.Delete(friendUUI, agentID.ToString());
|
FriendsService.Delete(friendUUI, agentID.ToString());
|
||||||
|
|
||||||
// notify the exfriend's service
|
// 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);
|
m_log.DebugFormat("[HGFRIENDS MODULE]: {0} terminated {1}", agentID, friendUUI);
|
||||||
return true;
|
return true;
|
||||||
|
@ -678,7 +679,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||||
FriendsService.Delete(agentUUI, exfriendID.ToString());
|
FriendsService.Delete(agentUUI, exfriendID.ToString());
|
||||||
|
|
||||||
// notify the agent's service?
|
// 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);
|
m_log.DebugFormat("[HGFRIENDS MODULE]: {0} terminated {1}", agentUUI, exfriendID);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -213,7 +213,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
||||||
HandleUndeliverableMessage(im, result);
|
HandleUndeliverableMessage(im, result);
|
||||||
else
|
else
|
||||||
result(success);
|
result(success);
|
||||||
});
|
}, null, "HGMessageTransferModule.SendInstantMessage");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,7 +181,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
|
||||||
Util.FireAndForget(delegate
|
Util.FireAndForget(delegate
|
||||||
{
|
{
|
||||||
GetImageAssets(((IScenePresence)obj).UUID);
|
GetImageAssets(((IScenePresence)obj).UUID);
|
||||||
});
|
}, null, "UserProfileModule.GetImageAssets");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -169,7 +169,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
AgentCircuitData aCircuit = Scene.AuthenticateHandler.GetAgentCircuitData(so.AttachedAvatar);
|
AgentCircuitData aCircuit = Scene.AuthenticateHandler.GetAgentCircuitData(so.AttachedAvatar);
|
||||||
if (aCircuit != null && (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0)
|
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();
|
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);
|
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)
|
if (asset != null)
|
||||||
{
|
{
|
||||||
Util.FireAndForget(delegate { handler(id, sender, asset); });
|
Util.FireAndForget(delegate { handler(id, sender, asset); }, null, "HGAssetBroker.GotFromCache");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -236,7 +236,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||||
|
|
||||||
if (asset != null)
|
if (asset != null)
|
||||||
{
|
{
|
||||||
Util.FireAndForget(delegate { handler(id, sender, asset); });
|
Util.FireAndForget(
|
||||||
|
o => handler(id, sender, asset), null, "LocalAssetServiceConnector.GotFromCacheCallback");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -249,7 +250,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
|
||||||
// if (null == a)
|
// if (null == a)
|
||||||
// m_log.WarnFormat("[LOCAL ASSET SERVICES CONNECTOR]: Could not asynchronously find asset with id {0}", id);
|
// 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.
|
// 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.
|
// This leads to race conditions if directly passed to SendCloseChildAgent with more than one neighbour region.
|
||||||
ulong handleCopy = handle;
|
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),
|
string.Format("Rez attachments for {0} in {1}", Name, Scene.Name),
|
||||||
null);
|
null);
|
||||||
else
|
else
|
||||||
Util.FireAndForget(o => Scene.AttachmentsModule.RezAttachments(this));
|
Util.FireAndForget(
|
||||||
|
o => Scene.AttachmentsModule.RezAttachments(this), null, "ScenePresence.RezAttachmentsOnLogin");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1338,7 +1339,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
UseFakeGroupTitle = false;
|
UseFakeGroupTitle = false;
|
||||||
SendAvatarDataToAllClients(false);
|
SendAvatarDataToAllClients(false);
|
||||||
});
|
}, null, "Scenepresence.ForceViewersUpdateName");
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetStateSource()
|
public int GetStateSource()
|
||||||
|
@ -3645,7 +3646,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
agentpos.CopyFrom(cadu, ControllingClient.SessionId);
|
agentpos.CopyFrom(cadu, ControllingClient.SessionId);
|
||||||
|
|
||||||
// Let's get this out of the update loop
|
// 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>
|
/// <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)
|
public UUID JsonRezAtRoot(UUID hostID, UUID scriptID, string item, Vector3 pos, Vector3 vel, Quaternion rot, string param)
|
||||||
{
|
{
|
||||||
UUID reqID = UUID.Random();
|
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;
|
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)
|
public UUID JsonReadNotecard(UUID hostID, UUID scriptID, UUID storeID, string path, string notecardIdentifier)
|
||||||
{
|
{
|
||||||
UUID reqID = UUID.Random();
|
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;
|
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)
|
public UUID JsonWriteNotecard(UUID hostID, UUID scriptID, UUID storeID, string path, string name)
|
||||||
{
|
{
|
||||||
UUID reqID = UUID.Random();
|
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;
|
return reqID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -464,7 +467,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
||||||
public UUID JsonTakeValue(UUID hostID, UUID scriptID, UUID storeID, string path)
|
public UUID JsonTakeValue(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||||
{
|
{
|
||||||
UUID reqID = UUID.Random();
|
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;
|
return reqID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -472,7 +476,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
||||||
public UUID JsonTakeValueJson(UUID hostID, UUID scriptID, UUID storeID, string path)
|
public UUID JsonTakeValueJson(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||||
{
|
{
|
||||||
UUID reqID = UUID.Random();
|
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;
|
return reqID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -485,7 +490,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
||||||
public UUID JsonReadValue(UUID hostID, UUID scriptID, UUID storeID, string path)
|
public UUID JsonReadValue(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||||
{
|
{
|
||||||
UUID reqID = UUID.Random();
|
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;
|
return reqID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -493,7 +499,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
||||||
public UUID JsonReadValueJson(UUID hostID, UUID scriptID, UUID storeID, string path)
|
public UUID JsonReadValueJson(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||||
{
|
{
|
||||||
UUID reqID = UUID.Random();
|
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;
|
return reqID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -294,7 +294,8 @@ namespace OpenSim.Region.OptionalModules.ViewerSupport
|
||||||
for (int i = 0 ; i < selection.Count ; i++)
|
for (int i = 0 ; i < selection.Count ; i++)
|
||||||
sel.Add(selection[i].AsUInteger());
|
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;
|
Encoding encoding = Encoding.UTF8;
|
||||||
return encoding.GetBytes(OSDParser.SerializeLLSDXmlString(new OSD()));
|
return encoding.GetBytes(OSDParser.SerializeLLSDXmlString(new OSD()));
|
||||||
|
|
|
@ -3344,7 +3344,7 @@ Console.WriteLine(" JointCreateFixed");
|
||||||
RequestAssetDelegate assetProvider = _parent_scene.RequestAssetMethod;
|
RequestAssetDelegate assetProvider = _parent_scene.RequestAssetMethod;
|
||||||
if (assetProvider != null)
|
if (assetProvider != null)
|
||||||
assetProvider(_pbs.SculptTexture, MeshAssetReceived);
|
assetProvider(_pbs.SculptTexture, MeshAssetReceived);
|
||||||
});
|
}, null, "ODEPrim.CheckMeshAsset");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2973,7 +2973,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
money.ObjectGiveMoney(
|
money.ObjectGiveMoney(
|
||||||
m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount);
|
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)
|
public void llMakeExplosion(int particles, double scale, double vel, double lifetime, double arc, string texture, LSL_Vector offset)
|
||||||
|
@ -3069,7 +3069,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
// Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay)
|
// Variable script delay? (see (http://wiki.secondlife.com/wiki/LSL_Delay)
|
||||||
}
|
}
|
||||||
});
|
}, null, "LSL_Api.llRezAtRoot");
|
||||||
|
|
||||||
//ScriptSleep((int)((groupmass * velmag) / 10));
|
//ScriptSleep((int)((groupmass * velmag) / 10));
|
||||||
ScriptSleep(100);
|
ScriptSleep(100);
|
||||||
|
@ -3264,7 +3264,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public void DetachFromAvatar()
|
public void DetachFromAvatar()
|
||||||
{
|
{
|
||||||
Util.FireAndForget(DetachWrapper, m_host);
|
Util.FireAndForget(DetachWrapper, m_host, "LSL_Api.DetachFromAvatar");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DetachWrapper(object o)
|
private void DetachWrapper(object o)
|
||||||
|
@ -12415,7 +12415,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
new LSL_String(replydata) },
|
new LSL_String(replydata) },
|
||||||
new DetectParams[0]));
|
new DetectParams[0]));
|
||||||
}
|
}
|
||||||
});
|
}, null, "LSL_Api.llTransferLindenDollars");
|
||||||
|
|
||||||
return txn.ToString();
|
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
|
// 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.
|
// before teleport in ScriptInstance.GetXMLState(), we don't end up aborting the one doing the teleporting.
|
||||||
Util.FireAndForget(o => World.RequestTeleportLocation(
|
Util.FireAndForget(
|
||||||
presence.ControllingClient, regionName, position,
|
o => World.RequestTeleportLocation(
|
||||||
lookat, (uint)TPFlags.ViaLocation));
|
presence.ControllingClient, regionName, position,
|
||||||
|
lookat, (uint)TPFlags.ViaLocation),
|
||||||
|
null, "OSSL_Api.TeleportAgentByRegionCoords");
|
||||||
|
|
||||||
ScriptSleep(5000);
|
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
|
// 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.
|
// before teleport in ScriptInstance.GetXMLState(), we don't end up aborting the one doing the teleporting.
|
||||||
Util.FireAndForget(o => World.RequestTeleportLocation(
|
Util.FireAndForget(
|
||||||
presence.ControllingClient, regionHandle,
|
o => World.RequestTeleportLocation(
|
||||||
position, lookat, (uint)TPFlags.ViaLocation));
|
presence.ControllingClient, regionHandle,
|
||||||
|
position, lookat, (uint)TPFlags.ViaLocation),
|
||||||
|
null, "OSSL_Api.TeleportAgentByRegionName");
|
||||||
|
|
||||||
ScriptSleep(5000);
|
ScriptSleep(5000);
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,8 @@ namespace OpenSim.Server.Handlers.Simulation
|
||||||
if (action.Equals("release"))
|
if (action.Equals("release"))
|
||||||
ReleaseAgent(regionID, id);
|
ReleaseAgent(regionID, id);
|
||||||
else
|
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["int_response_code"] = HttpStatusCode.OK;
|
||||||
responsedata["str_response_string"] = "OpenSim agent " + id.ToString();
|
responsedata["str_response_string"] = "OpenSim agent " + id.ToString();
|
||||||
|
|
|
@ -69,7 +69,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
||||||
Util.FireAndForget(delegate(object o)
|
Util.FireAndForget(delegate(object o)
|
||||||
{
|
{
|
||||||
m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
|
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)
|
public void OnNewClient(IClientAPI client)
|
||||||
|
@ -94,7 +94,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
|
||||||
Util.FireAndForget(delegate(object o)
|
Util.FireAndForget(delegate(object o)
|
||||||
{
|
{
|
||||||
m_GridUserService.SetLastPosition(sp.UUID.ToString(), sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID, sp.AbsolutePosition, sp.Lookat);
|
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);
|
AssetBase asset = SimianGetOperation(id);
|
||||||
handler(id, sender, asset);
|
handler(id, sender, asset);
|
||||||
}
|
}, null, "SimianAssetServiceConnector.GetFromService"
|
||||||
);
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -198,7 +198,8 @@ namespace OpenSim.Services.HypergridService
|
||||||
// So let's send back the call, but start a thread to continue
|
// So let's send back the call, but start a thread to continue
|
||||||
// with the verification and the actual action.
|
// 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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,7 +166,8 @@ namespace OpenSim.Services.MapImageService
|
||||||
// m_log.DebugFormat("{0} UpdateMultiResolutionFilesAsync: scheduling update for <{1},{2}>", LogHeader, x, y);
|
// m_log.DebugFormat("{0} UpdateMultiResolutionFilesAsync: scheduling update for <{1},{2}>", LogHeader, x, y);
|
||||||
multiRezToBuild.Enqueue(new mapToMultiRez(x, y));
|
multiRezToBuild.Enqueue(new mapToMultiRez(x, y));
|
||||||
if (multiRezToBuild.Count == 1)
|
if (multiRezToBuild.Count == 1)
|
||||||
Util.FireAndForget(DoUpdateMultiResolutionFilesAsync);
|
Util.FireAndForget(
|
||||||
|
DoUpdateMultiResolutionFilesAsync, null, "MapImageService.DoUpdateMultiResolutionFilesAsync");
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -78,7 +78,7 @@ namespace OpenSim.Tests.Stress
|
||||||
Drawer d = new Drawer(this, i);
|
Drawer d = new Drawer(this, i);
|
||||||
drawers.Add(d);
|
drawers.Add(d);
|
||||||
Console.WriteLine("Starting drawer {0}", i);
|
Console.WriteLine("Starting drawer {0}", i);
|
||||||
Util.FireAndForget(o => d.Draw());
|
Util.FireAndForget(o => d.Draw(), null, "VectorRenderModuleStressTests.TestConcurrentRepeatedDraw");
|
||||||
}
|
}
|
||||||
|
|
||||||
Thread.Sleep(10 * 60 * 1000);
|
Thread.Sleep(10 * 60 * 1000);
|
||||||
|
|
Loading…
Reference in New Issue