You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by al...@apache.org on 2018/10/16 12:17:43 UTC

[mesos] 02/03: Introduced `logResponse` for http handlers.

This is an automated email from the ASF dual-hosted git repository.

alexr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git

commit 7df7e4d35ec1c6cce87c629fac0b32149a4830d2
Author: Alexander Rukletsov <al...@apache.org>
AuthorDate: Thu Oct 11 15:40:37 2018 +0200

    Introduced `logResponse` for http handlers.
    
    Currently we use `logRequest` function to log requests to endpoints
    in Mesos `MasterProcess`, `SlaveProcess`, and `FilesProcess`. Each
    request is logged when it is first fetched from the actor mailbox.
    However this obviously does not allow for logging the request
    processing time.
    
    This patch introduces a `logResponse` function which logs the request
    together with the corresponding response status and the time spent
    generating the response.
    
    Review: https://reviews.apache.org/r/68993
---
 src/common/http.cpp | 15 +++++++++++++++
 src/common/http.hpp | 11 +++++++++++
 2 files changed, 26 insertions(+)

diff --git a/src/common/http.cpp b/src/common/http.cpp
index 9070071..80848aa 100644
--- a/src/common/http.cpp
+++ b/src/common/http.cpp
@@ -32,6 +32,7 @@
 #include <mesos/quota/quota.hpp>
 
 #include <process/authenticator.hpp>
+#include <process/clock.hpp>
 #include <process/collect.hpp>
 #include <process/dispatch.hpp>
 #include <process/future.hpp>
@@ -1186,4 +1187,18 @@ void logRequest(const process::http::Request& request)
                 : "");
 }
 
+
+void logResponse(
+    const process::http::Request& request,
+    const process::http::Response& response)
+{
+  LOG(INFO) << "HTTP " << request.method << " for " << request.url
+            << (request.client.isSome()
+                ? " from " + stringify(request.client.get())
+                : "")
+            << ": '" << response.status << "'"
+            << " after " << (process::Clock::now() - request.received).ms()
+            << Milliseconds::units();
+}
+
 }  // namespace mesos {
diff --git a/src/common/http.hpp b/src/common/http.hpp
index 4f994a0..6ca54a6 100644
--- a/src/common/http.hpp
+++ b/src/common/http.hpp
@@ -345,6 +345,17 @@ Try<Nothing> initializeHttpAuthenticators(
 // desired request handler to get consistent request logging.
 void logRequest(const process::http::Request& request);
 
+
+// Log the response for the corresponding request together with the request
+// processing time. Route handlers can compose this with the desired request
+// handler to get consistent request/response logging.
+//
+// TODO(alexr): Consider taking `response` as a future to allow logging for
+// cases when response has not been generated.
+void logResponse(
+    const process::http::Request& request,
+    const process::http::Response& response);
+
 } // namespace mesos {
 
 #endif // __COMMON_HTTP_HPP__