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

@ -44,7 +44,8 @@ namespace OpenSim.Framework.Communications.Caches
private IAssetReceiver _receiver;
private BlockingQueue<ARequest> _assetRequests;
private Thread _localAssetServerThread;
protected IAssetProvider m_plugin;
protected IAssetProvider m_plugin;
private object syncLock = new object();
public SQLAssetServer()
@ -101,15 +102,21 @@ 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)
@ -128,9 +135,13 @@ namespace OpenSim.Framework.Communications.Caches
{
ARequest req = this._assetRequests.Dequeue();
MainLog.Instance.Verbose("Requesting asset: " + req.AssetID);
AssetBase asset = m_plugin.FetchAsset(req.AssetID);
MainLog.Instance.Verbose("Requesting asset: " + req.AssetID);
AssetBase asset = null;
lock (syncLock)
{
asset = m_plugin.FetchAsset(req.AssetID);
}
if (asset != null)
{
_receiver.AssetReceived(asset, req.IsTexture);