From 881f295e702ac30244803fddedef70b242084914 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Wed, 30 Jan 2008 22:13:47 +0000 Subject: [PATCH] * Add 'asset not found' statistics to grid asset server stats --- .../Statistics/AssetStatsReporter.cs | 31 ++++++++++++++----- OpenSim/Grid/AssetServer/RestService.cs | 14 +++++++-- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/OpenSim/Framework/Statistics/AssetStatsReporter.cs b/OpenSim/Framework/Statistics/AssetStatsReporter.cs index 4489c65688..bcd3a75212 100644 --- a/OpenSim/Framework/Statistics/AssetStatsReporter.cs +++ b/OpenSim/Framework/Statistics/AssetStatsReporter.cs @@ -40,11 +40,15 @@ namespace OpenSim.Grid.AssetServer private Timer ageStatsTimer = new Timer(24 * 60 * 60 * 1000); private DateTime startTime = DateTime.Now; - private long assetRequestsToday; + private long assetRequestsToday; + private long assetRequestsNotFoundToday; private long assetRequestsYesterday; + private long assetRequestsNotFoundYesterday; - public long AssetRequestsToday { get { return assetRequestsToday; } } - public long AssetRequestsYesterday { get { return assetRequestsYesterday; } } + public long AssetRequestsToday { get { return assetRequestsToday; } } + public long AssetRequestsNotFoundToday { get { return assetRequestsNotFoundToday; } } + public long AssetRequestsYesterday { get { return assetRequestsYesterday; } } + public long AssetRequestsNotFoundYesterday { get { return assetRequestsNotFoundYesterday; } } public AssetStatsReporter() { @@ -58,7 +62,18 @@ namespace OpenSim.Grid.AssetServer // There is a possibility that an asset request could occur between the execution of these // two statements. But we're better off without the synchronization overhead. - assetRequestsToday = 0; + assetRequestsToday = 0; + + assetRequestsNotFoundYesterday = assetRequestsNotFoundToday; + assetRequestsNotFoundToday = 0; + } + + /// + /// Record that an asset request failed to find an asset + /// + public void AddNotFoundRequest() + { + assetRequestsNotFoundToday++; } /// @@ -82,10 +97,10 @@ namespace OpenSim.Grid.AssetServer long assetRequestsYesterdayPerHour = (long)Math.Round(AssetRequestsYesterday / 24.0); return string.Format( -@"Asset requests today : {0} ({1} per hour) -Asset requests yesterday : {2} ({3} per hour)", - AssetRequestsToday, assetRequestsTodayPerHour, - AssetRequestsYesterday, assetRequestsYesterdayPerHour); +@"Asset requests today : {0} ({1} per hour) of which {2} were not found +Asset requests yesterday : {3} ({4} per hour) of which {5} were not found", + AssetRequestsToday, assetRequestsTodayPerHour, AssetRequestsNotFoundToday, + AssetRequestsYesterday, assetRequestsYesterdayPerHour, AssetRequestsNotFoundYesterday); } } } diff --git a/OpenSim/Grid/AssetServer/RestService.cs b/OpenSim/Grid/AssetServer/RestService.cs index 13970e77dc..9b288a78a7 100644 --- a/OpenSim/Grid/AssetServer/RestService.cs +++ b/OpenSim/Grid/AssetServer/RestService.cs @@ -45,6 +45,12 @@ namespace OpenSim.Grid.AssetServer private IAssetProvider m_assetProvider; private AssetStatsReporter m_stats; + /// + /// Constructor. + /// + /// + /// + /// Can be null if stats collection isn't required public GetAssetStreamHandler(OpenAsset_Main assetManager, IAssetProvider assetProvider, AssetStatsReporter stats) : base("GET", "/assets") @@ -73,8 +79,9 @@ namespace OpenSim.Grid.AssetServer "REST", "GET:/asset ignoring request with malformed UUID {0}", p[0]); return result; } - - m_stats.AddRequest(); + + if (m_stats != null) + m_stats.AddRequest(); AssetBase asset = m_assetProvider.FetchAsset(assetID); if (asset != null) @@ -100,6 +107,9 @@ namespace OpenSim.Grid.AssetServer } else { + if (m_stats != null) + m_stats.AddNotFoundRequest(); + MainLog.Instance.Verbose("REST", "GET:/asset failed to find {0}", assetID); } }