mantis 8890: waste CPU checking if asset id == Zero on get; several changes on region Asset connector

This commit is contained in:
UbitUmarov
2021-05-29 15:08:22 +01:00
parent 5c99e94b79
commit a23bf4eb1b
8 changed files with 158 additions and 90 deletions

View File

@@ -167,9 +167,7 @@ namespace OpenSim.Services.AssetService
{
//m_log.DebugFormat("[XASSET SERVICE]: Get asset async {0}", id);
UUID assetID;
if (!UUID.TryParse(id, out assetID))
if (!UUID.TryParse(id, out UUID assetID) || assetID == UUID.Zero)
return false;
AssetBase asset = Get(id);

View File

@@ -144,7 +144,7 @@ namespace OpenSim.Services.Connectors
{
string uri = m_ServerURI + "/assets/" + id;
asset = SynchronousRestObjectRequester.MakeRequest<int, AssetBase>("GET", uri, 0, m_Auth);
asset = SynchronousRestObjectRequester.MakeGetRequest<AssetBase>(uri, 0, m_Auth);
if (m_Cache != null)
{
if (asset != null)
@@ -177,7 +177,7 @@ namespace OpenSim.Services.Connectors
return null;
string uri = m_ServerURI + "/assets/" + id + "/metadata";
return SynchronousRestObjectRequester.MakeRequest<int, AssetMetadata>("GET", uri, 0, m_Auth);
return SynchronousRestObjectRequester.MakeGetRequest<AssetMetadata>(uri, 0, m_Auth);
}
@@ -269,7 +269,7 @@ namespace OpenSim.Services.Connectors
string id = r.id;
try
{
AssetBase a = SynchronousRestObjectRequester.MakeRequest<int, AssetBase>("GET", r.uri, 0, 30000, m_Auth);
AssetBase a = SynchronousRestObjectRequester.MakeGetRequest<AssetBase>(r.uri, 30000, m_Auth);
if (a != null && m_Cache != null)
m_Cache.Cache(a);
@@ -338,12 +338,9 @@ namespace OpenSim.Services.Connectors
if (asset.FullID == UUID.Zero)
{
UUID uuid = UUID.Zero;
if (UUID.TryParse(asset.ID, out uuid))
{
if (UUID.TryParse(asset.ID, out UUID uuid))
asset.FullID = uuid;
}
if(asset.FullID == UUID.Zero)
else
{
m_log.WarnFormat("[Assets] Zero IDs: {0}",asset.Name);
asset.FullID = UUID.Random();
@@ -351,11 +348,9 @@ namespace OpenSim.Services.Connectors
}
}
if (m_Cache != null)
m_Cache.Cache(asset);
if (asset.Temporary || asset.Local)
{
m_Cache?.Cache(asset);
return asset.ID;
}
@@ -385,8 +380,7 @@ namespace OpenSim.Services.Connectors
// Placing this here, so that this work with old asset servers that don't send any reply back
// SynchronousRestObjectRequester returns somethins that is not an empty string
asset.ID = newID;
if (m_Cache != null)
m_Cache.Cache(asset);
m_Cache?.Cache(asset);
}
}
@@ -402,7 +396,6 @@ namespace OpenSim.Services.Connectors
m_Cache?.Get(id, out asset);
if (asset == null)
{
AssetMetadata metadata = GetMetadata(id);
@@ -426,19 +419,13 @@ namespace OpenSim.Services.Connectors
public virtual bool Delete(string id)
{
m_Cache?.Expire(id);
if (m_ServerURI == null)
return false;
string uri = m_ServerURI + "/assets/" + id;
if (SynchronousRestObjectRequester.MakeRequest<int, bool>("DELETE", uri, 0, m_Auth))
{
if (m_Cache != null)
m_Cache.Expire(id);
return true;
}
return false;
return SynchronousRestObjectRequester.MakeRequest<int, bool>("DELETE", uri, 0, m_Auth);
}
}
}

View File

@@ -128,6 +128,9 @@ namespace OpenSim.Services.Connectors
string url = string.Empty;
string assetID = string.Empty;
if (id.Equals(Util.UUIDZeroString))
return false;
if (Util.ParseForeignAssetID(id, out url, out assetID) > 0)
{
IAssetService connector = GetConnector(url);