aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Communications/OGS1
diff options
context:
space:
mode:
authorTeravus Ovares2008-01-22 08:52:51 +0000
committerTeravus Ovares2008-01-22 08:52:51 +0000
commit5cf96daaf29209e065b852a0eefeb7f5dbd88b48 (patch)
tree34518c3c3609fbe6654a651d6ad357d257f60f26 /OpenSim/Region/Communications/OGS1
parent* Renamed a number of TerrainEngine functions to conform naming standards bet... (diff)
downloadopensim-SC_OLD-5cf96daaf29209e065b852a0eefeb7f5dbd88b48.zip
opensim-SC_OLD-5cf96daaf29209e065b852a0eefeb7f5dbd88b48.tar.gz
opensim-SC_OLD-5cf96daaf29209e065b852a0eefeb7f5dbd88b48.tar.bz2
opensim-SC_OLD-5cf96daaf29209e065b852a0eefeb7f5dbd88b48.tar.xz
* Enabled dead region tracking for ChildAgentDataUpdates
** If the region fails 3 times, then ChildAgentDataUpdates no longer get sent to that region * Enabled Child_Get_Tasks in grid mode. * When Child_Get_Tasks is enabled on neighbor regions, the neighbor region uses the client's draw distance to send out prim. This is a lot less likely to flood the client now since the ChildAgentDataUpdate contains both the throttle settings and the draw distance. This means that with this enabled, you can see prim in other regions in grid mode. Very experimental.
Diffstat (limited to 'OpenSim/Region/Communications/OGS1')
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs198
1 files changed, 133 insertions, 65 deletions
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index 73cd061..8429d00 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -50,6 +50,7 @@ namespace OpenSim.Region.Communications.OGS1
50 private LocalBackEndServices m_localBackend = new LocalBackEndServices(); 50 private LocalBackEndServices m_localBackend = new LocalBackEndServices();
51 private Dictionary<ulong, RegionInfo> m_remoteRegionInfoCache = new Dictionary<ulong, RegionInfo>(); 51 private Dictionary<ulong, RegionInfo> m_remoteRegionInfoCache = new Dictionary<ulong, RegionInfo>();
52 private List<SimpleRegionInfo> m_knownRegions = new List<SimpleRegionInfo>(); 52 private List<SimpleRegionInfo> m_knownRegions = new List<SimpleRegionInfo>();
53 private Dictionary<ulong, int> m_deadRegionCache = new Dictionary<ulong, int>();
53 private Dictionary<string, string> m_queuedGridSettings = new Dictionary<string, string>(); 54 private Dictionary<string, string> m_queuedGridSettings = new Dictionary<string, string>();
54 55
55 public BaseHttpServer httpListener; 56 public BaseHttpServer httpListener;
@@ -499,79 +500,99 @@ namespace OpenSim.Region.Communications.OGS1
499 500
500 public bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData) 501 public bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData)
501 { 502 {
502 RegionInfo regInfo = null; 503 int failures = 0;
503 try 504 lock (m_deadRegionCache)
504 { 505 {
505 if (m_localBackend.ChildAgentUpdate(regionHandle, cAgentData)) 506 if (m_deadRegionCache.ContainsKey(regionHandle))
506 { 507 {
507 return true; 508 failures = m_deadRegionCache[regionHandle];
508 } 509 }
509 510 }
510 regInfo = RequestNeighbourInfo(regionHandle); 511 if (failures <= 3)
511 if (regInfo != null) 512 {
513 RegionInfo regInfo = null;
514 try
512 { 515 {
513 //don't want to be creating a new link to the remote instance every time like we are here 516 if (m_localBackend.ChildAgentUpdate(regionHandle, cAgentData))
514 bool retValue = false;
515
516
517 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting) Activator.GetObject(
518 typeof (OGS1InterRegionRemoting),
519 "tcp://" + regInfo.RemotingAddress +
520 ":" + regInfo.RemotingPort +
521 "/InterRegions");
522
523 if (remObject != null)
524 { 517 {
525 retValue = remObject.ChildAgentUpdate(regionHandle, cAgentData); 518 return true;
526 } 519 }
527 else 520
521 regInfo = RequestNeighbourInfo(regionHandle);
522 if (regInfo != null)
528 { 523 {
529 Console.WriteLine("remoting object not found"); 524 //don't want to be creating a new link to the remote instance every time like we are here
525 bool retValue = false;
526
527
528 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject(
529 typeof(OGS1InterRegionRemoting),
530 "tcp://" + regInfo.RemotingAddress +
531 ":" + regInfo.RemotingPort +
532 "/InterRegions");
533
534 if (remObject != null)
535 {
536 retValue = remObject.ChildAgentUpdate(regionHandle, cAgentData);
537 }
538 else
539 {
540 Console.WriteLine("remoting object not found");
541 }
542 remObject = null;
543 //MainLog.Instance.Verbose("INTER",
544 //gdebugRegionName +
545 //": OGS1 tried to Update Child Agent data on outside region and got " +
546 //retValue.ToString());
547
548 return retValue;
530 } 549 }
531 remObject = null; 550 NoteDeadRegion(regionHandle);
532 MainLog.Instance.Verbose("INTER",
533 gdebugRegionName +
534 ": OGS1 tried to Update Child Agent data on outside region and got " +
535 retValue.ToString());
536 551
537 return retValue; 552 return false;
553 }
554 catch (RemotingException e)
555 {
556 NoteDeadRegion(regionHandle);
557 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " +
558 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
559 MainLog.Instance.Debug(e.ToString());
560 return false;
561 }
562 catch (SocketException e)
563 {
564 NoteDeadRegion(regionHandle);
565 MainLog.Instance.Warn("Socket Error: Unable to connect to adjacent region: " + " " +
566 regInfo.RegionLocX + "," + regInfo.RegionLocY);
567 MainLog.Instance.Debug(e.ToString());
568 return false;
569 }
570 catch (InvalidCredentialException e)
571 {
572 NoteDeadRegion(regionHandle);
573 MainLog.Instance.Warn("Invalid Credentials: Unable to connect to adjacent region: " +
574 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
575 MainLog.Instance.Debug(e.ToString());
576 return false;
577 }
578 catch (AuthenticationException e)
579 {
580 NoteDeadRegion(regionHandle);
581 MainLog.Instance.Warn("Authentication exception: Unable to connect to adjacent region: " +
582 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
583 MainLog.Instance.Debug(e.ToString());
584 return false;
585 }
586 catch (Exception e)
587 {
588 NoteDeadRegion(regionHandle);
589 MainLog.Instance.Debug(e.ToString());
590 return false;
538 } 591 }
539
540 return false;
541 }
542 catch (RemotingException e)
543 {
544 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName +
545 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
546 MainLog.Instance.Debug(e.ToString());
547 return false;
548 }
549 catch (SocketException e)
550 {
551 MainLog.Instance.Warn("Socket Error: Unable to connect to adjacent region: " + regInfo.RegionName + " " +
552 regInfo.RegionLocX + "," + regInfo.RegionLocY);
553 MainLog.Instance.Debug(e.ToString());
554 return false;
555 }
556 catch (InvalidCredentialException e)
557 {
558 MainLog.Instance.Warn("Invalid Credentials: Unable to connect to adjacent region: " + regInfo.RegionName +
559 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
560 MainLog.Instance.Debug(e.ToString());
561 return false;
562 }
563 catch (AuthenticationException e)
564 {
565 MainLog.Instance.Warn("Authentication exception: Unable to connect to adjacent region: " +
566 regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
567 MainLog.Instance.Debug(e.ToString());
568 return false;
569 } 592 }
570 catch (Exception e) 593 else
571 { 594 {
572 MainLog.Instance.Warn("Unknown exception: Unable to connect to adjacent region: " + regInfo.RegionName + 595 //MainLog.Instance.Verbose("INTERREGION", "Skipped Sending Child Update to a region because it failed too many times:" + regionHandle.ToString());
573 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
574 MainLog.Instance.Debug(e.ToString());
575 return false; 596 return false;
576 } 597 }
577 } 598 }
@@ -622,11 +643,12 @@ namespace OpenSim.Region.Communications.OGS1
622 return retValue; 643 return retValue;
623 644
624 } 645 }
625 646 NoteDeadRegion(regionHandle);
626 return false; 647 return false;
627 } 648 }
628 catch (RemotingException e) 649 catch (RemotingException e)
629 { 650 {
651 NoteDeadRegion(regionHandle);
630 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName + 652 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName +
631 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 653 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
632 MainLog.Instance.Debug(e.ToString()); 654 MainLog.Instance.Debug(e.ToString());
@@ -634,6 +656,7 @@ namespace OpenSim.Region.Communications.OGS1
634 } 656 }
635 catch (SocketException e) 657 catch (SocketException e)
636 { 658 {
659 NoteDeadRegion(regionHandle);
637 MainLog.Instance.Warn("Socket Error: Unable to connect to adjacent region: " + regInfo.RegionName + " " + 660 MainLog.Instance.Warn("Socket Error: Unable to connect to adjacent region: " + regInfo.RegionName + " " +
638 regInfo.RegionLocX + "," + regInfo.RegionLocY); 661 regInfo.RegionLocX + "," + regInfo.RegionLocY);
639 MainLog.Instance.Debug(e.ToString()); 662 MainLog.Instance.Debug(e.ToString());
@@ -641,6 +664,7 @@ namespace OpenSim.Region.Communications.OGS1
641 } 664 }
642 catch (InvalidCredentialException e) 665 catch (InvalidCredentialException e)
643 { 666 {
667 NoteDeadRegion(regionHandle);
644 MainLog.Instance.Warn("Invalid Credentials: Unable to connect to adjacent region: " + regInfo.RegionName + 668 MainLog.Instance.Warn("Invalid Credentials: Unable to connect to adjacent region: " + regInfo.RegionName +
645 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 669 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
646 MainLog.Instance.Debug(e.ToString()); 670 MainLog.Instance.Debug(e.ToString());
@@ -648,6 +672,7 @@ namespace OpenSim.Region.Communications.OGS1
648 } 672 }
649 catch (AuthenticationException e) 673 catch (AuthenticationException e)
650 { 674 {
675 NoteDeadRegion(regionHandle);
651 MainLog.Instance.Warn("Authentication exception: Unable to connect to adjacent region: " + 676 MainLog.Instance.Warn("Authentication exception: Unable to connect to adjacent region: " +
652 regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 677 regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
653 MainLog.Instance.Debug(e.ToString()); 678 MainLog.Instance.Debug(e.ToString());
@@ -655,6 +680,7 @@ namespace OpenSim.Region.Communications.OGS1
655 } 680 }
656 catch (Exception e) 681 catch (Exception e)
657 { 682 {
683 NoteDeadRegion(regionHandle);
658 MainLog.Instance.Warn("Unknown exception: Unable to connect to adjacent region: " + regInfo.RegionName + 684 MainLog.Instance.Warn("Unknown exception: Unable to connect to adjacent region: " + regInfo.RegionName +
659 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 685 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
660 MainLog.Instance.Debug(e.ToString()); 686 MainLog.Instance.Debug(e.ToString());
@@ -813,11 +839,12 @@ namespace OpenSim.Region.Communications.OGS1
813 839
814 return retValue; 840 return retValue;
815 } 841 }
816 842 NoteDeadRegion(regionHandle);
817 return false; 843 return false;
818 } 844 }
819 catch (RemotingException e) 845 catch (RemotingException e)
820 { 846 {
847 NoteDeadRegion(regionHandle);
821 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName + 848 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName +
822 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 849 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
823 MainLog.Instance.Debug(e.ToString()); 850 MainLog.Instance.Debug(e.ToString());
@@ -825,6 +852,7 @@ namespace OpenSim.Region.Communications.OGS1
825 } 852 }
826 catch (SocketException e) 853 catch (SocketException e)
827 { 854 {
855 NoteDeadRegion(regionHandle);
828 MainLog.Instance.Warn("Socket Error: Unable to connect to adjacent region: " + regInfo.RegionName + " " + 856 MainLog.Instance.Warn("Socket Error: Unable to connect to adjacent region: " + regInfo.RegionName + " " +
829 regInfo.RegionLocX + "," + regInfo.RegionLocY); 857 regInfo.RegionLocX + "," + regInfo.RegionLocY);
830 MainLog.Instance.Debug(e.ToString()); 858 MainLog.Instance.Debug(e.ToString());
@@ -832,6 +860,7 @@ namespace OpenSim.Region.Communications.OGS1
832 } 860 }
833 catch (InvalidCredentialException e) 861 catch (InvalidCredentialException e)
834 { 862 {
863 NoteDeadRegion(regionHandle);
835 MainLog.Instance.Warn("Invalid Credentials: Unable to connect to adjacent region: " + regInfo.RegionName + 864 MainLog.Instance.Warn("Invalid Credentials: Unable to connect to adjacent region: " + regInfo.RegionName +
836 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 865 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
837 MainLog.Instance.Debug(e.ToString()); 866 MainLog.Instance.Debug(e.ToString());
@@ -839,6 +868,7 @@ namespace OpenSim.Region.Communications.OGS1
839 } 868 }
840 catch (AuthenticationException e) 869 catch (AuthenticationException e)
841 { 870 {
871 NoteDeadRegion(regionHandle);
842 MainLog.Instance.Warn("Authentication exception: Unable to connect to adjacent region: " + 872 MainLog.Instance.Warn("Authentication exception: Unable to connect to adjacent region: " +
843 regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 873 regInfo.RegionName + " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
844 MainLog.Instance.Debug(e.ToString()); 874 MainLog.Instance.Debug(e.ToString());
@@ -846,6 +876,7 @@ namespace OpenSim.Region.Communications.OGS1
846 } 876 }
847 catch (Exception e) 877 catch (Exception e)
848 { 878 {
879 NoteDeadRegion(regionHandle);
849 MainLog.Instance.Warn("Unknown exception: Unable to connect to adjacent region: " + regInfo.RegionName + 880 MainLog.Instance.Warn("Unknown exception: Unable to connect to adjacent region: " + regInfo.RegionName +
850 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 881 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
851 MainLog.Instance.Debug(e.ToString()); 882 MainLog.Instance.Debug(e.ToString());
@@ -895,10 +926,12 @@ namespace OpenSim.Region.Communications.OGS1
895 } 926 }
896 //TODO need to see if we know about where this region is and use .net remoting 927 //TODO need to see if we know about where this region is and use .net remoting
897 // to inform it. 928 // to inform it.
929 NoteDeadRegion(regionHandle);
898 return false; 930 return false;
899 } 931 }
900 catch (RemotingException e) 932 catch (RemotingException e)
901 { 933 {
934 NoteDeadRegion(regionHandle);
902 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName + 935 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName +
903 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 936 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
904 MainLog.Instance.Debug(e.ToString()); 937 MainLog.Instance.Debug(e.ToString());
@@ -906,6 +939,7 @@ namespace OpenSim.Region.Communications.OGS1
906 } 939 }
907 catch 940 catch
908 { 941 {
942 NoteDeadRegion(regionHandle);
909 return false; 943 return false;
910 } 944 }
911 } 945 }
@@ -945,10 +979,12 @@ namespace OpenSim.Region.Communications.OGS1
945 } 979 }
946 //TODO need to see if we know about where this region is and use .net remoting 980 //TODO need to see if we know about where this region is and use .net remoting
947 // to inform it. 981 // to inform it.
982 NoteDeadRegion(regionHandle);
948 return false; 983 return false;
949 } 984 }
950 catch (RemotingException e) 985 catch (RemotingException e)
951 { 986 {
987 NoteDeadRegion(regionHandle);
952 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName + 988 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region: " + regInfo.RegionName +
953 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 989 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
954 MainLog.Instance.Debug(e.ToString()); 990 MainLog.Instance.Debug(e.ToString());
@@ -956,6 +992,7 @@ namespace OpenSim.Region.Communications.OGS1
956 } 992 }
957 catch 993 catch
958 { 994 {
995 NoteDeadRegion(regionHandle);
959 return false; 996 return false;
960 } 997 }
961 } 998 }
@@ -994,10 +1031,12 @@ namespace OpenSim.Region.Communications.OGS1
994 } 1031 }
995 //TODO need to see if we know about where this region is and use .net remoting 1032 //TODO need to see if we know about where this region is and use .net remoting
996 // to inform it. 1033 // to inform it.
1034 NoteDeadRegion(regionHandle);
997 return false; 1035 return false;
998 } 1036 }
999 catch (RemotingException e) 1037 catch (RemotingException e)
1000 { 1038 {
1039 NoteDeadRegion(regionHandle);
1001 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region to tell it to close child agents: " + regInfo.RegionName + 1040 MainLog.Instance.Warn("Remoting Error: Unable to connect to adjacent region to tell it to close child agents: " + regInfo.RegionName +
1002 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY); 1041 " " + regInfo.RegionLocX + "," + regInfo.RegionLocY);
1003 //MainLog.Instance.Debug(e.ToString()); 1042 //MainLog.Instance.Debug(e.ToString());
@@ -1006,6 +1045,7 @@ namespace OpenSim.Region.Communications.OGS1
1006 1045
1007 catch (SocketException e) 1046 catch (SocketException e)
1008 { 1047 {
1048 NoteDeadRegion(regionHandle);
1009 MainLog.Instance.Warn("Socket Error: Unable to connect to adjacent region using tcp://" + 1049 MainLog.Instance.Warn("Socket Error: Unable to connect to adjacent region using tcp://" +
1010 regInfo.RemotingAddress + 1050 regInfo.RemotingAddress +
1011 ":" + regInfo.RemotingPort + 1051 ":" + regInfo.RemotingPort +
@@ -1016,6 +1056,7 @@ namespace OpenSim.Region.Communications.OGS1
1016 } 1056 }
1017 catch (InvalidCredentialException e) 1057 catch (InvalidCredentialException e)
1018 { 1058 {
1059 NoteDeadRegion(regionHandle);
1019 MainLog.Instance.Warn("Invalid Credentials: Unable to connect to adjacent region using tcp://" + 1060 MainLog.Instance.Warn("Invalid Credentials: Unable to connect to adjacent region using tcp://" +
1020 regInfo.RemotingAddress + 1061 regInfo.RemotingAddress +
1021 ":" + regInfo.RemotingPort + 1062 ":" + regInfo.RemotingPort +
@@ -1025,6 +1066,7 @@ namespace OpenSim.Region.Communications.OGS1
1025 } 1066 }
1026 catch (AuthenticationException e) 1067 catch (AuthenticationException e)
1027 { 1068 {
1069 NoteDeadRegion(regionHandle);
1028 MainLog.Instance.Warn("Authentication exception: Unable to connect to adjacent region using tcp://" + 1070 MainLog.Instance.Warn("Authentication exception: Unable to connect to adjacent region using tcp://" +
1029 regInfo.RemotingAddress + 1071 regInfo.RemotingAddress +
1030 ":" + regInfo.RemotingPort + 1072 ":" + regInfo.RemotingPort +
@@ -1034,6 +1076,7 @@ namespace OpenSim.Region.Communications.OGS1
1034 } 1076 }
1035 catch (WebException e) 1077 catch (WebException e)
1036 { 1078 {
1079 NoteDeadRegion(regionHandle);
1037 MainLog.Instance.Warn("WebException exception: Unable to connect to adjacent region using tcp://" + 1080 MainLog.Instance.Warn("WebException exception: Unable to connect to adjacent region using tcp://" +
1038 regInfo.RemotingAddress + 1081 regInfo.RemotingAddress +
1039 ":" + regInfo.RemotingPort + 1082 ":" + regInfo.RemotingPort +
@@ -1043,6 +1086,7 @@ namespace OpenSim.Region.Communications.OGS1
1043 } 1086 }
1044 catch (Exception e) 1087 catch (Exception e)
1045 { 1088 {
1089 NoteDeadRegion(regionHandle);
1046 // This line errors with a Null Reference Exception.. Why? @.@ 1090 // This line errors with a Null Reference Exception.. Why? @.@
1047 //MainLog.Instance.Warn("Unknown exception: Unable to connect to adjacent region using tcp://" + regInfo.RemotingAddress + 1091 //MainLog.Instance.Warn("Unknown exception: Unable to connect to adjacent region using tcp://" + regInfo.RemotingAddress +
1048 // ":" + regInfo.RemotingPort + 1092 // ":" + regInfo.RemotingPort +
@@ -1091,11 +1135,21 @@ namespace OpenSim.Region.Communications.OGS1
1091 { 1135 {
1092 MainLog.Instance.Verbose("INTER", 1136 MainLog.Instance.Verbose("INTER",
1093 gdebugRegionName + "Incoming OGS1 RegionUpReport: " + "(" + regionData.RegionLocX + 1137 gdebugRegionName + "Incoming OGS1 RegionUpReport: " + "(" + regionData.RegionLocX +
1094 "," + regionData.RegionLocY + ")"); 1138 "," + regionData.RegionLocY + "). Giving this region a fresh set of 'dead' tries");
1095 1139
1096 try 1140 try
1097 { 1141 {
1142 lock (m_deadRegionCache)
1143 {
1144 if (m_deadRegionCache.ContainsKey(regionData.RegionHandle))
1145 {
1146
1147 m_deadRegionCache.Remove(regionData.RegionHandle);
1148 }
1149 }
1150
1098 return m_localBackend.TriggerRegionUp(new RegionInfo(regionData), regionhandle); 1151 return m_localBackend.TriggerRegionUp(new RegionInfo(regionData), regionhandle);
1152
1099 } 1153 }
1100 1154
1101 catch (RemotingException e) 1155 catch (RemotingException e)
@@ -1107,7 +1161,7 @@ namespace OpenSim.Region.Communications.OGS1
1107 1161
1108 public bool TriggerChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData) 1162 public bool TriggerChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData)
1109 { 1163 {
1110 MainLog.Instance.Verbose("INTER", "Incoming OGS1 Child Agent Data Update"); 1164 //MainLog.Instance.Verbose("INTER", "Incoming OGS1 Child Agent Data Update");
1111 1165
1112 try 1166 try
1113 { 1167 {
@@ -1227,6 +1281,20 @@ namespace OpenSim.Region.Communications.OGS1
1227 } 1281 }
1228 socket.Close(); 1282 socket.Close();
1229 } 1283 }
1284 public void NoteDeadRegion(ulong regionhandle)
1285 {
1286 lock (m_deadRegionCache)
1287 {
1288 if (m_deadRegionCache.ContainsKey(regionhandle))
1289 {
1290 m_deadRegionCache[regionhandle] = m_deadRegionCache[regionhandle] + 1;
1291 }
1292 else
1293 {
1294 m_deadRegionCache.Add(regionhandle, 1);
1295 }
1296 }
1297 }
1230 } 1298 }
1231 1299
1232} \ No newline at end of file 1300} \ No newline at end of file