rack-devel archive mirror (unofficial) https://groups.google.com/group/rack-devel
 help / color / mirror / code / 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	[flat|nested] 2+ messages in thread

* Re: [PATCH] common_logger: rely on monotonic clock
  2017-06-29  2:30 [PATCH] common_logger: rely on monotonic clock Eric Wong
@ 2017-07-25  0:23 ` Rafael Mendonça França
  0 siblings, 0 replies; 2+ messages in thread
From: Rafael Mendonça França @ 2017-07-25  0:23 UTC (permalink / raw)
  To: Rack Development; +Cc: e


[-- Attachment #1.1: Type: text/plain, Size: 2650 bytes --]

Thank you Eric. Sorry for the delay.

This patch was applied on master commit 
3665c2437ab681148eac783e91ffb51180bcdf44.

On Wednesday, June 28, 2017 at 10:30:58 PM UTC-4, Eric Wong wrote:
>
> 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.

[-- Attachment #1.2: Type: text/html, Size: 3964 bytes --]

^ permalink raw reply	[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

Code repositories for project(s) associated with this inbox:

	https://80x24.org/mirrors/rack.git

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).