From 6e2f3bd3fb88f41803376428bbffdd6aa67940c0 Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Wed, 4 Jun 2008 16:30:44 +0000
Subject: * Start recording abnormal client thread terminations
---
.../Framework/Statistics/SimExtraStatsCollector.cs | 22 +++++++++++++++++++++-
.../Region/ClientStack/LindenUDP/LLClientView.cs | 4 ++++
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
index 2e7278b..ca3fd4b 100644
--- a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
+++ b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
@@ -37,7 +37,9 @@ namespace OpenSim.Framework.Statistics
/// Collects sim statistics which aren't already being collected for the linden viewer's statistics pane
///
public class SimExtraStatsCollector : IStatsCollector
- {
+ {
+ private long abnormalClientThreadTerminations;
+
private long assetsInCache;
private long texturesInCache;
private long assetCacheMemoryUsage;
@@ -45,6 +47,11 @@ namespace OpenSim.Framework.Statistics
private long blockedMissingTextureRequests;
private long inventoryServiceRetrievalFailures;
+
+ ///
+ /// Number of times that a client thread terminated because of an exception
+ ///
+ public long AbnormalClientThreadTerminations { get { return abnormalClientThreadTerminations; } }
public long AssetsInCache { get { return assetsInCache; } }
public long TexturesInCache { get { return texturesInCache; } }
@@ -71,6 +78,11 @@ namespace OpenSim.Framework.Statistics
///
private IDictionary packetQueueStatsCollectors
= new Dictionary();
+
+ public void AddAbnormalClientThreadTermination()
+ {
+ abnormalClientThreadTerminations++;
+ }
public void AddAsset(AssetBase asset)
{
@@ -147,6 +159,14 @@ namespace OpenSim.Framework.Statistics
Blocked requests for missing textures: {2}" + Environment.NewLine,
TexturesInCache, TextureCacheMemoryUsage / 1024.0,
BlockedMissingTextureRequests));
+
+ sb.Append(Environment.NewLine);
+ sb.Append("CONNECTION STATISTICS");
+ sb.Append(Environment.NewLine);
+ sb.Append(
+ string.Format(
+ "Abnormal client thread terminations: {0}" + Environment.NewLine,
+ abnormalClientThreadTerminations));
sb.Append(Environment.NewLine);
sb.Append("INVENTORY STATISTICS");
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 230fe3c..af23660 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -39,6 +39,7 @@ using libsecondlife.Packets;
using log4net;
using OpenSim.Framework;
using OpenSim.Framework.Communications.Cache;
+using OpenSim.Framework.Statistics;
using OpenSim.Region.ClientStack.LindenUDP;
using OpenSim.Region.Environment.Scenes;
using Timer=System.Timers.Timer;
@@ -729,6 +730,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (e is ThreadAbortException)
throw e;
+ if (StatsManager.SimExtraStats != null)
+ StatsManager.SimExtraStats.AddAbnormalClientThreadTermination();
+
// Don't let a failure in an individual client thread crash the whole sim.
// FIXME: could do more sophisticated cleanup since leaving client resources around may
// cause instability for the region server over time.
--
cgit v1.1