From c426549f53cb08ab2d55770cc498faa6f94bf66e Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 14 Dec 2009 00:31:15 +0000 Subject: [PATCH] Add an option to exit an instance rather than restarting a region within it --- OpenSim/Region/Framework/Scenes/Scene.cs | 13 ++++++++++++- bin/OpenSim.ini.example | 10 +++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index a22fb5fc16..4241b20134 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -902,7 +902,7 @@ namespace OpenSim.Region.Framework.Scenes m_log.Info("[REGION]: Restarting Region in " + (seconds / 60) + " minutes"); m_restartTimer.Start(); m_dialogModule.SendNotificationToUsersInRegion( - UUID.Random(), String.Empty, RegionInfo.RegionName + ": Restarting in 2 Minutes"); + UUID.Random(), String.Empty, RegionInfo.RegionName + String.Format(": Restarting in {0} Minutes", (int)(seconds / 60.0))); } } @@ -932,6 +932,16 @@ namespace OpenSim.Region.Framework.Scenes // This causes the region to restart immediatley. public void RestartNow() { + IConfig startupConfig = m_config.Configs["Startup"]; + if (startupConfig != null) + { + if (startupConfig.GetBoolean("InworldRestartShutsDown", false)) + { + MainConsole.Instance.RunCommand("shutdown"); + return; + } + } + if (PhysicsScene != null) { PhysicsScene.Dispose(); @@ -939,6 +949,7 @@ namespace OpenSim.Region.Framework.Scenes m_log.Error("[REGION]: Closing"); Close(); + m_log.Error("[REGION]: Firing Region Restart Message"); base.Restart(0); } diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 4351b3f57b..1cf96b0d1b 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -107,7 +107,15 @@ ; Combine all contiguous regions into one large region ; Order your regions from South to North, West to East in your regions.ini and then set this to true ; Warning! Don't use this with regions that have existing content!, This will likely break them - CombineContiguousRegions=false + CombineContiguousRegions = false + + ; If you have only one region in an instance, or to avoid the many bugs + ; that you can trigger in modules by restarting a region, set this to + ; true to make the entire instance exit instead of restarting the region. + ; This is meant to be used on systems where some external system like + ; Monit will restart any instance that exits, thereby making the shutdown + ; into a restart. + ;InworldRestartShutsDown = false ; ## ; ## STORAGE