Change the error messages on region region registration. This changes URM

and region. The non-error case should be compatible, so no version bump.
Untested.
mysql-performance
Melanie 2010-01-13 03:08:34 +00:00
parent 1261618216
commit e3a04fcb7b
9 changed files with 58 additions and 33 deletions

View File

@ -200,7 +200,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
#region IGridService #region IGridService
public bool RegisterRegion(UUID scopeID, GridRegion regionInfo) public string RegisterRegion(UUID scopeID, GridRegion regionInfo)
{ {
// Region doesn't exist here. Trying to link remote region // Region doesn't exist here. Trying to link remote region
if (regionInfo.RegionID.Equals(UUID.Zero)) if (regionInfo.RegionID.Equals(UUID.Zero))
@ -215,12 +215,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
// Try get the map image // Try get the map image
m_HypergridServiceConnector.GetMapImage(regionInfo); m_HypergridServiceConnector.GetMapImage(regionInfo);
return true; return String.Empty;
} }
else else
{ {
m_log.Info("[HGrid]: No such region " + regionInfo.ExternalHostName + ":" + regionInfo.HttpPort + "(" + regionInfo.InternalEndPoint.Port + ")"); m_log.Info("[HGrid]: No such region " + regionInfo.ExternalHostName + ":" + regionInfo.HttpPort + "(" + regionInfo.InternalEndPoint.Port + ")");
return false; return "No such region";
} }
// Note that these remote regions aren't registered in localBackend, so return null, no local listeners // Note that these remote regions aren't registered in localBackend, so return null, no local listeners
} }
@ -469,7 +469,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
} }
// Finally, link it // Finally, link it
if (!RegisterRegion(UUID.Zero, regInfo)) if (RegisterRegion(UUID.Zero, regInfo) != String.Empty)
{ {
m_log.Warn("[HGrid]: Unable to link region"); m_log.Warn("[HGrid]: Unable to link region");
return false; return false;

View File

@ -169,7 +169,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
#region IGridService #region IGridService
public bool RegisterRegion(UUID scopeID, GridRegion regionInfo) public string RegisterRegion(UUID scopeID, GridRegion regionInfo)
{ {
return m_GridService.RegisterRegion(scopeID, regionInfo); return m_GridService.RegisterRegion(scopeID, regionInfo);
} }

View File

@ -135,12 +135,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
#region IGridService #region IGridService
public override bool RegisterRegion(UUID scopeID, GridRegion regionInfo) public override string RegisterRegion(UUID scopeID, GridRegion regionInfo)
{ {
if (m_LocalGridService.RegisterRegion(scopeID, regionInfo)) string msg = m_LocalGridService.RegisterRegion(scopeID, regionInfo);
if (msg == String.Empty)
return base.RegisterRegion(scopeID, regionInfo); return base.RegisterRegion(scopeID, regionInfo);
return false; return msg;
} }
public override bool DeregisterRegion(UUID regionID) public override bool DeregisterRegion(UUID regionID)

View File

@ -1562,9 +1562,9 @@ namespace OpenSim.Region.Framework.Scenes
//m_sceneGridService.RegisterRegion(m_interregionCommsOut, RegionInfo); //m_sceneGridService.RegisterRegion(m_interregionCommsOut, RegionInfo);
GridRegion region = new GridRegion(RegionInfo); GridRegion region = new GridRegion(RegionInfo);
bool success = GridService.RegisterRegion(RegionInfo.ScopeID, region); string error = GridService.RegisterRegion(RegionInfo.ScopeID, region);
if (!success) if (error != String.Empty)
throw new Exception("Can't register with grid"); throw new Exception(error);
m_sceneGridService.SetScene(this); m_sceneGridService.SetScene(this);
m_sceneGridService.InformNeighborsThatRegionisUp(RequestModuleInterface<INeighbourService>(), RegionInfo); m_sceneGridService.InformNeighborsThatRegionisUp(RequestModuleInterface<INeighbourService>(), RegionInfo);

View File

@ -156,14 +156,14 @@ namespace OpenSim.Server.Handlers.Grid
m_log.DebugFormat("[GRID HANDLER]: exception unpacking region data: {0}", e); m_log.DebugFormat("[GRID HANDLER]: exception unpacking region data: {0}", e);
} }
bool result = false; string result = "Error communicating with grid service";
if (rinfo != null) if (rinfo != null)
result = m_GridService.RegisterRegion(scopeID, rinfo); result = m_GridService.RegisterRegion(scopeID, rinfo);
if (result) if (result == String.Empty)
return SuccessResult(); return SuccessResult();
else else
return FailureResult(); return FailureResult(result);
} }
byte[] Deregister(Dictionary<string, object> request) byte[] Deregister(Dictionary<string, object> request)
@ -431,6 +431,11 @@ namespace OpenSim.Server.Handlers.Grid
} }
private byte[] FailureResult() private byte[] FailureResult()
{
return FailureResult(String.Empty);
}
private byte[] FailureResult(string msg)
{ {
XmlDocument doc = new XmlDocument(); XmlDocument doc = new XmlDocument();
@ -449,6 +454,11 @@ namespace OpenSim.Server.Handlers.Grid
rootElement.AppendChild(result); rootElement.AppendChild(result);
XmlElement message = doc.CreateElement("", "Message", "");
message.AppendChild(doc.CreateTextNode(msg));
rootElement.AppendChild(message);
return DocToBytes(doc); return DocToBytes(doc);
} }

