Make the asset retrieval concurrency a config switch. The current value

of 30 is still hanging badly on some mono versions. The switch defaults to
30 to preserve current behavior.
connector_plugin
Mic Bowman 2012-10-04 08:41:06 -07:00
parent b977f962fa
commit d98af79f77
2 changed files with 12 additions and 3 deletions

View File

@ -47,6 +47,7 @@ namespace OpenSim.Services.Connectors
private string m_ServerURI = String.Empty; private string m_ServerURI = String.Empty;
private IImprovedAssetCache m_Cache = null; private IImprovedAssetCache m_Cache = null;
private int m_maxAssetRequestConcurrency = 30;
private delegate void AssetRetrievedEx(AssetBase asset); private delegate void AssetRetrievedEx(AssetBase asset);
@ -71,6 +72,10 @@ namespace OpenSim.Services.Connectors
public virtual void Initialise(IConfigSource source) public virtual void Initialise(IConfigSource source)
{ {
IConfig netconfig = source.Configs["Network"];
if (netconfig != null)
m_maxAssetRequestConcurrency = netconfig.GetInt("MaxRequestConcurrency",m_maxAssetRequestConcurrency);
IConfig assetConfig = source.Configs["AssetService"]; IConfig assetConfig = source.Configs["AssetService"];
if (assetConfig == null) if (assetConfig == null)
{ {
@ -108,7 +113,7 @@ namespace OpenSim.Services.Connectors
if (asset == null) if (asset == null)
{ {
asset = SynchronousRestObjectRequester. asset = SynchronousRestObjectRequester.
MakeRequest<int, AssetBase>("GET", uri, 0, 30); MakeRequest<int, AssetBase>("GET", uri, 0, m_maxAssetRequestConcurrency);
if (m_Cache != null) if (m_Cache != null)
m_Cache.Cache(asset); m_Cache.Cache(asset);
@ -221,7 +226,7 @@ namespace OpenSim.Services.Connectors
m_AssetHandlers.Remove(id); m_AssetHandlers.Remove(id);
} }
handlers.Invoke(a); handlers.Invoke(a);
}, 30); }, m_maxAssetRequestConcurrency);
success = true; success = true;
} }

View File

@ -427,6 +427,10 @@
; " (Mozilla Compatible)" to the text where there are problems with a web server ; " (Mozilla Compatible)" to the text where there are problems with a web server
;user_agent = "OpenSim LSL (Mozilla Compatible)" ;user_agent = "OpenSim LSL (Mozilla Compatible)"
; OpenSim can send multiple simultaneous requests for services such as asset
; retrieval. However, some versions of mono appear to hang when there are too
; many simultaneous requests, default is 30 and is currently applied only to assets
;MaxRequestConcurrency = 30
[XMLRPC] [XMLRPC]
; ## ; ##