aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Framework/Statistics/SimExtraStatsCollector.cs29
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs1
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs13
-rw-r--r--OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs4
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs37
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdeScene.cs2
6 files changed, 45 insertions, 41 deletions
diff --git a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
index 5449757..3035a62 100644
--- a/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
+++ b/OpenSim/Framework/Statistics/SimExtraStatsCollector.cs
@@ -148,7 +148,8 @@ namespace OpenSim.Framework.Statistics
148 /// cover situations where the inventory service accepts the request but never returns any data, since 148 /// cover situations where the inventory service accepts the request but never returns any data, since
149 /// we do not yet timeout this situation. 149 /// we do not yet timeout this situation.
150 /// </summary> 150 /// </summary>
151 public long InventoryServiceRetrievalFailures { get { return inventoryServiceRetrievalFailures; } } 151 /// <remarks>Commented out because we do not cache inventory at this point</remarks>
152// public long InventoryServiceRetrievalFailures { get { return inventoryServiceRetrievalFailures; } }
152 153
153 /// <summary> 154 /// <summary>
154 /// Retrieve the total frame time (in ms) of the last frame 155 /// Retrieve the total frame time (in ms) of the last frame
@@ -219,10 +220,10 @@ namespace OpenSim.Framework.Statistics
219 assetServiceRequestFailures++; 220 assetServiceRequestFailures++;
220 } 221 }
221 222
222 public void AddInventoryServiceRetrievalFailure() 223// public void AddInventoryServiceRetrievalFailure()
223 { 224// {
224 inventoryServiceRetrievalFailures++; 225// inventoryServiceRetrievalFailures++;
225 } 226// }
226 227
227 /// <summary> 228 /// <summary>
228 /// Register as a packet queue stats provider 229 /// Register as a packet queue stats provider
@@ -328,13 +329,13 @@ Asset service request failures: {3}" + Environment.NewLine,
328 "Abnormal client thread terminations: {0}" + Environment.NewLine, 329 "Abnormal client thread terminations: {0}" + Environment.NewLine,
329 abnormalClientThreadTerminations)); 330 abnormalClientThreadTerminations));
330 331
331 sb.Append(Environment.NewLine); 332// sb.Append(Environment.NewLine);
332 sb.Append("INVENTORY STATISTICS"); 333// sb.Append("INVENTORY STATISTICS");
333 sb.Append(Environment.NewLine); 334// sb.Append(Environment.NewLine);
334 sb.Append( 335// sb.Append(
335 string.Format( 336// string.Format(
336 "Initial inventory caching failures: {0}" + Environment.NewLine, 337// "Initial inventory caching failures: {0}" + Environment.NewLine,
337 InventoryServiceRetrievalFailures)); 338// InventoryServiceRetrievalFailures));
338 339
339 sb.Append(Environment.NewLine); 340 sb.Append(Environment.NewLine);
340 sb.Append("FRAME STATISTICS"); 341 sb.Append("FRAME STATISTICS");
@@ -399,8 +400,8 @@ Asset service request failures: {3}" + Environment.NewLine,
399 AssetServiceRequestFailures)); 400 AssetServiceRequestFailures));
400 args["abnormalClientThreadTerminations"] = OSD.FromString (String.Format ("{0:0.##}", 401 args["abnormalClientThreadTerminations"] = OSD.FromString (String.Format ("{0:0.##}",
401 abnormalClientThreadTerminations)); 402 abnormalClientThreadTerminations));
402 args["InventoryServiceRetrievalFailures"] = OSD.FromString (String.Format ("{0:0.##}", 403// args["InventoryServiceRetrievalFailures"] = OSD.FromString (String.Format ("{0:0.##}",
403 InventoryServiceRetrievalFailures)); 404// InventoryServiceRetrievalFailures));
404 args["Dilatn"] = OSD.FromString (String.Format ("{0:0.##}", timeDilation)); 405 args["Dilatn"] = OSD.FromString (String.Format ("{0:0.##}", timeDilation));
405 args["SimFPS"] = OSD.FromString (String.Format ("{0:0.##}", simFps)); 406 args["SimFPS"] = OSD.FromString (String.Format ("{0:0.##}", simFps));
406 args["PhyFPS"] = OSD.FromString (String.Format ("{0:0.##}", physicsFps)); 407 args["PhyFPS"] = OSD.FromString (String.Format ("{0:0.##}", physicsFps));
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index 5610c09..7b1aa2c 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -492,6 +492,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
492 if ((Environment.TickCount & Int32.MaxValue) - udpClient.TickLastPacketReceived > 1000 * 60) 492 if ((Environment.TickCount & Int32.MaxValue) - udpClient.TickLastPacketReceived > 1000 * 60)
493 { 493 {
494 m_log.Warn("[LLUDPSERVER]: Ack timeout, disconnecting " + udpClient.AgentID); 494 m_log.Warn("[LLUDPSERVER]: Ack timeout, disconnecting " + udpClient.AgentID);
495 StatsManager.SimExtraStats.AddAbnormalClientThreadTermination();
495 496
496 RemoveClient(udpClient); 497 RemoveClient(udpClient);
497 return; 498 return;
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 1e2901b..1af8346 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -60,10 +60,6 @@ namespace OpenSim.Region.Framework.Scenes
60 protected internal event PhysicsCrash UnRecoverableError; 60 protected internal event PhysicsCrash UnRecoverableError;
61 private PhysicsCrash handlerPhysicsCrash = null; 61 private PhysicsCrash handlerPhysicsCrash = null;
62 62
63 public event ObjectDuplicateDelegate OnObjectDuplicate;
64 public event ObjectCreateDelegate OnObjectCreate;
65 public event ObjectDeleteDelegate OnObjectRemove;
66
67 #endregion 63 #endregion
68 64
69 #region Fields 65 #region Fields
@@ -404,9 +400,6 @@ namespace OpenSim.Region.Framework.Scenes
404 if (attachToBackup) 400 if (attachToBackup)
405 sceneObject.AttachToBackup(); 401 sceneObject.AttachToBackup();
406 402
407 if (OnObjectCreate != null)
408 OnObjectCreate(sceneObject);
409
410 lock (SceneObjectGroupsByFullID) 403 lock (SceneObjectGroupsByFullID)
411 SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject; 404 SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject;
412 405
@@ -455,9 +448,6 @@ namespace OpenSim.Region.Framework.Scenes
455 if ((grp.RootPart.Flags & PrimFlags.Physics) == PrimFlags.Physics) 448 if ((grp.RootPart.Flags & PrimFlags.Physics) == PrimFlags.Physics)
456 RemovePhysicalPrim(grp.PrimCount); 449 RemovePhysicalPrim(grp.PrimCount);
457 } 450 }
458
459 if (OnObjectRemove != null)
460 OnObjectRemove(Entities[uuid]);
461 451
462 lock (SceneObjectGroupsByFullID) 452 lock (SceneObjectGroupsByFullID)
463 SceneObjectGroupsByFullID.Remove(grp.UUID); 453 SceneObjectGroupsByFullID.Remove(grp.UUID);
@@ -1979,9 +1969,6 @@ namespace OpenSim.Region.Framework.Scenes
1979 // required for physics to update it's position 1969 // required for physics to update it's position
1980 copy.AbsolutePosition = copy.AbsolutePosition; 1970 copy.AbsolutePosition = copy.AbsolutePosition;
1981 1971
1982 if (OnObjectDuplicate != null)
1983 OnObjectDuplicate(original, copy);
1984
1985 return copy; 1972 return copy;
1986 } 1973 }
1987 } 1974 }
diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs
index 95aa864..261029c 100644
--- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs
+++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs
@@ -88,7 +88,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
88 (mod, cmd) => MainConsole.Instance.Output(HandleImageQueuesClear(cmd))); 88 (mod, cmd) => MainConsole.Instance.Output(HandleImageQueuesClear(cmd)));
89 89
90 scene.AddCommand( 90 scene.AddCommand(
91 this, "show image queues", 91 this, "image queues show",
92 "image queues show <first-name> <last-name>", 92 "image queues show <first-name> <last-name>",
93 "Show the image queues (textures downloaded via UDP) for a particular client.", 93 "Show the image queues (textures downloaded via UDP) for a particular client.",
94 (mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd))); 94 (mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd)));
@@ -293,7 +293,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
293 private string GetImageQueuesReport(string[] showParams) 293 private string GetImageQueuesReport(string[] showParams)
294 { 294 {
295 if (showParams.Length < 5 || showParams.Length > 6) 295 if (showParams.Length < 5 || showParams.Length > 6)
296 return "Usage: show image queues <first-name> <last-name> [full]"; 296 return "Usage: image queues show <first-name> <last-name> [full]";
297 297
298 string firstName = showParams[3]; 298 string firstName = showParams[3];
299 string lastName = showParams[4]; 299 string lastName = showParams[4];
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
index 68999fc..c6e8286 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
@@ -134,9 +134,18 @@ namespace OpenSim.Region.Physics.OdePlugin
134 | CollisionCategories.Body 134 | CollisionCategories.Body
135 | CollisionCategories.Character 135 | CollisionCategories.Character
136 | CollisionCategories.Land); 136 | CollisionCategories.Land);
137 internal IntPtr Body = IntPtr.Zero; 137 /// <summary>
138 /// Body for dynamics simulation
139 /// </summary>
140 internal IntPtr Body { get; private set; }
141
138 private OdeScene _parent_scene; 142 private OdeScene _parent_scene;
139 internal IntPtr Shell = IntPtr.Zero; 143
144 /// <summary>
145 /// Collision geometry
146 /// </summary>
147 internal IntPtr Shell { get; private set; }
148
140 private IntPtr Amotor = IntPtr.Zero; 149 private IntPtr Amotor = IntPtr.Zero;
141 private d.Mass ShellMass; 150 private d.Mass ShellMass;
142 151
@@ -1018,6 +1027,13 @@ namespace OpenSim.Region.Physics.OdePlugin
1018 /// <param name="tensor"></param> 1027 /// <param name="tensor"></param>
1019 private void CreateOdeStructures(float npositionX, float npositionY, float npositionZ, float tensor) 1028 private void CreateOdeStructures(float npositionX, float npositionY, float npositionZ, float tensor)
1020 { 1029 {
1030 if (!(Shell == IntPtr.Zero && Body == IntPtr.Zero && Amotor == IntPtr.Zero))
1031 {
1032 m_log.ErrorFormat(
1033 "[ODE CHARACTER]: Creating ODE structures for {0} even though some already exist. Shell = {1}, Body = {2}, Amotor = {3}",
1034 Name, Shell, Body, Amotor);
1035 }
1036
1021 int dAMotorEuler = 1; 1037 int dAMotorEuler = 1;
1022// _parent_scene.waitForSpaceUnlock(_parent_scene.space); 1038// _parent_scene.waitForSpaceUnlock(_parent_scene.space);
1023 if (CAPSULE_LENGTH <= 0) 1039 if (CAPSULE_LENGTH <= 0)
@@ -1135,6 +1151,14 @@ namespace OpenSim.Region.Physics.OdePlugin
1135 /// </summary> 1151 /// </summary>
1136 internal void DestroyOdeStructures() 1152 internal void DestroyOdeStructures()
1137 { 1153 {
1154 // Create avatar capsule and related ODE data
1155 if (Shell == IntPtr.Zero || Body == IntPtr.Zero || Amotor == IntPtr.Zero)
1156 {
1157 m_log.ErrorFormat(
1158 "[ODE CHARACTER]: Destroying ODE structures for {0} even though some are already null. Shell = {1}, Body = {2}, Amotor = {3}",
1159 Name, Shell, Body, Amotor);
1160 }
1161
1138 // destroy avatar capsule and related ODE data 1162 // destroy avatar capsule and related ODE data
1139 if (Amotor != IntPtr.Zero) 1163 if (Amotor != IntPtr.Zero)
1140 { 1164 {
@@ -1260,15 +1284,6 @@ namespace OpenSim.Region.Physics.OdePlugin
1260 { 1284 {
1261 if (m_tainted_isPhysical) 1285 if (m_tainted_isPhysical)
1262 { 1286 {
1263 // Create avatar capsule and related ODE data
1264 if (!(Shell == IntPtr.Zero && Body == IntPtr.Zero && Amotor == IntPtr.Zero))
1265 {
1266 m_log.Warn("[ODE CHARACTER]: re-creating the following avatar ODE data for " + Name + ", even though it already exists - "
1267 + (Shell!=IntPtr.Zero ? "Shell ":"")
1268 + (Body!=IntPtr.Zero ? "Body ":"")
1269 + (Amotor!=IntPtr.Zero ? "Amotor ":""));
1270 }
1271
1272 CreateOdeStructures(_position.X, _position.Y, _position.Z, m_tensor); 1287 CreateOdeStructures(_position.X, _position.Y, _position.Z, m_tensor);
1273 _parent_scene.AddCharacter(this); 1288 _parent_scene.AddCharacter(this);
1274 } 1289 }
diff --git a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
index 228eca9..37daf46 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
@@ -1525,7 +1525,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1525 chr.CollidingGround = false; 1525 chr.CollidingGround = false;
1526 chr.CollidingObj = false; 1526 chr.CollidingObj = false;
1527 1527
1528 // test the avatar's geometry for collision with the space 1528 // Test the avatar's geometry for collision with the space
1529 // This will return near and the space that they are the closest to 1529 // This will return near and the space that they are the closest to
1530 // And we'll run this again against the avatar and the space segment 1530 // And we'll run this again against the avatar and the space segment
1531 // This will return with a bunch of possible objects in the space segment 1531 // This will return with a bunch of possible objects in the space segment