From d6519924ba096c569294aa6653e6720629002f8e Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Fri, 13 Jun 2008 18:04:01 +0000 Subject: * refactor: catch asset service request exceptions at the AssetServerBase level rather than in the GridAssetClient * this is to enable logging of asset request exceptions soon --- .../Communications/Cache/AssetServerBase.cs | 23 +++++++++++-- .../Communications/Cache/GridAssetClient.cs | 38 +++++++++------------- 2 files changed, 35 insertions(+), 26 deletions(-) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs index db71079..053cb0f 100644 --- a/OpenSim/Framework/Communications/Cache/AssetServerBase.cs +++ b/OpenSim/Framework/Communications/Cache/AssetServerBase.cs @@ -57,6 +57,10 @@ namespace OpenSim.Framework.Communications.Cache /// /// /// + /// + /// Thrown if the request failed for some other reason than that the + /// asset cannot be found. + /// protected abstract AssetBase GetAsset(AssetRequest req); /// @@ -66,17 +70,30 @@ namespace OpenSim.Framework.Communications.Cache /// protected virtual void ProcessRequest(AssetRequest req) { - AssetBase asset = GetAsset(req); + AssetBase asset; + + try + { + asset = GetAsset(req); + } + catch (Exception e) + { + m_log.ErrorFormat("[ASSET]: Asset request for {0} threw exception {1}", req.AssetID, e); + + m_receiver.AssetNotFound(req.AssetID, req.IsTexture); + + return; + } if (asset != null) { - //m_log.InfoFormat("[ASSETSERVER]: Asset {0} received from asset server", req.AssetID); + m_log.DebugFormat("[ASSET]: Asset {0} received from asset server", req.AssetID); m_receiver.AssetReceived(asset, req.IsTexture); } else { - //m_log.ErrorFormat("[ASSET SERVER]: Asset {0} not found by asset server", req.AssetID); + m_log.WarnFormat("[ASSET]: Asset {0} not found by asset server", req.AssetID); m_receiver.AssetNotFound(req.AssetID, req.IsTexture); } diff --git a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs index 4b4ef17..7787805 100644 --- a/OpenSim/Framework/Communications/Cache/GridAssetClient.cs +++ b/OpenSim/Framework/Communications/Cache/GridAssetClient.cs @@ -49,38 +49,30 @@ namespace OpenSim.Framework.Communications.Cache protected override AssetBase GetAsset(AssetRequest req) { - Stream s = null; - try - { - #if DEBUG - //m_log.DebugFormat("[GRID ASSET CLIENT]: Querying for {0}", req.AssetID.ToString()); - #endif + #if DEBUG + //m_log.DebugFormat("[GRID ASSET CLIENT]: Querying for {0}", req.AssetID.ToString()); + #endif - RestClient rc = new RestClient(_assetServerUrl); - rc.AddResourcePath("assets"); - rc.AddResourcePath(req.AssetID.ToString()); - if (req.IsTexture) - rc.AddQueryParameter("texture"); + RestClient rc = new RestClient(_assetServerUrl); + rc.AddResourcePath("assets"); + rc.AddResourcePath(req.AssetID.ToString()); + if (req.IsTexture) + rc.AddQueryParameter("texture"); - rc.RequestMethod = "GET"; - s = rc.Request(); + rc.RequestMethod = "GET"; + + Stream s = rc.Request(); - if (s.Length > 0) - { - XmlSerializer xs = new XmlSerializer(typeof (AssetBase)); - - return (AssetBase) xs.Deserialize(s); - } - } - catch (Exception e) + if (s.Length > 0) { - m_log.ErrorFormat("[GRID ASSET CLIENT]: Failed to get asset {0}, {1}", req.AssetID, e); + XmlSerializer xs = new XmlSerializer(typeof (AssetBase)); + + return (AssetBase) xs.Deserialize(s); } return null; } - public override void UpdateAsset(AssetBase asset) { throw new Exception("The method or operation is not implemented."); -- cgit v1.1