diff options
Diffstat (limited to 'OpenSim/Region')
4 files changed, 17 insertions, 5 deletions
diff --git a/OpenSim/Region/Environment/Scenes/EventManager.cs b/OpenSim/Region/Environment/Scenes/EventManager.cs index 618e6b5..bba7eed 100644 --- a/OpenSim/Region/Environment/Scenes/EventManager.cs +++ b/OpenSim/Region/Environment/Scenes/EventManager.cs | |||
@@ -52,7 +52,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
52 | 52 | ||
53 | public event OnTerrainTickDelegate OnTerrainTick; | 53 | public event OnTerrainTickDelegate OnTerrainTick; |
54 | 54 | ||
55 | public delegate void OnBackupDelegate(IRegionDataStore datastore); | 55 | public delegate void OnBackupDelegate(IRegionDataStore datastore, bool forceBackup); |
56 | 56 | ||
57 | public event OnBackupDelegate OnBackup; | 57 | public event OnBackupDelegate OnBackup; |
58 | 58 | ||
@@ -504,7 +504,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
504 | handlerBackup = OnBackup; | 504 | handlerBackup = OnBackup; |
505 | if (handlerBackup != null) | 505 | if (handlerBackup != null) |
506 | { | 506 | { |
507 | handlerBackup(dstore); | 507 | handlerBackup(dstore, false); |
508 | } | 508 | } |
509 | } | 509 | } |
510 | 510 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index cb9aee2..bc80d56 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | |||
@@ -1686,6 +1686,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
1686 | 1686 | ||
1687 | SceneObjectGroup grp = part.ParentGroup; | 1687 | SceneObjectGroup grp = part.ParentGroup; |
1688 | 1688 | ||
1689 | //force a database backup/update on this SceneObjectGroup | ||
1690 | //So that we know the database is upto date, for when deleting the object from it | ||
1691 | ForceSceneObjectBackup(grp); | ||
1692 | |||
1689 | bool permissionToTake = false; | 1693 | bool permissionToTake = false; |
1690 | bool permissionToDelete = false; | 1694 | bool permissionToDelete = false; |
1691 | 1695 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 32bd9aa..194d782 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -728,7 +728,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
728 | { | 728 | { |
729 | if (!entity.IsDeleted && entity is SceneObjectGroup && ((SceneObjectGroup)entity).HasGroupChanged) | 729 | if (!entity.IsDeleted && entity is SceneObjectGroup && ((SceneObjectGroup)entity).HasGroupChanged) |
730 | { | 730 | { |
731 | ((SceneObjectGroup)entity).ProcessBackup(m_storageManager.DataStore); | 731 | ((SceneObjectGroup)entity).ProcessBackup(m_storageManager.DataStore, false); |
732 | } | 732 | } |
733 | } | 733 | } |
734 | 734 | ||
@@ -1052,6 +1052,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
1052 | } | 1052 | } |
1053 | } | 1053 | } |
1054 | 1054 | ||
1055 | public void ForceSceneObjectBackup(SceneObjectGroup group) | ||
1056 | { | ||
1057 | if (group != null) | ||
1058 | { | ||
1059 | group.ProcessBackup(m_storageManager.DataStore, true); | ||
1060 | } | ||
1061 | } | ||
1062 | |||
1055 | public void AddReturn(UUID agentID, string objectName, Vector3 location, string reason) | 1063 | public void AddReturn(UUID agentID, string objectName, Vector3 location, string reason) |
1056 | { | 1064 | { |
1057 | lock (m_returns) | 1065 | lock (m_returns) |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 9c29338..5ae95ee 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -1222,7 +1222,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1222 | /// Processes backup. | 1222 | /// Processes backup. |
1223 | /// </summary> | 1223 | /// </summary> |
1224 | /// <param name="datastore"></param> | 1224 | /// <param name="datastore"></param> |
1225 | public void ProcessBackup(IRegionDataStore datastore) | 1225 | public void ProcessBackup(IRegionDataStore datastore, bool forcedBackup) |
1226 | { | 1226 | { |
1227 | if (!m_isBackedUp) | 1227 | if (!m_isBackedUp) |
1228 | return; | 1228 | return; |
@@ -1265,7 +1265,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1265 | if (HasGroupChanged) | 1265 | if (HasGroupChanged) |
1266 | { | 1266 | { |
1267 | // don't backup while it's selected or you're asking for changes mid stream. | 1267 | // don't backup while it's selected or you're asking for changes mid stream. |
1268 | if (isTimeToPersist()) | 1268 | if ((isTimeToPersist()) || (forcedBackup)) |
1269 | { | 1269 | { |
1270 | m_log.DebugFormat( | 1270 | m_log.DebugFormat( |
1271 | "[SCENE]: Storing {0}, {1} in {2}", | 1271 | "[SCENE]: Storing {0}, {1} in {2}", |