mezis / rack-timer

Measure time spent in your Rack middlewares
MIT License
6 stars 4 forks source link

Doesn't work with newrelic #1

Open ddgromit opened 8 years ago

ddgromit commented 8 years ago

When newrelic_rpm is being used, rack-timer only loads the last few middlewares. More confusingly, it looks like its assimilating everything when running rake middleware but not when starting the server.

This is almost definitely the fault of newrelic and not rack-timer, but I wanted to report it because it took a while to figure out what was going on, and someone else might come across it. To get around it, just comment out gem newrelic_rpm while testing. Feel free to close this issue.

$ rake middleware
[rack-timer] assimilating: RackTimer::Middleware
[rack-timer] assimilating: Rack::Cors
[rack-timer] assimilating: ActiveSupport::Cache::Strategy::LocalCache::Middleware
[rack-timer] assimilating: Rack::Timeout
[rack-timer] assimilating: Rack::Runtime
[rack-timer] assimilating: ActionDispatch::RequestId
[rack-timer] assimilating: Rails::Rack::Logger
[rack-timer] assimilating: ActionDispatch::ShowExceptions
[rack-timer] assimilating: WebConsole::Middleware
[rack-timer] assimilating: ActionDispatch::DebugExceptions
[rack-timer] assimilating: Airbrake::Rails::Middleware
[rack-timer] assimilating: ActionDispatch::RemoteIp
[rack-timer] assimilating: ActionDispatch::Reloader
[rack-timer] assimilating: ActionDispatch::Callbacks
[rack-timer] assimilating: ActiveRecord::Migration::CheckPending
[rack-timer] assimilating: ActiveRecord::ConnectionAdapters::ConnectionManagement
[rack-timer] assimilating: ActiveRecord::QueryCache
[rack-timer] assimilating: ActionDispatch::ParamsParser
[rack-timer] assimilating: Rack::Head
[rack-timer] assimilating: Rack::ConditionalGet
[rack-timer] assimilating: Rack::ETag
[rack-timer] assimilating: Warden::Manager
[rack-timer] assimilating: Rack::Deflater
[rack-timer] assimilating: Rack::Session::Cookie
[rack-timer] assimilating: OmniAuth::Builder
[rack-timer] started borg collective: RackTimer::Middleware
use Airbrake::UserInformer
use ActionDispatch::Static
use Rack::Lock
use RackTimer::Middleware
use Rack::Cors
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007fbe091de470>
use Rack::Timeout
use Rack::Runtime
use ActionDispatch::RequestId
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use WebConsole::Middleware
use ActionDispatch::DebugExceptions
use Airbrake::Rails::Middleware
use ActionDispatch::RemoteIp
use ActionDispatch::Reloader
use ActionDispatch::Callbacks
use ActiveRecord::Migration::CheckPending
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActionDispatch::ParamsParser
use Rack::Head
use Rack::ConditionalGet
use Rack::ETag
use Warden::Manager
use Rack::Deflater
use Rack::Session::Cookie
use OmniAuth::Builder
run Eg::Application.routes
$ rails s
=> Booting WEBrick
=> Rails 4.2.5 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[rack-timer] assimilating: RackTimer::Middleware
[rack-timer] assimilating: NewRelic::Agent::Instrumentation::MiddlewareProxy
[rack-timer] started borg collective: RackTimer::Middleware
[2016-01-28 15:11:47] INFO  WEBrick 1.3.1
[2016-01-28 15:11:47] INFO  ruby 2.2.2 (2015-04-13) [x86_64-darwin14]
[2016-01-28 15:11:47] INFO  WEBrick::HTTPServer#start: pid=71989 port=3000
gdiggs commented 8 years ago

@ddgromit FWIW I just found that using application.middleware.insert(0, RackTimer::Middleware) instead of application.use(...) works around this issue