aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMW2009-05-14 18:29:47 +0000
committerMW2009-05-14 18:29:47 +0000
commit80c1c10407a87f4154f8426b64dcf1be6c425acb (patch)
treee60c5c00235f51a6fc27d8c5ce1098c2207f4624
parent* Improve loadregions so that all region configs are checked for clashes (e.g... (diff)
downloadopensim-SC-80c1c10407a87f4154f8426b64dcf1be6c425acb.zip
opensim-SC-80c1c10407a87f4154f8426b64dcf1be6c425acb.tar.gz
opensim-SC-80c1c10407a87f4154f8426b64dcf1be6c425acb.tar.bz2
opensim-SC-80c1c10407a87f4154f8426b64dcf1be6c425acb.tar.xz
Added a bool variable to OGS1GridServices to be able to turn off the use of the remoteRegionInfoCache as caching region data like that stops a dynamic grid (where regions could change port or host at any time, useful for load balancing among other things) from working.
The bool is currently hardcoded to be true (to use the cache). So need to hook this up to a config option later.
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs25
1 files changed, 16 insertions, 9 deletions
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index 4ffb36f..f6da1e4 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -46,6 +46,7 @@ namespace OpenSim.Region.Communications.OGS1
46 { 46 {
47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
48 48
49 private bool m_useRemoteRegionCache = true;
49 /// <summary> 50 /// <summary>
50 /// Encapsulate local backend services for manipulation of local regions 51 /// Encapsulate local backend services for manipulation of local regions
51 /// </summary> 52 /// </summary>
@@ -372,7 +373,7 @@ namespace OpenSim.Region.Communications.OGS1
372 } 373 }
373 374
374 regionInfo = buildRegionInfo(responseData, String.Empty); 375 regionInfo = buildRegionInfo(responseData, String.Empty);
375 if (requestData.ContainsKey("regionHandle")) 376 if ((m_useRemoteRegionCache) && (requestData.ContainsKey("regionHandle")))
376 { 377 {
377 m_remoteRegionInfoCache.Add(Convert.ToUInt64((string) requestData["regionHandle"]), regionInfo); 378 m_remoteRegionInfoCache.Add(Convert.ToUInt64((string) requestData["regionHandle"]), regionInfo);
378 } 379 }
@@ -394,7 +395,7 @@ namespace OpenSim.Region.Communications.OGS1
394 return regionInfo; 395 return regionInfo;
395 } 396 }
396 397
397 if (!m_remoteRegionInfoCache.TryGetValue(regionHandle, out regionInfo)) 398 if((!m_useRemoteRegionCache) || (!m_remoteRegionInfoCache.TryGetValue(regionHandle, out regionInfo)))
398 { 399 {
399 try 400 try
400 { 401 {
@@ -437,11 +438,14 @@ namespace OpenSim.Region.Communications.OGS1
437 //IPEndPoint neighbourInternalEndPoint = new IPEndPoint(IPAddress.Parse(internalIpStr), (int) port); 438 //IPEndPoint neighbourInternalEndPoint = new IPEndPoint(IPAddress.Parse(internalIpStr), (int) port);
438 regionInfo = RegionInfo.Create(regionID, regionName, regX, regY, externalHostName, httpPort, simPort, remotingPort, simURI ); 439 regionInfo = RegionInfo.Create(regionID, regionName, regX, regY, externalHostName, httpPort, simPort, remotingPort, simURI );
439 440
440 lock (m_remoteRegionInfoCache) 441 if (m_useRemoteRegionCache)
441 { 442 {
442 if (!m_remoteRegionInfoCache.ContainsKey(regionHandle)) 443 lock (m_remoteRegionInfoCache)
443 { 444 {
444 m_remoteRegionInfoCache.Add(regionHandle, regionInfo); 445 if (!m_remoteRegionInfoCache.ContainsKey(regionHandle))
446 {
447 m_remoteRegionInfoCache.Add(regionHandle, regionInfo);
448 }
445 } 449 }
446 } 450 }
447 } 451 }
@@ -481,10 +485,13 @@ namespace OpenSim.Region.Communications.OGS1
481 485
482 public RegionInfo RequestClosestRegion(string regionName) 486 public RegionInfo RequestClosestRegion(string regionName)
483 { 487 {
484 foreach (RegionInfo ri in m_remoteRegionInfoCache.Values) 488 if (m_useRemoteRegionCache)
485 { 489 {
486 if (ri.RegionName == regionName) 490 foreach (RegionInfo ri in m_remoteRegionInfoCache.Values)
487 return ri; 491 {
492 if (ri.RegionName == regionName)
493 return ri;
494 }
488 } 495 }
489 496
490 RegionInfo regionInfo = null; 497 RegionInfo regionInfo = null;
@@ -508,7 +515,7 @@ namespace OpenSim.Region.Communications.OGS1
508 515
509 regionInfo = buildRegionInfo(responseData, ""); 516 regionInfo = buildRegionInfo(responseData, "");
510 517
511 if (!m_remoteRegionInfoCache.ContainsKey(regionInfo.RegionHandle)) 518 if ((m_useRemoteRegionCache) && (!m_remoteRegionInfoCache.ContainsKey(regionInfo.RegionHandle)))
512 m_remoteRegionInfoCache.Add(regionInfo.RegionHandle, regionInfo); 519 m_remoteRegionInfoCache.Add(regionInfo.RegionHandle, regionInfo);
513 } 520 }
514 catch 521 catch