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