diff options
author | Justin Clark-Casey (justincc) | 2013-06-10 23:30:35 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2013-06-10 23:30:35 +0100 |
commit | 32d1e50565787eaf8fac8b5f0bd899b6e3b3b303 (patch) | |
tree | 239d01894c5c73755f14077c2ce8f3d290bcff26 | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC_OLD-32d1e50565787eaf8fac8b5f0bd899b6e3b3b303.zip opensim-SC_OLD-32d1e50565787eaf8fac8b5f0bd899b6e3b3b303.tar.gz opensim-SC_OLD-32d1e50565787eaf8fac8b5f0bd899b6e3b3b303.tar.bz2 opensim-SC_OLD-32d1e50565787eaf8fac8b5f0bd899b6e3b3b303.tar.xz |
Reinstate explicit starting and stopping of PollServiceRequestManager added in 3eee991 but removed in 7c0bfca
Do not rely on destructors to stop things.
These fire at unpredictable times and cause problems such as http://opensimulator.org/mantis/view.php?id=6503
and most probably http://opensimulator.org/mantis/view.php?id=6668
-rw-r--r-- | OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | 3 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs | 8 |
2 files changed, 7 insertions, 4 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index eb7c578..96a030b 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | |||
@@ -1805,6 +1805,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
1805 | 1805 | ||
1806 | // Long Poll Service Manager with 3 worker threads a 25 second timeout for no events | 1806 | // Long Poll Service Manager with 3 worker threads a 25 second timeout for no events |
1807 | m_PollServiceManager = new PollServiceRequestManager(this, 3, 25000); | 1807 | m_PollServiceManager = new PollServiceRequestManager(this, 3, 25000); |
1808 | m_PollServiceManager.Start(); | ||
1808 | HTTPDRunning = true; | 1809 | HTTPDRunning = true; |
1809 | 1810 | ||
1810 | //HttpListenerContext context; | 1811 | //HttpListenerContext context; |
@@ -1855,7 +1856,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
1855 | HTTPDRunning = false; | 1856 | HTTPDRunning = false; |
1856 | try | 1857 | try |
1857 | { | 1858 | { |
1858 | // m_PollServiceManager.Stop(); | 1859 | m_PollServiceManager.Stop(); |
1859 | 1860 | ||
1860 | m_httpListener2.ExceptionThrown -= httpServerException; | 1861 | m_httpListener2.ExceptionThrown -= httpServerException; |
1861 | //m_httpListener2.DisconnectHandler = null; | 1862 | //m_httpListener2.DisconnectHandler = null; |
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs index a5380c1..ef35886 100644 --- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs +++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs | |||
@@ -66,7 +66,10 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
66 | m_server = pSrv; | 66 | m_server = pSrv; |
67 | m_WorkerThreadCount = pWorkerThreadCount; | 67 | m_WorkerThreadCount = pWorkerThreadCount; |
68 | m_workerThreads = new Thread[m_WorkerThreadCount]; | 68 | m_workerThreads = new Thread[m_WorkerThreadCount]; |
69 | } | ||
69 | 70 | ||
71 | public void Start() | ||
72 | { | ||
70 | //startup worker threads | 73 | //startup worker threads |
71 | for (uint i = 0; i < m_WorkerThreadCount; i++) | 74 | for (uint i = 0; i < m_WorkerThreadCount; i++) |
72 | { | 75 | { |
@@ -91,7 +94,6 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
91 | 1000 * 60 * 10); | 94 | 1000 * 60 * 10); |
92 | } | 95 | } |
93 | 96 | ||
94 | |||
95 | private void ReQueueEvent(PollServiceHttpRequest req) | 97 | private void ReQueueEvent(PollServiceHttpRequest req) |
96 | { | 98 | { |
97 | if (m_running) | 99 | if (m_running) |
@@ -142,14 +144,14 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
142 | } | 144 | } |
143 | } | 145 | } |
144 | 146 | ||
145 | ~PollServiceRequestManager() | 147 | public void Stop() |
146 | { | 148 | { |
147 | m_running = false; | 149 | m_running = false; |
148 | // m_timeout = -10000; // cause all to expire | 150 | // m_timeout = -10000; // cause all to expire |
149 | Thread.Sleep(1000); // let the world move | 151 | Thread.Sleep(1000); // let the world move |
150 | 152 | ||
151 | foreach (Thread t in m_workerThreads) | 153 | foreach (Thread t in m_workerThreads) |
152 | Watchdog.AbortThread(t.ManagedThreadId); | 154 | Watchdog.AbortThread(t.ManagedThreadId); |
153 | 155 | ||
154 | try | 156 | try |
155 | { | 157 | { |