aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Scene.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2010-12-03 00:08:58 +0000
committerJustin Clark-Casey (justincc)2010-12-03 00:12:59 +0000
commit7e72afcb3e9d5467ad4dd2e6ba5d1e0632d77877 (patch)
tree531cca8628579ea509231a8aa88375f93306c30a /OpenSim/Region/Framework/Scenes/Scene.cs
parentStop LLUDPServer sending updates after object deletes by always queueing deletes (diff)
downloadopensim-SC_OLD-7e72afcb3e9d5467ad4dd2e6ba5d1e0632d77877.zip
opensim-SC_OLD-7e72afcb3e9d5467ad4dd2e6ba5d1e0632d77877.tar.gz
opensim-SC_OLD-7e72afcb3e9d5467ad4dd2e6ba5d1e0632d77877.tar.bz2
opensim-SC_OLD-7e72afcb3e9d5467ad4dd2e6ba5d1e0632d77877.tar.xz
Only force prim persistence before delete if the prim is the result of an unpersisted delink
This considerably improves delete performance for objects with large linksets
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs11
1 files changed, 7 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 90223b1..66c6924 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1997,7 +1997,7 @@ namespace OpenSim.Region.Framework.Scenes
1997 /// <param name="group">Object Id</param> 1997 /// <param name="group">Object Id</param>
1998 /// <param name="silent">Suppress broadcasting changes to other clients.</param> 1998 /// <param name="silent">Suppress broadcasting changes to other clients.</param>
1999 public void DeleteSceneObject(SceneObjectGroup group, bool silent) 1999 public void DeleteSceneObject(SceneObjectGroup group, bool silent)
2000 { 2000 {
2001// m_log.DebugFormat("[SCENE]: Deleting scene object {0} {1}", group.Name, group.UUID); 2001// m_log.DebugFormat("[SCENE]: Deleting scene object {0} {1}", group.Name, group.UUID);
2002 2002
2003 //SceneObjectPart rootPart = group.GetChildPart(group.UUID); 2003 //SceneObjectPart rootPart = group.GetChildPart(group.UUID);
@@ -2038,7 +2038,7 @@ namespace OpenSim.Region.Framework.Scenes
2038 2038
2039 group.DeleteGroupFromScene(silent); 2039 group.DeleteGroupFromScene(silent);
2040 2040
2041// m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID); 2041// m_log.DebugFormat("[SCENE]: Exit DeleteSceneObject() for {0} {1}", group.Name, group.UUID);
2042 } 2042 }
2043 2043
2044 /// <summary> 2044 /// <summary>
@@ -2057,9 +2057,12 @@ namespace OpenSim.Region.Framework.Scenes
2057 // Force a database update so that the scene object group ID is accurate. It's possible that the 2057 // Force a database update so that the scene object group ID is accurate. It's possible that the
2058 // group has recently been delinked from another group but that this change has not been persisted 2058 // group has recently been delinked from another group but that this change has not been persisted
2059 // to the DB. 2059 // to the DB.
2060 ForceSceneObjectBackup(so); 2060 // This is an expensive thing to do so only do it if absolutely necessary.
2061 if (so.HasGroupChangedDueToDelink)
2062 ForceSceneObjectBackup(so);
2063
2061 so.DetachFromBackup(); 2064 so.DetachFromBackup();
2062 SimulationDataService.RemoveObject(so.UUID, m_regInfo.RegionID); 2065 SimulationDataService.RemoveObject(so.UUID, m_regInfo.RegionID);
2063 } 2066 }
2064 2067
2065 // We need to keep track of this state in case this group is still queued for further backup. 2068 // We need to keep track of this state in case this group is still queued for further backup.