aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-09-21 00:09:17 +0100
committerJustin Clark-Casey (justincc)2012-09-21 00:09:17 +0100
commite29d563557bbe3a5a8f3aaf883ca92770a586e10 (patch)
tree67dcb36166c891819b127b244d170f69ccc1cc6f /OpenSim/Framework
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC_OLD-e29d563557bbe3a5a8f3aaf883ca92770a586e10.zip
opensim-SC_OLD-e29d563557bbe3a5a8f3aaf883ca92770a586e10.tar.gz
opensim-SC_OLD-e29d563557bbe3a5a8f3aaf883ca92770a586e10.tar.bz2
opensim-SC_OLD-e29d563557bbe3a5a8f3aaf883ca92770a586e10.tar.xz
Add request number counting to incoming HTTP requests in the same way that this was already being done for outgoing HTTP requests.
This allows us to associate debug logging messages with the right request. It also allows us to put a request number on 'long request' logging even if other debug logging is not enabled, which gives us some idea of whether every request is suffering this problem or only some. This is a separate internal number not associated with any incoming number in the opensim-request-id header, this will be clarified when logging of this incoming request number is re-enabled. This commit also adds port number to HTTP IN logging to allow us to distinguish between different request numbers on different ports.
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r--OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs59
-rw-r--r--OpenSim/Framework/WebUtil.cs2
2 files changed, 42 insertions, 19 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 4e04dd8..05c2d53 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -62,6 +62,15 @@ namespace OpenSim.Framework.Servers.HttpServer
62 /// </value> 62 /// </value>
63 public int DebugLevel { get; set; } 63 public int DebugLevel { get; set; }
64 64
65 /// <summary>
66 /// Request number for diagnostic purposes.
67 /// </summary>
68 /// <remarks>
69 /// This is an internal number. In some debug situations an external number may also be supplied in the
70 /// opensim-request-id header but we are not currently logging this.
71 /// </remarks>
72 public int RequestNumber { get; private set; }
73
65 private volatile int NotSocketErrors = 0; 74 private volatile int NotSocketErrors = 0;
66 public volatile bool HTTPDRunning = false; 75 public volatile bool HTTPDRunning = false;
67 76
@@ -302,6 +311,8 @@ namespace OpenSim.Framework.Servers.HttpServer
302 311
303 private void OnRequest(object source, RequestEventArgs args) 312 private void OnRequest(object source, RequestEventArgs args)
304 { 313 {
314 RequestNumber++;
315
305 try 316 try
306 { 317 {
307 IHttpClientContext context = (IHttpClientContext)source; 318 IHttpClientContext context = (IHttpClientContext)source;
@@ -411,7 +422,6 @@ namespace OpenSim.Framework.Servers.HttpServer
411 string requestMethod = request.HttpMethod; 422 string requestMethod = request.HttpMethod;
412 string uriString = request.RawUrl; 423 string uriString = request.RawUrl;
413 424
414// string reqnum = "unknown";
415 int requestStartTick = Environment.TickCount; 425 int requestStartTick = Environment.TickCount;
416 426
417 // Will be adjusted later on. 427 // Will be adjusted later on.
@@ -535,8 +545,8 @@ namespace OpenSim.Framework.Servers.HttpServer
535 545
536 if (DebugLevel >= 3) 546 if (DebugLevel >= 3)
537 m_log.DebugFormat( 547 m_log.DebugFormat(
538 "[BASE HTTP SERVER]: HTTP IN {0} content type handler {1} {2} from {3}", 548 "[BASE HTTP SERVER]: HTTP IN {0} :{1} {2} content type handler {3} {4} from {5}",
539 request.ContentType, request.HttpMethod, request.Url.PathAndQuery, request.RemoteIPEndPoint); 549 RequestNumber, Port, request.ContentType, request.HttpMethod, request.Url.PathAndQuery, request.RemoteIPEndPoint);
540 550
541 buffer = HandleHTTPRequest(request, response); 551 buffer = HandleHTTPRequest(request, response);
542 break; 552 break;
@@ -547,8 +557,8 @@ namespace OpenSim.Framework.Servers.HttpServer
547 557
548 if (DebugLevel >= 3) 558 if (DebugLevel >= 3)
549 m_log.DebugFormat( 559 m_log.DebugFormat(
550 "[BASE HTTP SERVER]: HTTP IN {0} content type handler {1} {2} from {3}", 560 "[BASE HTTP SERVER]: HTTP IN {0} :{1} {2} content type handler {3} {4} from {5}",
551 request.ContentType, request.HttpMethod, request.Url.PathAndQuery, request.RemoteIPEndPoint); 561 RequestNumber, Port, request.ContentType, request.HttpMethod, request.Url.PathAndQuery, request.RemoteIPEndPoint);
552 562
553 buffer = HandleLLSDRequests(request, response); 563 buffer = HandleLLSDRequests(request, response);
554 break; 564 break;
@@ -641,7 +651,8 @@ namespace OpenSim.Framework.Servers.HttpServer
641 if (tickdiff > 3000) 651 if (tickdiff > 3000)
642 { 652 {
643 m_log.InfoFormat( 653 m_log.InfoFormat(
644 "[BASE HTTP SERVER]: Slow handling of {0} {1} {2} {3} from {4} took {5}ms", 654 "[BASE HTTP SERVER]: Slow handling of {0} {1} {2} {3} {4} from {5} took {6}ms",
655 RequestNumber,
645 requestMethod, 656 requestMethod,
646 uriString, 657 uriString,
647 requestHandler != null ? requestHandler.Name : "", 658 requestHandler != null ? requestHandler.Name : "",
@@ -652,12 +663,9 @@ namespace OpenSim.Framework.Servers.HttpServer
652 else if (DebugLevel >= 4) 663 else if (DebugLevel >= 4)
653 { 664 {
654 m_log.DebugFormat( 665 m_log.DebugFormat(
655 "[BASE HTTP SERVER]: HTTP IN {0} {1} {2} {3} from {4} took {5}ms", 666 "[BASE HTTP SERVER]: HTTP IN {0} :{1} took {2}ms",
656 requestMethod, 667 RequestNumber,
657 uriString, 668 Port,
658 requestHandler != null ? requestHandler.Name : "",
659 requestHandler != null ? requestHandler.Description : "",
660 request.RemoteIPEndPoint,
661 tickdiff); 669 tickdiff);
662 } 670 }
663 } 671 }
@@ -666,8 +674,14 @@ namespace OpenSim.Framework.Servers.HttpServer
666 private void LogIncomingToStreamHandler(OSHttpRequest request, IRequestHandler requestHandler) 674 private void LogIncomingToStreamHandler(OSHttpRequest request, IRequestHandler requestHandler)
667 { 675 {
668 m_log.DebugFormat( 676 m_log.DebugFormat(
669 "[BASE HTTP SERVER]: HTTP IN stream handler {0} {1} {2} {3} from {4}", 677 "[BASE HTTP SERVER]: HTTP IN {0} :{1} stream handler {2} {3} {4} {5} from {6}",
670 request.HttpMethod, request.Url.PathAndQuery, requestHandler.Name, requestHandler.Description, request.RemoteIPEndPoint); 678 RequestNumber,
679 Port,
680 request.HttpMethod,
681 request.Url.PathAndQuery,
682 requestHandler.Name,
683 requestHandler.Description,
684 request.RemoteIPEndPoint);
671 685
672 if (DebugLevel >= 5) 686 if (DebugLevel >= 5)
673 LogIncomingInDetail(request); 687 LogIncomingInDetail(request);
@@ -676,8 +690,13 @@ namespace OpenSim.Framework.Servers.HttpServer
676 private void LogIncomingToContentTypeHandler(OSHttpRequest request) 690 private void LogIncomingToContentTypeHandler(OSHttpRequest request)
677 { 691 {
678 m_log.DebugFormat( 692 m_log.DebugFormat(
679 "[BASE HTTP SERVER]: HTTP IN {0} content type handler {1} {2} from {3}", 693 "[BASE HTTP SERVER]: HTTP IN {0} :{1} {2} content type handler {3} {4} from {5}",
680 request.ContentType, request.HttpMethod, request.Url.PathAndQuery, request.RemoteIPEndPoint); 694 RequestNumber,
695 Port,
696 request.ContentType,
697 request.HttpMethod,
698 request.Url.PathAndQuery,
699 request.RemoteIPEndPoint);
681 700
682 if (DebugLevel >= 5) 701 if (DebugLevel >= 5)
683 LogIncomingInDetail(request); 702 LogIncomingInDetail(request);
@@ -686,8 +705,12 @@ namespace OpenSim.Framework.Servers.HttpServer
686 private void LogIncomingToXmlRpcHandler(OSHttpRequest request) 705 private void LogIncomingToXmlRpcHandler(OSHttpRequest request)
687 { 706 {
688 m_log.DebugFormat( 707 m_log.DebugFormat(
689 "[BASE HTTP SERVER]: HTTP IN assumed generic XMLRPC request {0} {1} from {2}", 708 "[BASE HTTP SERVER]: HTTP IN {0} :{1} assumed generic XMLRPC request {2} {3} from {4}",
690 request.HttpMethod, request.Url.PathAndQuery, request.RemoteIPEndPoint); 709 RequestNumber,
710 Port,
711 request.HttpMethod,
712 request.Url.PathAndQuery,
713 request.RemoteIPEndPoint);
691 714
692 if (DebugLevel >= 5) 715 if (DebugLevel >= 5)
693 LogIncomingInDetail(request); 716 LogIncomingInDetail(request);
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs
index 64d61f1..e095402 100644
--- a/OpenSim/Framework/WebUtil.cs
+++ b/OpenSim/Framework/WebUtil.cs
@@ -64,7 +64,7 @@ namespace OpenSim.Framework
64 /// <summary> 64 /// <summary>
65 /// Request number for diagnostic purposes. 65 /// Request number for diagnostic purposes.
66 /// </summary> 66 /// </summary>
67 public static int RequestNumber = 0; 67 public static int RequestNumber { get; internal set; }
68 68
69 /// <summary> 69 /// <summary>
70 /// this is the header field used to communicate the local request id 70 /// this is the header field used to communicate the local request id