aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-09-06 01:10:47 +0000
committerJustin Clarke Casey2008-09-06 01:10:47 +0000
commit03581c17e61dc7be91a364f40e5f2bcd0abb2fc7 (patch)
treeadc1db11218ae924efc0d8c6ac500b8aefc2dabe
parentreformatted some of unit test standards to allow them to work when OpenSim is... (diff)
downloadopensim-SC-03581c17e61dc7be91a364f40e5f2bcd0abb2fc7.zip
opensim-SC-03581c17e61dc7be91a364f40e5f2bcd0abb2fc7.tar.gz
opensim-SC-03581c17e61dc7be91a364f40e5f2bcd0abb2fc7.tar.bz2
opensim-SC-03581c17e61dc7be91a364f40e5f2bcd0abb2fc7.tar.xz
* refactor: Make SOG itself responsible for checking whether it's already been deleted on an update request from the regular sweep
-rw-r--r--OpenSim/Region/Environment/Scenes/InnerScene.cs15
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs7
2 files changed, 10 insertions, 12 deletions
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs
index 51ee4d0..658478d 100644
--- a/OpenSim/Region/Environment/Scenes/InnerScene.cs
+++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs
@@ -141,9 +141,8 @@ namespace OpenSim.Region.Environment.Scenes
141 List<EntityBase> updateEntities = GetEntities(); 141 List<EntityBase> updateEntities = GetEntities();
142 142
143 foreach (EntityBase entity in updateEntities) 143 foreach (EntityBase entity in updateEntities)
144 { 144 {
145 if (!entity.IsDeleted) 145 entity.Update();
146 entity.Update();
147 } 146 }
148 } 147 }
149 148
@@ -327,15 +326,7 @@ namespace OpenSim.Region.Environment.Scenes
327 // Don't abort the whole update if one entity happens to give us an exception. 326 // Don't abort the whole update if one entity happens to give us an exception.
328 try 327 try
329 { 328 {
330 // Check that the group was not deleted before the scheduled update 329 m_updateList[i].Update();
331 // FIXME: This is merely a temporary measure to reduce the incidence of failure, when
332 // an object has been deleted from a scene before update was processed.
333 // A more fundamental overhaul of the update mechanism is required to eliminate all
334 // the race conditions.
335 if (!entity.IsDeleted)
336 {
337 m_updateList[i].Update();
338 }
339 } 330 }
340 catch (Exception e) 331 catch (Exception e)
341 { 332 {
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index 52b9bc1..b04e882 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -1478,6 +1478,13 @@ namespace OpenSim.Region.Environment.Scenes
1478 /// </summary> 1478 /// </summary>
1479 public override void Update() 1479 public override void Update()
1480 { 1480 {
1481 // Check that the group was not deleted before the scheduled update
1482 // FIXME: This is merely a temporary measure to reduce the incidence of failure when
1483 // an object has been deleted from a scene before update was processed.
1484 // A more fundamental overhaul of the update mechanism is required to eliminate all
1485 // the race conditions.
1486 if (m_isDeleted)
1487 return;
1481 1488
1482 lock (m_parts) 1489 lock (m_parts)
1483 { 1490 {