summaryrefslogtreecommitdiff
path: root/indra/llcorehttp
diff options
context:
space:
mode:
authorRider Linden <rider@lindenlab.com>2017-08-08 09:04:32 -0700
committerRider Linden <rider@lindenlab.com>2017-08-08 09:04:32 -0700
commit1038633526330cf931ba097dbafdd270b5bb56e3 (patch)
treebf5b1a2517d31d1ed3daa9213104b36b6901f99c /indra/llcorehttp
parent57d5744f2c064ccb7bf8dd3dca2a24f6755297ac (diff)
MAINT-7634: Logging and instrumentation canges to narrow down viewer crashes.
Diffstat (limited to 'indra/llcorehttp')
-rw-r--r--indra/llcorehttp/_httpoprequest.cpp19
-rw-r--r--indra/llcorehttp/_httppolicy.cpp2
-rw-r--r--indra/llcorehttp/httprequest.cpp10
-rw-r--r--indra/llcorehttp/httprequest.h13
-rw-r--r--indra/llcorehttp/httpresponse.h10
-rw-r--r--indra/llcorehttp/httpstats.cpp34
-rw-r--r--indra/llcorehttp/httpstats.h4
7 files changed, 65 insertions, 27 deletions
diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp
index f35f9848ff..36955f3797 100644
--- a/indra/llcorehttp/_httpoprequest.cpp
+++ b/indra/llcorehttp/_httpoprequest.cpp
@@ -247,6 +247,25 @@ void HttpOpRequest::visitNotifier(HttpRequest * request)
response->setHeaders(mReplyHeaders);
response->setRequestURL(mReqURL);
+ std::string method("UNKNOWN");
+
+ if (mReqMethod == HOR_COPY)
+ method = "COPY";
+ else if (mReqMethod == HOR_DELETE)
+ method = "DELETE";
+ else if (mReqMethod == HOR_GET)
+ method = "GET";
+ else if (mReqMethod == HOR_MOVE)
+ method = "MOVE";
+ else if (mReqMethod == HOR_PATCH)
+ method = "PATCH";
+ else if (mReqMethod == HOR_POST)
+ method = "POST";
+ else if (mReqMethod == HOR_PUT)
+ method = "PUT";
+
+ response->setRequestMethod(method);
+
if (mReplyOffset || mReplyLength)
{
// Got an explicit offset/length in response
diff --git a/indra/llcorehttp/_httppolicy.cpp b/indra/llcorehttp/_httppolicy.cpp
index 628a5c79e1..a302db8b46 100644
--- a/indra/llcorehttp/_httppolicy.cpp
+++ b/indra/llcorehttp/_httppolicy.cpp
@@ -450,7 +450,7 @@ bool HttpPolicy::stageAfterCompletion(const HttpOpRequest::ptr_t &op)
op->stageFromActive(mService);
- HTTPStats::instance().recordResultCode(op->mStatus.getStatus());
+ HTTPStats::instance().recordResultCode(op->mStatus.getType());
return false; // not active
}
diff --git a/indra/llcorehttp/httprequest.cpp b/indra/llcorehttp/httprequest.cpp
index d9662c1232..2687f77217 100644
--- a/indra/llcorehttp/httprequest.cpp
+++ b/indra/llcorehttp/httprequest.cpp
@@ -52,7 +52,6 @@ namespace LLCore
// ====================================
// HttpRequest Implementation
// ====================================
-HttpRequest::Statistics HttpRequest::mStatistics;
HttpRequest::HttpRequest()
@@ -64,11 +63,7 @@ HttpRequest::HttpRequest()
mReplyQueue.reset( new HttpReplyQueue() );
- ++mStatistics.mCurrentRequests;
- ++mStatistics.mTotalRequests;
-
-
- LL_WARNS("HTTPRequest") << "New HttpRequest created (outstanding: " << mStatistics.mCurrentRequests << " total: " << mStatistics.mTotalRequests << ")" << LL_ENDL;
+ HTTPStats::instance().recordHTTPRequest();
}
@@ -81,9 +76,6 @@ HttpRequest::~HttpRequest()
}
mReplyQueue.reset();
- --mStatistics.mCurrentRequests;
-
- LL_WARNS("HTTPRequest") << "HttpRequest destroyed (outstanding: " << mStatistics.mCurrentRequests << " total: " << mStatistics.mTotalRequests << ")" << LL_ENDL;
}
diff --git a/indra/llcorehttp/httprequest.h b/indra/llcorehttp/httprequest.h
index c958132ae2..a418eb6a7a 100644
--- a/indra/llcorehttp/httprequest.h
+++ b/indra/llcorehttp/httprequest.h
@@ -681,19 +681,6 @@ private:
// End Global State
// ====================================
- struct Statistics
- {
- Statistics():
- mTotalRequests(0),
- mCurrentRequests(0)
- {}
-
- S32 mTotalRequests;
- S32 mCurrentRequests;
- };
-
- static Statistics mStatistics;
-
}; // end class HttpRequest
diff --git a/indra/llcorehttp/httpresponse.h b/indra/llcorehttp/httpresponse.h
index 0bfa4585c7..b834085e5c 100644
--- a/indra/llcorehttp/httpresponse.h
+++ b/indra/llcorehttp/httpresponse.h
@@ -204,6 +204,15 @@ public:
return mRequestUrl;
}
+ void setRequestMethod(const std::string &method)
+ {
+ mRequestMethod = method;
+ }
+
+ const std::string &getRequestMethod() const
+ {
+ return mRequestMethod;
+ }
protected:
// Response data here
@@ -217,6 +226,7 @@ protected:
unsigned int mRetries;
unsigned int m503Retries;
std::string mRequestUrl;
+ std::string mRequestMethod;
TransferStats::ptr_t mStats;
};
diff --git a/indra/llcorehttp/httpstats.cpp b/indra/llcorehttp/httpstats.cpp
index 467d364885..b2de7f51ff 100644
--- a/indra/llcorehttp/httpstats.cpp
+++ b/indra/llcorehttp/httpstats.cpp
@@ -44,6 +44,7 @@ void HTTPStats::resetStats()
mResutCodes.clear();
mDataDown.reset();
mDataUp.reset();
+ mRequests = 0;
}
@@ -60,16 +61,41 @@ void HTTPStats::recordResultCode(S32 code)
}
+namespace
+{
+ std::string byte_count_converter(F32 bytes)
+ {
+ static const char unit_suffix[] = { 'B', 'K', 'M', 'G' };
+
+ F32 value = bytes;
+ int suffix = 0;
+
+ while ((value > 1024.0) && (suffix < 3))
+ {
+ value /= 1024.0;
+ ++suffix;
+ }
+
+ std::stringstream out;
+
+ out << std::setprecision(4) << value << unit_suffix[suffix];
+
+ return out.str();
+ }
+}
+
void HTTPStats::dumpStats()
{
std::stringstream out;
- out << "HTTPCore Stats" << std::endl;
- out << "Bytes Sent: " << mDataUp.getSum() << std::endl;
- out << "Bytes Recv: " << mDataDown.getSum() << std::endl;
+ out << "HTTP DATA SUMMARY" << std::endl;
+ out << "HTTP Transfer counts:" << std::endl;
+ out << "Data Sent: " << byte_count_converter(mDataUp.getSum()) << " (" << mDataUp.getSum() << ")" << std::endl;
+ out << "Data Recv: " << byte_count_converter(mDataDown.getSum()) << " (" << mDataDown.getSum() << ")" << std::endl;
+ out << "Total requests: " << mRequests << "(request objects created)" << std::endl;
+ out << std::endl;
out << "Result Codes:" << std::endl << "--- -----" << std::endl;
-
for (std::map<S32, S32>::iterator it = mResutCodes.begin(); it != mResutCodes.end(); ++it)
{
out << (*it).first << " " << (*it).second << std::endl;
diff --git a/indra/llcorehttp/httpstats.h b/indra/llcorehttp/httpstats.h
index d4460bcfae..2c713cb548 100644
--- a/indra/llcorehttp/httpstats.h
+++ b/indra/llcorehttp/httpstats.h
@@ -55,6 +55,8 @@ namespace LLCore
mDataUp.push(bytes);
}
+ void recordHTTPRequest() { ++mRequests; }
+
void recordResultCode(S32 code);
void dumpStats();
@@ -62,6 +64,8 @@ namespace LLCore
StatsAccumulator mDataDown;
StatsAccumulator mDataUp;
+ S32 mRequests;
+
std::map<S32, S32> mResutCodes;
};