From 1677bde48027f13ed986a865951f3e94fe3499b7 Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Wed, 13 Feb 2008 00:52:49 +0000
Subject: * Clean up the agent's asset transactions when it is removed from the
scene * This may or may not help with the memory leak, need to assess
---
.../Cache/AgentAssetTransactionsManager.cs | 19 +++++++++++++++++--
OpenSim/Region/Environment/Scenes/Scene.cs | 2 ++
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Framework/Communications/Cache/AgentAssetTransactionsManager.cs b/OpenSim/Framework/Communications/Cache/AgentAssetTransactionsManager.cs
index 48b2563..82fe4c0 100644
--- a/OpenSim/Framework/Communications/Cache/AgentAssetTransactionsManager.cs
+++ b/OpenSim/Framework/Communications/Cache/AgentAssetTransactionsManager.cs
@@ -78,9 +78,24 @@ namespace OpenSim.Framework.Communications.Cache
= new AgentAssetTransactions(userID, this, m_dumpAssetsToFile);
AgentTransactions.Add(userID, transactions);
}
- }
+
+ return AgentTransactions[userID];
+ }
+ }
+
+ ///
+ /// Remove the given agent asset transactions. This should be called when a client is departing
+ /// from a scene (and hence won't be making any more transactions here).
+ ///
+ ///
+ public void RemoveAgentAssetTransactions(LLUUID userID)
+ {
+ m_log.DebugFormat("Removing agent asset transactions structure for agent {0}", userID);
- return AgentTransactions[userID];
+ lock (AgentTransactions)
+ {
+ AgentTransactions.Remove(userID);
+ }
}
///
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 62437cf..d763d35 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -1466,6 +1466,8 @@ namespace OpenSim.Region.Environment.Scenes
ForEachScenePresence(
delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
+
+ CommsManager.TransactionsManager.RemoveAgentAssetTransactions(agentID);
lock (m_scenePresences)
{
--
cgit v1.1