* Don't abort (and keep failing) the update if one Entity gives us an exception when we try to update it
* This doesn't remove bug 757, but does largely remove the worst consequences0.6.0-stable
parent
c310f2ab24
commit
b9ef6ed047
|
@ -217,13 +217,26 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Process all pending updates
|
||||||
|
/// </summary>
|
||||||
internal void ProcessUpdates()
|
internal void ProcessUpdates()
|
||||||
{
|
{
|
||||||
lock (m_updateList)
|
lock (m_updateList)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < m_updateList.Count; i++)
|
for (int i = 0; i < m_updateList.Count; i++)
|
||||||
{
|
{
|
||||||
m_updateList[i].Update();
|
EntityBase entity = m_updateList[i];
|
||||||
|
|
||||||
|
// Don't abort the whole update if one entity happens to give us an exception.
|
||||||
|
try
|
||||||
|
{
|
||||||
|
m_updateList[i].Update();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat("[INNERSCENE]: Failed to update {0}, {1} - {2}", entity.Name, entity.m_uuid, e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m_updateList.Clear();
|
m_updateList.Clear();
|
||||||
}
|
}
|
||||||
|
|
|
@ -724,34 +724,34 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
if (Region_Status != RegionStatus.SlaveScene)
|
if (Region_Status != RegionStatus.SlaveScene)
|
||||||
{
|
{
|
||||||
if (m_frame % m_update_events == 0)
|
if (m_frame % m_update_events == 0)
|
||||||
UpdateEvents();
|
UpdateEvents();
|
||||||
|
|
||||||
if (m_frame % m_update_backup == 0)
|
if (m_frame % m_update_backup == 0)
|
||||||
UpdateStorageBackup();
|
UpdateStorageBackup();
|
||||||
|
|
||||||
if (m_frame % m_update_terrain == 0)
|
if (m_frame % m_update_terrain == 0)
|
||||||
UpdateTerrain();
|
UpdateTerrain();
|
||||||
|
|
||||||
if (m_frame % m_update_land == 0)
|
if (m_frame % m_update_land == 0)
|
||||||
UpdateLand();
|
UpdateLand();
|
||||||
otherMS = System.Environment.TickCount - otherMS;
|
otherMS = System.Environment.TickCount - otherMS;
|
||||||
// if (m_frame%m_update_avatars == 0)
|
// if (m_frame%m_update_avatars == 0)
|
||||||
// UpdateInWorldTime();
|
// UpdateInWorldTime();
|
||||||
m_statsReporter.AddPhysicsFPS(physicsFPS);
|
m_statsReporter.AddPhysicsFPS(physicsFPS);
|
||||||
m_statsReporter.AddTimeDilation(m_timedilation);
|
m_statsReporter.AddTimeDilation(m_timedilation);
|
||||||
m_statsReporter.AddFPS(1);
|
m_statsReporter.AddFPS(1);
|
||||||
m_statsReporter.AddInPackets(0);
|
m_statsReporter.AddInPackets(0);
|
||||||
m_statsReporter.SetRootAgents(m_innerScene.GetRootAgentCount());
|
m_statsReporter.SetRootAgents(m_innerScene.GetRootAgentCount());
|
||||||
m_statsReporter.SetChildAgents(m_innerScene.GetChildAgentCount());
|
m_statsReporter.SetChildAgents(m_innerScene.GetChildAgentCount());
|
||||||
m_statsReporter.SetObjects(m_innerScene.GetTotalObjects());
|
m_statsReporter.SetObjects(m_innerScene.GetTotalObjects());
|
||||||
m_statsReporter.SetActiveObjects(m_innerScene.GetActiveObjects());
|
m_statsReporter.SetActiveObjects(m_innerScene.GetActiveObjects());
|
||||||
frameMS = System.Environment.TickCount - frameMS;
|
frameMS = System.Environment.TickCount - frameMS;
|
||||||
m_statsReporter.addFrameMS(frameMS);
|
m_statsReporter.addFrameMS(frameMS);
|
||||||
m_statsReporter.addPhysicsMS(physicsMS);
|
m_statsReporter.addPhysicsMS(physicsMS);
|
||||||
m_statsReporter.addOtherMS(otherMS);
|
m_statsReporter.addOtherMS(otherMS);
|
||||||
m_statsReporter.SetActiveScripts(m_innerScene.GetActiveScripts());
|
m_statsReporter.SetActiveScripts(m_innerScene.GetActiveScripts());
|
||||||
m_statsReporter.addScriptLines(m_innerScene.GetScriptLPS());
|
m_statsReporter.addScriptLines(m_innerScene.GetScriptLPS());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (NotImplementedException)
|
catch (NotImplementedException)
|
||||||
|
@ -1288,7 +1288,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
if (m_restorePresences.ContainsKey(client.AgentId))
|
if (m_restorePresences.ContainsKey(client.AgentId))
|
||||||
{
|
{
|
||||||
m_log.Info("REGION Restore Scene Presence");
|
m_log.Info("[REGION]: Restore Scene Presence");
|
||||||
|
|
||||||
presence = m_restorePresences[client.AgentId];
|
presence = m_restorePresences[client.AgentId];
|
||||||
m_restorePresences.Remove(client.AgentId);
|
m_restorePresences.Remove(client.AgentId);
|
||||||
|
@ -1304,7 +1304,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Info("REGION Add New Scene Presence");
|
m_log.Info("[REGION]: Add New Scene Presence");
|
||||||
|
|
||||||
m_estateManager.sendRegionHandshake(client);
|
m_estateManager.sendRegionHandshake(client);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue