Trying some locks on asset database access.
parent
1fb47bc4c5
commit
0770a5de0a
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue