diff options
author | Justin Clarke Casey | 2008-04-07 17:28:02 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2008-04-07 17:28:02 +0000 |
commit | 0e7c4046d3fde862c56b7b5255b48928fa2652e6 (patch) | |
tree | 5f41ba1ddaf33ebf9d7aea50cc94aa13c0db7d3b /OpenSim/Region/Environment/Scenes/Scene.cs | |
parent | * Minor: log message correction (diff) | |
download | opensim-SC_OLD-0e7c4046d3fde862c56b7b5255b48928fa2652e6.zip opensim-SC_OLD-0e7c4046d3fde862c56b7b5255b48928fa2652e6.tar.gz opensim-SC_OLD-0e7c4046d3fde862c56b7b5255b48928fa2652e6.tar.bz2 opensim-SC_OLD-0e7c4046d3fde862c56b7b5255b48928fa2652e6.tar.xz |
* Nasty hack to reduce the incidence of spurious exceptions where a user deletes a newly rezzed object before the persistence thread gets to it from its queue.
* This should greatly reduce but not eliminate the problem - elimination probably requires a redesign of the prim persistence processes
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 101bac3..8f4c332 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -2676,7 +2676,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2676 | /// </summary> | 2676 | /// </summary> |
2677 | /// <param name="group"></param> | 2677 | /// <param name="group"></param> |
2678 | public void DeleteSceneObjectGroup(SceneObjectGroup group) | 2678 | public void DeleteSceneObjectGroup(SceneObjectGroup group) |
2679 | { | 2679 | { |
2680 | SceneObjectPart rootPart = (group).GetChildPart(group.UUID); | 2680 | SceneObjectPart rootPart = (group).GetChildPart(group.UUID); |
2681 | if (rootPart.PhysActor != null) | 2681 | if (rootPart.PhysActor != null) |
2682 | { | 2682 | { |
@@ -2693,6 +2693,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
2693 | m_innerScene.RemoveAPrimCount(); | 2693 | m_innerScene.RemoveAPrimCount(); |
2694 | } | 2694 | } |
2695 | group.DeleteParts(); | 2695 | group.DeleteParts(); |
2696 | |||
2697 | // In case anybody else retains a reference to this group, signal deletion by changing the name | ||
2698 | // to null. We can't zero out the UUID because this is taken from the root part, which has already | ||
2699 | // been removed. | ||
2700 | // FIXME: This is a really poor temporary solution, since it still leaves plenty of scope for race | ||
2701 | // conditions where a user deletes an entity while it is being stored. Really, the update | ||
2702 | // code needs a redesign. | ||
2703 | group.Name = null; | ||
2696 | } | 2704 | } |
2697 | 2705 | ||
2698 | /// <summary> | 2706 | /// <summary> |