Trying some locks on asset database access.

afrisby
MW 2007-09-11 04:54:55 +00:00
parent 1fb47bc4c5
commit 0770a5de0a
1 changed files with 21 additions and 10 deletions

View File

@ -45,6 +45,7 @@ namespace OpenSim.Framework.Communications.Caches
private BlockingQueue<ARequest> _assetRequests;
private Thread _localAssetServerThread;
protected IAssetProvider m_plugin;
private object syncLock = new object();
public SQLAssetServer()
@ -102,14 +103,20 @@ namespace OpenSim.Framework.Communications.Caches
public void UpdateAsset(AssetBase asset)
{
m_plugin.UpdateAsset(asset);
m_plugin.CommitAssets();
lock (syncLock)
{
m_plugin.UpdateAsset(asset);
m_plugin.CommitAssets();
}
}
public void CreateAsset(AssetBase asset)
{
m_plugin.CreateAsset(asset);
m_plugin.CommitAssets();
lock (syncLock)
{
m_plugin.CreateAsset(asset);
m_plugin.CommitAssets();
}
}
public void SetServerInfo(string ServerUrl, string ServerKey)
@ -130,7 +137,11 @@ namespace OpenSim.Framework.Communications.Caches
MainLog.Instance.Verbose("Requesting asset: " + req.AssetID);
AssetBase asset = m_plugin.FetchAsset(req.AssetID);
AssetBase asset = null;
lock (syncLock)
{
asset = m_plugin.FetchAsset(req.AssetID);
}
if (asset != null)
{
_receiver.AssetReceived(asset, req.IsTexture);