aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
diff options
context:
space:
mode:
authorUbitUmarov2018-01-21 20:22:28 +0000
committerUbitUmarov2018-01-21 20:22:28 +0000
commitccdaebaed6c6932d57c030adc51347d6b9e73ac7 (patch)
tree99733cbaade16c05f6c697c313c5eabebf9d896c /OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
parentno need to set MuteListsService twice (diff)
downloadopensim-SC-ccdaebaed6c6932d57c030adc51347d6b9e73ac7.zip
opensim-SC-ccdaebaed6c6932d57c030adc51347d6b9e73ac7.tar.gz
opensim-SC-ccdaebaed6c6932d57c030adc51347d6b9e73ac7.tar.bz2
opensim-SC-ccdaebaed6c6932d57c030adc51347d6b9e73ac7.tar.xz
give concurrentqueue another chance
Diffstat (limited to 'OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs')
-rw-r--r--OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs30
1 files changed, 9 insertions, 21 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
index cbdd781..bbfab64 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
@@ -30,13 +30,10 @@ using System.Collections;
30using System.Threading; 30using System.Threading;
31using System.Reflection; 31using System.Reflection;
32using log4net; 32using log4net;
33using HttpServer;
34using OpenSim.Framework;
35using OpenSim.Framework.Monitoring; 33using OpenSim.Framework.Monitoring;
36using Amib.Threading; 34using Amib.Threading;
37using System.IO;
38using System.Text;
39using System.Collections.Generic; 35using System.Collections.Generic;
36using System.Collections.Concurrent;
40 37
41namespace OpenSim.Framework.Servers.HttpServer 38namespace OpenSim.Framework.Servers.HttpServer
42{ 39{
@@ -48,7 +45,7 @@ namespace OpenSim.Framework.Servers.HttpServer
48 45
49 private Dictionary<PollServiceHttpRequest, Queue<PollServiceHttpRequest>> m_bycontext; 46 private Dictionary<PollServiceHttpRequest, Queue<PollServiceHttpRequest>> m_bycontext;
50 private BlockingQueue<PollServiceHttpRequest> m_requests = new BlockingQueue<PollServiceHttpRequest>(); 47 private BlockingQueue<PollServiceHttpRequest> m_requests = new BlockingQueue<PollServiceHttpRequest>();
51 private static Queue<PollServiceHttpRequest> m_retryRequests = new Queue<PollServiceHttpRequest>(); 48 private static ConcurrentQueue<PollServiceHttpRequest> m_retryRequests = new ConcurrentQueue<PollServiceHttpRequest>();
52 49
53 private uint m_WorkerThreadCount = 0; 50 private uint m_WorkerThreadCount = 0;
54 private Thread[] m_workerThreads; 51 private Thread[] m_workerThreads;
@@ -112,10 +109,7 @@ namespace OpenSim.Framework.Servers.HttpServer
112 private void ReQueueEvent(PollServiceHttpRequest req) 109 private void ReQueueEvent(PollServiceHttpRequest req)
113 { 110 {
114 if (m_running) 111 if (m_running)
115 { 112 m_retryRequests.Enqueue(req);
116 lock (m_retryRequests)
117 m_retryRequests.Enqueue(req);
118 }
119 } 113 }
120 114
121 public void Enqueue(PollServiceHttpRequest req) 115 public void Enqueue(PollServiceHttpRequest req)
@@ -177,16 +171,13 @@ namespace OpenSim.Framework.Servers.HttpServer
177 171
178 private void CheckRetries() 172 private void CheckRetries()
179 { 173 {
174 PollServiceHttpRequest preq;
180 while (m_running) 175 while (m_running)
181
182 { 176 {
183 Thread.Sleep(100); // let the world move .. back to faster rate 177 Thread.Sleep(100);
184 Watchdog.UpdateThread(); 178 Watchdog.UpdateThread();
185 lock (m_retryRequests) 179 while (m_running && m_retryRequests.TryDequeue(out preq))
186 { 180 m_requests.Enqueue(preq);
187 while (m_retryRequests.Count > 0 && m_running)
188 m_requests.Enqueue(m_retryRequests.Dequeue());
189 }
190 } 181 }
191 } 182 }
192 183
@@ -209,10 +200,9 @@ namespace OpenSim.Framework.Servers.HttpServer
209 200
210 try 201 try
211 { 202 {
212 foreach (PollServiceHttpRequest req in m_retryRequests) 203 PollServiceHttpRequest req;
213 { 204 while(m_retryRequests.TryDequeue(out req))
214 req.DoHTTPstop(m_server); 205 req.DoHTTPstop(m_server);
215 }
216 } 206 }
217 catch 207 catch
218 { 208 {
@@ -220,8 +210,6 @@ namespace OpenSim.Framework.Servers.HttpServer
220 210
221 PollServiceHttpRequest wreq; 211 PollServiceHttpRequest wreq;
222 212
223 m_retryRequests.Clear();
224
225 while (m_requests.Count() > 0) 213 while (m_requests.Count() > 0)
226 { 214 {
227 try 215 try