View File

@ -86,7 +86,7 @@ namespace OpenSim.Services.Connectors
#region IGridService #region IGridService
public virtual bool RegisterRegion(UUID scopeID, GridRegion regionInfo) public virtual string RegisterRegion(UUID scopeID, GridRegion regionInfo)
{ {
Dictionary<string, object> rinfo = regionInfo.ToKeyValuePairs(); Dictionary<string, object> rinfo = regionInfo.ToKeyValuePairs();
Dictionary<string, object> sendData = new Dictionary<string,object>(); Dictionary<string, object> sendData = new Dictionary<string,object>();
@ -110,11 +110,23 @@ namespace OpenSim.Services.Connectors
Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
if (replyData.ContainsKey("Result")&& (replyData["Result"].ToString().ToLower() == "success")) if (replyData.ContainsKey("Result")&& (replyData["Result"].ToString().ToLower() == "success"))
return true; {
else if (!replyData.ContainsKey("Result")) return String.Empty;
m_log.DebugFormat("[GRID CONNECTOR]: reply data does not contain result field"); }
else else if (replyData.ContainsKey("Result")&& (replyData["Result"].ToString().ToLower() == "failure"))
{
m_log.DebugFormat("[GRID CONNECTOR]: unexpected result {0}", replyData["Result"].ToString()); m_log.DebugFormat("[GRID CONNECTOR]: unexpected result {0}", replyData["Result"].ToString());
return replyData["Message"].ToString();
}
else if (!replyData.ContainsKey("Result"))
{
m_log.DebugFormat("[GRID CONNECTOR]: reply data does not contain result field");
}
else
{
m_log.DebugFormat("[GRID CONNECTOR]: unexpected result {0}", replyData["Result"].ToString());
return "Unexpected result "+replyData["Result"].ToString();
}
} }
else else
@ -125,7 +137,7 @@ namespace OpenSim.Services.Connectors
m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server: {0}", e.Message); m_log.DebugFormat("[GRID CONNECTOR]: Exception when contacting grid server: {0}", e.Message);
} }
return false; return "Error communicating with grid service";
} }
public virtual bool DeregisterRegion(UUID regionID) public virtual bool DeregisterRegion(UUID regionID)

View File

@ -62,7 +62,7 @@ namespace OpenSim.Services.GridService
#region IGridService #region IGridService
public bool RegisterRegion(UUID scopeID, GridRegion regionInfos) public string RegisterRegion(UUID scopeID, GridRegion regionInfos)
{ {
// This needs better sanity testing. What if regionInfo is registering in // This needs better sanity testing. What if regionInfo is registering in
// overlapping coords? // overlapping coords?
@ -71,7 +71,7 @@ namespace OpenSim.Services.GridService
{ {
m_log.WarnFormat("[GRID SERVICE]: Region {0} tried to register in coordinates {1}, {2} which are already in use in scope {3}.", m_log.WarnFormat("[GRID SERVICE]: Region {0} tried to register in coordinates {1}, {2} which are already in use in scope {3}.",
regionInfos.RegionID, regionInfos.RegionLocX, regionInfos.RegionLocY, scopeID); regionInfos.RegionID, regionInfos.RegionLocX, regionInfos.RegionLocY, scopeID);
return false; return "Region overlaps another region";
} }
if ((region != null) && (region.RegionID == regionInfos.RegionID) && if ((region != null) && (region.RegionID == regionInfos.RegionID) &&
((region.posX != regionInfos.RegionLocX) || (region.posY != regionInfos.RegionLocY))) ((region.posX != regionInfos.RegionLocX) || (region.posY != regionInfos.RegionLocY)))
@ -101,7 +101,7 @@ namespace OpenSim.Services.GridService
{ {
m_log.WarnFormat("[GRID SERVICE]: Region {0} tried to register duplicate name with ID {1}.", m_log.WarnFormat("[GRID SERVICE]: Region {0} tried to register duplicate name with ID {1}.",
regionInfos.RegionName, regionInfos.RegionID); regionInfos.RegionName, regionInfos.RegionID);
return false; return "Duplicate region name";
} }
} }
} }
@ -122,7 +122,7 @@ namespace OpenSim.Services.GridService
m_log.DebugFormat("[GRID SERVICE]: Region {0} ({1}) registered successfully at {2}-{3}", m_log.DebugFormat("[GRID SERVICE]: Region {0} ({1}) registered successfully at {2}-{3}",
regionInfos.RegionName, regionInfos.RegionID, regionInfos.RegionLocX, regionInfos.RegionLocY); regionInfos.RegionName, regionInfos.RegionID, regionInfos.RegionLocX, regionInfos.RegionLocY);
return true; return String.Empty;
} }
public bool DeregisterRegion(UUID regionID) public bool DeregisterRegion(UUID regionID)

