From 70aa77f520060a27df1fb7fbdf39685ff866dcf8 Mon Sep 17 00:00:00 2001 From: dahlia Date: Tue, 16 Jul 2013 01:31:09 -0700 Subject: add locking to internal queue in WebFetchInvDescModule; lack of which caused a random crash in a load test yesterday --- .../ClientStack/Linden/Caps/WebFetchInvDescModule.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs') diff --git a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs index 164adeb..4ff617f 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs @@ -254,10 +254,13 @@ namespace OpenSim.Region.ClientStack.Linden } } - if (highPriority) - m_queue.EnqueueHigh(reqinfo); - else - m_queue.EnqueueLow(reqinfo); + lock (m_queue) + { + if (highPriority) + m_queue.EnqueueHigh(reqinfo); + else + m_queue.EnqueueLow(reqinfo); + } }; NoEvents = (x, y) => @@ -345,7 +348,9 @@ namespace OpenSim.Region.ClientStack.Linden { Watchdog.UpdateThread(); - aPollRequest poolreq = m_queue.Dequeue(); + aPollRequest poolreq = null; + lock (m_queue) + poolreq = m_queue.Dequeue(); if (poolreq != null && poolreq.thepoll != null) poolreq.thepoll.Process(poolreq); -- cgit v1.1