From bef2a368f4d901fa231802845aa71b6134c888f4 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 7 Feb 2012 23:38:53 +0000
Subject: Make WebStats logging report consistently as WEB STATS MODULE instead
of VC, VS and WEBSTATS
---
OpenSim/Region/UserStatistics/WebStatsModule.cs | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/UserStatistics/WebStatsModule.cs b/OpenSim/Region/UserStatistics/WebStatsModule.cs
index 24a9418..f627e37 100644
--- a/OpenSim/Region/UserStatistics/WebStatsModule.cs
+++ b/OpenSim/Region/UserStatistics/WebStatsModule.cs
@@ -301,7 +301,7 @@ namespace OpenSim.Region.UserStatistics
public void OnRegisterCaps(UUID agentID, Caps caps)
{
- m_log.DebugFormat("[VC]: OnRegisterCaps: agentID {0} caps {1}", agentID, caps);
+ m_log.DebugFormat("[WEB STATS MODULE]: OnRegisterCaps: agentID {0} caps {1}", agentID, caps);
string capsPath = "/CAPS/VS/" + UUID.Random();
caps.RegisterHandler("ViewerStats",
new RestStreamHandler("POST", capsPath,
@@ -462,7 +462,7 @@ namespace OpenSim.Region.UserStatistics
if (!m_sessions.ContainsKey(agentID))
{
- m_log.Warn("[VS]: no session for stat disclosure");
+ m_log.Warn("[WEB STATS MODULE]: no session for stat disclosure");
return new UserSessionID();
}
uid = m_sessions[agentID];
@@ -667,14 +667,13 @@ namespace OpenSim.Region.UserStatistics
{
updatecmd.ExecuteNonQuery();
}
- catch
- (SqliteExecutionException)
+ catch (SqliteExecutionException)
{
- m_log.Warn("[WEBSTATS]: failed to write stats to storage Execution Exception");
+ m_log.Warn("[WEB STATS MODULE]: failed to write stats to storage Execution Exception");
}
catch (SqliteSyntaxException)
{
- m_log.Warn("[WEBSTATS]: failed to write stats to storage SQL Syntax Exception");
+ m_log.Warn("[WEB STATS MODULE]: failed to write stats to storage SQL Syntax Exception");
}
}
--
cgit v1.1
From dfa19e23f03643762a10677203c088161a99557e Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 8 Feb 2012 21:58:59 +0000
Subject: Stop a scene object from attempting to link with itself (which
results in an exception and constant complaints in v3 viewers).
Aims to address http://opensimulator.org/mantis/view.php?id=5878
---
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 21 ++++++++++++++++++--
OpenSim/Region/Framework/Scenes/SceneGraph.cs | 16 ++++++++++-----
.../Region/Framework/Scenes/SceneObjectGroup.cs | 4 ++++
.../Scenes/Tests/SceneObjectLinkingTests.cs | 23 +++++++++++++++++++---
4 files changed, 54 insertions(+), 10 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 6d7559e..af01624 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -2170,8 +2170,25 @@ namespace OpenSim.Region.Framework.Scenes
m_sceneGraph.DelinkObjects(parts);
}
+ ///
+ /// Link the scene objects containing the indicated parts to a root object.
+ ///
+ ///
+ /// A root prim id of the object which will be the root prim of the resulting linkset.
+ /// A list of child prims for the objects that should be linked in.
public void LinkObjects(IClientAPI client, uint parentPrimId, List childPrimIds)
{
+ LinkObjects(client.AgentId, parentPrimId, childPrimIds);
+ }
+
+ ///
+ /// Link the scene objects containing the indicated parts to a root object.
+ ///
+ /// The ID of the user linking.
+ /// A root prim id of the object which will be the root prim of the resulting linkset.
+ /// A list of child prims for the objects that should be linked in.
+ public void LinkObjects(UUID agentId, uint parentPrimId, List childPrimIds)
+ {
List owners = new List();
List children = new List();
@@ -2183,7 +2200,7 @@ namespace OpenSim.Region.Framework.Scenes
return;
}
- if (!Permissions.CanLinkObject(client.AgentId, root.ParentGroup.RootPart.UUID))
+ if (!Permissions.CanLinkObject(agentId, root.ParentGroup.RootPart.UUID))
{
m_log.DebugFormat("[LINK]: Refusing link. No permissions on root prim");
return;
@@ -2199,7 +2216,7 @@ namespace OpenSim.Region.Framework.Scenes
if (!owners.Contains(part.OwnerID))
owners.Add(part.OwnerID);
- if (Permissions.CanLinkObject(client.AgentId, part.ParentGroup.RootPart.UUID))
+ if (Permissions.CanLinkObject(agentId, part.ParentGroup.RootPart.UUID))
children.Add(part);
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 7d801b5..693a79e 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -1662,6 +1662,10 @@ namespace OpenSim.Region.Framework.Scenes
{
SceneObjectGroup child = children[i].ParentGroup;
+ // Don't try and add a group to itself - this will only cause severe problems later on.
+ if (child == parentGroup)
+ continue;
+
// Make sure no child prim is set for sale
// So that, on delink, no prims are unwittingly
// left for sale and sold off
@@ -1684,11 +1688,13 @@ namespace OpenSim.Region.Framework.Scenes
// We need to explicitly resend the newly link prim's object properties since no other actions
// occur on link to invoke this elsewhere (such as object selection)
- parentGroup.RootPart.CreateSelected = true;
- parentGroup.TriggerScriptChangedEvent(Changed.LINK);
- parentGroup.HasGroupChanged = true;
- parentGroup.ScheduleGroupForFullUpdate();
-
+ if (childGroups.Count > 0)
+ {
+ parentGroup.RootPart.CreateSelected = true;
+ parentGroup.TriggerScriptChangedEvent(Changed.LINK);
+ parentGroup.HasGroupChanged = true;
+ parentGroup.ScheduleGroupForFullUpdate();
+ }
}
finally
{
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index b724135..5b838f8 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1961,6 +1961,10 @@ namespace OpenSim.Region.Framework.Scenes
// "[SCENE OBJECT GROUP]: Linking group with root part {0}, {1} to group with root part {2}, {3}",
// objectGroup.RootPart.Name, objectGroup.RootPart.UUID, RootPart.Name, RootPart.UUID);
+ // Linking to ourselves is not a valid operation.
+ if (objectGroup == this)
+ return;
+
SceneObjectPart linkPart = objectGroup.m_rootPart;
Vector3 oldGroupPosition = linkPart.GroupPosition;
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
index a2332bb..be5b4a8 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs
@@ -39,14 +39,31 @@ using log4net;
namespace OpenSim.Region.Framework.Scenes.Tests
{
- ///
- /// Linking tests
- ///
[TestFixture]
public class SceneObjectLinkingTests
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+ ///
+ /// Links to self should be ignored.
+ ///
+ [Test]
+ public void TestLinkToSelf()
+ {
+ TestHelpers.InMethod();
+
+ UUID ownerId = TestHelpers.ParseTail(0x1);
+ int nParts = 3;
+
+ TestScene scene = SceneHelpers.SetupScene();
+ SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(nParts, ownerId, "TestLinkToSelf_", 0x10);
+ scene.AddSceneObject(sog1);
+ scene.LinkObjects(ownerId, sog1.LocalId, new List() { sog1.Parts[1].LocalId });
+// sog1.LinkToGroup(sog1);
+
+ Assert.That(sog1.Parts.Length, Is.EqualTo(nParts));
+ }
+
[Test]
public void TestLinkDelink2SceneObjects()
{
--
cgit v1.1
From dbe32a1f6d148d16c462b3b7d5a6c507743a5f9a Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 9 Feb 2012 00:10:45 +0000
Subject: minor: put in commented out logging statements for future reuse
---
OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | 3 +++
OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs | 8 +++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
index 6a48b89..8701431 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
@@ -292,13 +292,16 @@ namespace OpenSim.Region.OptionalModules.World.NPC
NPCAvatar av;
if (m_avatars.TryGetValue(agentID, out av))
{
+// m_log.DebugFormat("[NPC MODULE]: Found {0} {1} to remove", agentID, av.Name);
scene.RemoveClient(agentID, false);
m_avatars.Remove(agentID);
+// m_log.DebugFormat("[NPC MODULE]: Removed {0} {1}", agentID, av.Name);
return true;
}
}
+// m_log.DebugFormat("[NPC MODULE]: Could not find {0} to remove", agentID);
return false;
}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
index 9b93135..bc1902b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
@@ -537,6 +537,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
public bool Stop(int timeout)
{
+// m_log.DebugFormat(
+// "[SCRIPT INSTANCE]: Stopping script {0} {1} with timeout {2}", ScriptName, ItemID, timeout);
+
IScriptWorkItem result;
lock (m_EventQueue)
@@ -769,7 +772,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
}
catch (Exception e)
{
- // m_log.DebugFormat("[SCRIPT] Exception: {0}", e.Message);
+// m_log.DebugFormat(
+// "[SCRIPT] Exception in script {0} {1}: {2}{3}",
+// ScriptName, ItemID, e.Message, e.StackTrace);
+
m_InEvent = false;
m_CurrentEvent = String.Empty;
--
cgit v1.1