View File

@ -42,7 +42,7 @@ namespace OpenSim.Services.Interfaces
/// <param name="regionInfos"> </param> /// <param name="regionInfos"> </param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="System.Exception">Thrown if region registration failed</exception> /// <exception cref="System.Exception">Thrown if region registration failed</exception>
bool RegisterRegion(UUID scopeID, GridRegion regionInfos); string RegisterRegion(UUID scopeID, GridRegion regionInfos);
/// <summary> /// <summary>
/// Deregister a region with the grid service. /// Deregister a region with the grid service.

View File

@ -63,27 +63,28 @@ namespace OpenSim.Tests.Clients.GridClient
GridRegion r3 = CreateRegion("Test Region 3", 1005, 1000); GridRegion r3 = CreateRegion("Test Region 3", 1005, 1000);
Console.WriteLine("[GRID CLIENT]: *** Registering region 1"); Console.WriteLine("[GRID CLIENT]: *** Registering region 1");
bool success = m_Connector.RegisterRegion(UUID.Zero, r1); string msg = m_Connector.RegisterRegion(UUID.Zero, r1);
if (success) if (msg == String.Empty)
Console.WriteLine("[GRID CLIENT]: Successfully registered region 1"); Console.WriteLine("[GRID CLIENT]: Successfully registered region 1");
else else
Console.WriteLine("[GRID CLIENT]: region 1 failed to register"); Console.WriteLine("[GRID CLIENT]: region 1 failed to register");
Console.WriteLine("[GRID CLIENT]: *** Registering region 2"); Console.WriteLine("[GRID CLIENT]: *** Registering region 2");
success = m_Connector.RegisterRegion(UUID.Zero, r2); msg = m_Connector.RegisterRegion(UUID.Zero, r2);
if (success) if (msg == String.Empty)
Console.WriteLine("[GRID CLIENT]: Successfully registered region 2"); Console.WriteLine("[GRID CLIENT]: Successfully registered region 2");
else else
Console.WriteLine("[GRID CLIENT]: region 2 failed to register"); Console.WriteLine("[GRID CLIENT]: region 2 failed to register");
Console.WriteLine("[GRID CLIENT]: *** Registering region 3"); Console.WriteLine("[GRID CLIENT]: *** Registering region 3");
success = m_Connector.RegisterRegion(UUID.Zero, r3); msg = m_Connector.RegisterRegion(UUID.Zero, r3);
if (success) if (msg == String.Empty)
Console.WriteLine("[GRID CLIENT]: Successfully registered region 3"); Console.WriteLine("[GRID CLIENT]: Successfully registered region 3");
else else
Console.WriteLine("[GRID CLIENT]: region 3 failed to register"); Console.WriteLine("[GRID CLIENT]: region 3 failed to register");
bool success;
Console.WriteLine("[GRID CLIENT]: *** Deregistering region 3"); Console.WriteLine("[GRID CLIENT]: *** Deregistering region 3");
success = m_Connector.DeregisterRegion(r3.RegionID); success = m_Connector.DeregisterRegion(r3.RegionID);
if (success) if (success)
@ -91,8 +92,8 @@ namespace OpenSim.Tests.Clients.GridClient
else else
Console.WriteLine("[GRID CLIENT]: region 3 failed to deregister"); Console.WriteLine("[GRID CLIENT]: region 3 failed to deregister");
Console.WriteLine("[GRID CLIENT]: *** Registering region 3 again"); Console.WriteLine("[GRID CLIENT]: *** Registering region 3 again");
success = m_Connector.RegisterRegion(UUID.Zero, r3); msg = m_Connector.RegisterRegion(UUID.Zero, r3);
if (success) if (msg == String.Empty)
Console.WriteLine("[GRID CLIENT]: Successfully registered region 3"); Console.WriteLine("[GRID CLIENT]: Successfully registered region 3");
else else
Console.WriteLine("[GRID CLIENT]: region 3 failed to register"); Console.WriteLine("[GRID CLIENT]: region 3 failed to register");