please DIE! PLEASE??

0.9.0-post-fixes
UbitUmarov 2017-05-23 03:26:32 +01:00
parent 7b80bcc57a
commit 928733efc9
7 changed files with 40 additions and 7 deletions

View File

@ -108,12 +108,17 @@ namespace OpenSim.Framework.Servers
protected override void ShutdownSpecific() protected override void ShutdownSpecific()
{ {
m_log.Info("[SHUTDOWN]: Shutdown processing on main thread complete. Exiting...");
RemovePIDFile();
base.ShutdownSpecific(); base.ShutdownSpecific();
MainServer.Stop();
Thread.Sleep(5000);
RemovePIDFile();
m_log.Info("[SHUTDOWN]: Shutdown processing on main thread complete. Exiting...");
if (!SuppressExit) if (!SuppressExit)
Environment.Exit(0); Environment.Exit(0);
} }

View File

@ -181,17 +181,20 @@ namespace OpenSim.Framework.Servers.HttpServer
{ {
m_running = false; m_running = false;
Thread.Sleep(1000); // let the world move Thread.Sleep(100); // let the world move
foreach (Thread t in m_workerThreads) foreach (Thread t in m_workerThreads)
Watchdog.AbortThread(t.ManagedThreadId); Watchdog.AbortThread(t.ManagedThreadId);
m_threadPool.Shutdown();
// any entry in m_bycontext should have a active request on the other queues // any entry in m_bycontext should have a active request on the other queues
// so just delete contents to easy GC // so just delete contents to easy GC
foreach (Queue<PollServiceHttpRequest> qu in m_bycontext.Values) foreach (Queue<PollServiceHttpRequest> qu in m_bycontext.Values)
qu.Clear(); qu.Clear();
m_bycontext.Clear(); m_bycontext.Clear();
/*
try try
{ {
foreach (PollServiceHttpRequest req in m_retryRequests) foreach (PollServiceHttpRequest req in m_retryRequests)
@ -204,8 +207,9 @@ namespace OpenSim.Framework.Servers.HttpServer
} }
PollServiceHttpRequest wreq; PollServiceHttpRequest wreq;
*/
m_retryRequests.Clear(); m_retryRequests.Clear();
/*
while (m_requests.Count() > 0) while (m_requests.Count() > 0)
{ {
try try
@ -218,7 +222,7 @@ namespace OpenSim.Framework.Servers.HttpServer
{ {
} }
} }
*/
m_requests.Clear(); m_requests.Clear();
} }
@ -229,7 +233,6 @@ namespace OpenSim.Framework.Servers.HttpServer
while (m_running) while (m_running)
{ {
PollServiceHttpRequest req = m_requests.Dequeue(5000); PollServiceHttpRequest req = m_requests.Dequeue(5000);
Watchdog.UpdateThread(); Watchdog.UpdateThread();
if (req != null) if (req != null)
{ {

View File

@ -353,5 +353,17 @@ namespace OpenSim.Framework.Servers
return m_Servers[port]; return m_Servers[port];
} }
} }
public static void Stop()
{
lock (m_Servers)
{
foreach (BaseHttpServer httpServer in m_Servers.Values)
{
httpServer.Stop();
}
}
}
} }
} }

View File

@ -106,6 +106,8 @@ namespace OpenSim.Region.CoreModules.Hypergrid
if (!m_Enabled) if (!m_Enabled)
return; return;
base.RemoveRegion(scene);
scene.EventManager.OnClientClosed -= EventManager_OnClientClosed; scene.EventManager.OnClientClosed -= EventManager_OnClientClosed;
} }

View File

@ -415,6 +415,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
public void Close() public void Close()
{ {
ThreadPool.Shutdown();
} }
public string Name public string Name

View File

@ -215,6 +215,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
m_scene.EventManager.OnNewClient -= OnNewClient; m_scene.EventManager.OnNewClient -= OnNewClient;
m_scene.EventManager.OnRegisterCaps -= OnRegisterCaps; m_scene.EventManager.OnRegisterCaps -= OnRegisterCaps;
m_scene.UnregisterModuleInterface<IWorldMapModule>(this);
string regionimage = "regionImage" + m_scene.RegionInfo.RegionID.ToString(); string regionimage = "regionImage" + m_scene.RegionInfo.RegionID.ToString();
regionimage = regionimage.Replace("-", ""); regionimage = regionimage.Replace("-", "");
MainServer.Instance.RemoveLLSDHandler("/MAP/MapItems/" + m_scene.RegionInfo.RegionHandle.ToString(), MainServer.Instance.RemoveLLSDHandler("/MAP/MapItems/" + m_scene.RegionInfo.RegionHandle.ToString(),
@ -1148,7 +1150,12 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
List<MapBlockRequestData> thisRunData = new List<MapBlockRequestData>(); List<MapBlockRequestData> thisRunData = new List<MapBlockRequestData>();
while (true) while (true)
{ {
m_mapBlockRequestEvent.WaitOne(); while(!m_mapBlockRequestEvent.WaitOne(4900))
{
if(m_scene == null)
return;
}
lock (m_mapBlockRequestEvent) lock (m_mapBlockRequestEvent)
{ {
int total = 0; int total = 0;

View File

@ -827,6 +827,9 @@ namespace OpenSim.Region.ScriptEngine.XEngine
if (m_ScriptEngines.Contains(this)) if (m_ScriptEngines.Contains(this))
m_ScriptEngines.Remove(this); m_ScriptEngines.Remove(this);
} }
lock(m_Scripts)
m_ThreadPool.Shutdown();
} }
public object DoBackup(object o) public object DoBackup(object o)