rack-devel archive mirror (unofficial) https://groups.google.com/group/rack-devel
 help / color / mirror / Atom feed
* [PATCH] common_logger: rely on monotonic clock
@ 2017-06-29  2:30 Eric Wong
  2017-07-25  0:23 ` Rafael Mendonça França
  0 siblings, 1 reply; 2+ messages in thread
From: Eric Wong @ 2017-06-29  2:30 UTC (permalink / raw)
  To: rack-devel

As with commit 2474e3a779a8d2b6 for Rack::Runtime,
Time.now is inaccurate if system time changes, so do not
rely on it if a monotonic clock is available.
---
  The following changes since commit 0362a54dba92626582d42f3343c209b7cdb7e713:

    Partially reverting 8a7a142d (2017-06-28 13:20:52 -0700)

  are available in the git repository at:

    git://80x24.org/rack logger-time

  for you to fetch changes up to 743f29d845b627b6083eaf6380ec6442f7427de7:

    common_logger: rely on monotonic clock (2017-06-29 02:25:00 +0000)

  ----------------------------------------------------------------
  Eric Wong (1):
        common_logger: rely on monotonic clock

   lib/rack/common_logger.rb | 7 +++----
   1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/lib/rack/common_logger.rb b/lib/rack/common_logger.rb
index ae41043..7855f0c 100644
--- a/lib/rack/common_logger.rb
+++ b/lib/rack/common_logger.rb
@@ -29,7 +29,7 @@ module Rack
     end
 
     def call(env)
-      began_at = Time.now
+      began_at = Utils.clock_time
       status, header, body = @app.call(env)
       header = Utils::HeaderHash.new(header)
       body = BodyProxy.new(body) { log(env, status, header, began_at) }
@@ -39,20 +39,19 @@ module Rack
     private
 
     def log(env, status, header, began_at)
-      now = Time.now
       length = extract_content_length(header)
 
       msg = FORMAT % [
         env['HTTP_X_FORWARDED_FOR'] || env["REMOTE_ADDR"] || "-",
         env["REMOTE_USER"] || "-",
-        now.strftime("%d/%b/%Y:%H:%M:%S %z"),
+        Time.now.strftime("%d/%b/%Y:%H:%M:%S %z"),
         env[REQUEST_METHOD],
         env[PATH_INFO],
         env[QUERY_STRING].empty? ? "" : "?#{env[QUERY_STRING]}",
         env[HTTP_VERSION],
         status.to_s[0..3],
         length,
-        now - began_at ]
+        Utils.clock_time - began_at ]
 
       logger = @logger || env[RACK_ERRORS]
       # Standard library logger doesn't support write but it supports << which actually
-- 
EW

-- 

--- 
You received this message because you are subscribed to the Google Groups "Rack Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rack-devel+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-07-25  2:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-29  2:30 [PATCH] common_logger: rely on monotonic clock Eric Wong
2017-07-25  0:23 ` Rafael Mendonça França

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).