diff --git a/lib/httpx/loggable.rb b/lib/httpx/loggable.rb index 65ccde63..b467d420 100644 --- a/lib/httpx/loggable.rb +++ b/lib/httpx/loggable.rb @@ -34,7 +34,7 @@ module HTTPX klass = klass.superclass end - message = +"(pid:#{Process.pid}, " \ + message = +"#{Time.now} - (pid:#{Process.pid}, " \ "tid:#{Thread.current.object_id}, " \ "fid:#{Fiber.current.object_id}, " \ "self:#{class_name}##{object_id}) " diff --git a/lib/httpx/selector.rb b/lib/httpx/selector.rb index 8a7d216f..b6b51f2a 100644 --- a/lib/httpx/selector.rb +++ b/lib/httpx/selector.rb @@ -141,30 +141,44 @@ module HTTPX io.log(level: 2) { "[#{io.state}] registering for select (#{interests})#{" for #{interval} seconds" unless interval.nil?}" } if interests.nil? - parser = io.instance_variable_get(:@parser) - - io.log(level: 2) do - "[origin: #{io.origin}, " \ - "state:#{io.state}, " \ - "io-proto:#{io.io.protocol}, " \ - "pending:#{io.pending.size}, " \ - "parser?:#{parser&.object_id}, " \ - "coalesced?:#{!!io.instance_variable_get(:@coalesced_connection)}, " \ - "sibling?:#{io.sibling}] " \ - "has no interest" - end - if parser - pings = Array(parser.instance_variable_get(:@pings)) - streams = parser.respond_to?(:streams) ? parser.streams : {} + case io + when Resolver::Native + queries = io.instance_variable_get(:@queries) io.log(level: 2) do - "[http2-conn-state: #{parser.instance_variable_get(:@connection)&.state}, " \ - "pending:#{parser.pending.size}, " \ - "handshake-completed?: #{parser.instance_variable_get(:@handshake_completed)}, " \ - "buffer-empty?: #{io.empty?}, " \ - "last-in-progress-stream: #{streams.keys.max} (#{streams.size}), " \ - "pings: #{pings.last} (#{pings.size})" \ - "] #{parser.class}##{parser.object_id} has no interest" + "[state:#{io.state}, " \ + "family:#{io.family}, " \ + "query:#{queries.keys}, " \ + "pending?:#{!io.empty?}, " \ + "contexts:#{queries.values.flat_map(&:pending).map(&:context).map(&:object_id)}, " \ + "has no interest" + end + when Connection + parser = io.instance_variable_get(:@parser) + + io.log(level: 2) do + "[origin: #{io.origin}, " \ + "state:#{io.state}, " \ + "io-proto:#{io.io.protocol}, " \ + "pending:#{io.pending.size}, " \ + "parser?:#{parser&.object_id}, " \ + "coalesced?:#{!!io.instance_variable_get(:@coalesced_connection)}, " \ + "sibling?:#{io.sibling}] " \ + "has no interest" + end + if parser + pings = Array(parser.instance_variable_get(:@pings)) + streams = parser.respond_to?(:streams) ? parser.streams : {} + + io.log(level: 2) do + "[http2-conn-state: #{parser.instance_variable_get(:@connection)&.state}, " \ + "pending:#{parser.pending.size}, " \ + "handshake-completed?: #{parser.instance_variable_get(:@handshake_completed)}, " \ + "buffer-empty?: #{io.empty?}, " \ + "last-in-progress-stream: #{streams.values.map(&:id).max} (#{streams.size}), " \ + "pings: #{pings.last.inspect} (#{pings.size})" \ + "] #{parser.class}##{parser.object_id} has no interest" + end end end end