aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/notifications/instrumenter.rb
Commit message (Collapse)AuthorAgeFilesLines
* Update CHANGELOG and docsAli Ibrahim2019-03-221-3/+4
| | | | with change to ActiveSupport::Notifications::Instrumenter#instrument
* Update AS::Notifications::Instrumenter#instrumentAli Ibrahim2019-03-221-1/+1
| | | | | * Update #instrument to make passing a block optional. This will let users leverage #instrument for messaging in addition to instrumentation.
* Fix elapsed time calculationsbogdanvlviv2019-02-081-1/+1
| | | | | | | | | | | | | | | | | | | I've found a few places in Rails code base where I think it makes sense to calculate elapsed time more precisely by using `Concurrent.monotonic_time`: - Fix calculation of elapsed time in `ActiveSupport::Cache::MemoryStore#prune` - Fix calculation of elapsed time in `ActiveRecord::ConnectionAdapters::ConnectionPool::Queue#wait_poll` - Fix calculation of elapsed time in `ActiveRecord::ConnectionAdapters::ConnectionPool#attempt_to_checkout_all_existing_connections` - Fix calculation of elapsed time in `ActiveRecord::ConnectionAdapters::Mysql2Adapter#explain` See https://docs.ruby-lang.org/en/2.5.0/Process.html#method-c-clock_gettime https://blog.dnsimple.com/2018/03/elapsed-time-with-ruby-the-right-way Related to 7c4542146f0dde962205e5a90839349631ae60fb
* Don't expose internal `clock_gettime_supported?` class methodRyuta Kamizono2018-11-301-1/+2
|
* Deprecate `event.end = Time.now` in favor of `event.finish!`Ryuta Kamizono2018-11-201-2/+6
| | | | | | | | Since #33449, `event.end = Time.now` is not used anymore and should use `event.finish!`. We can't use `deprecate :end=` in definition time in this module due to circular require in `active_support/deprecation/behaviors`.
* Windows support for parallelization and instrumenterGannon McGibbon2018-11-081-1/+6
| | | | | Add Windows support for `ActiveSupport::Testing::Parallelization` and `ActiveSupport::Notifications::Instrumenter`.
* Only use CLOCK_PROCESS_CPUTIME_ID if it's definedBart de Water2018-07-291-2/+8
| | | | It's not defined on JRuby and unlike monotonic time, concurrent-ruby doesn't have an cross-platform abstraction for this.
* Always subscribe to event objects via `AS::Notifications.subscribe`Aaron Patterson2018-07-261-0/+2
| | | | | | | We don't need to have a special subscribe method for objects. The regular `subscribe` method is more expensive than a specialized method, but `subscribe` should not be called frequently. If that turns out to be a hotspot, we can introduce a specialized method. :)
* Subscribe to event objects via `subscribe_event`Aaron Patterson2018-07-261-1/+1
| | | | | | Fanout notifier can send event objects to subscribers now. Also moved `end` lower in the `finish!` method to guarantee that CPU time is shorter than real time.
* Match the units in `duration` (milliseconds)Aaron Patterson2018-07-261-1/+7
|
* Add cpu_time, idle_time, and allocations to EventEileen Uchitelle2018-07-261-0/+47
| | | | | | | | | | | | | | * Use process clock instead of Time.now This fixes any issues with the system clock changing and also eliminates 2 object allocations per event. * Add start! and finish! methods to the event object so we can record more information * Adds cpu time, idle time, and allocation count for a particular event. Co-authored-by: Aaron Patterson <aaron.patterson@gmail.com>
* [Active Support] `rubocop -a --only Layout/EmptyLineAfterMagicComment`Koichi ITO2017-07-111-0/+1
|
* Use frozen-string-literal in ActiveSupportKir Shatrov2017-07-091-0/+1
|
* Revert "Merge pull request #29540 from kirs/rubocop-frozen-string"Matthew Draper2017-07-021-1/+0
| | | | | This reverts commit 3420a14590c0e6915d8b6c242887f74adb4120f9, reversing changes made to afb66a5a598ce4ac74ad84b125a5abf046dcf5aa.
* Enforce frozen string in RubocopKir Shatrov2017-07-011-0/+1
|
* Add more rubocop rules about whitespacesRafael Mendonça França2016-10-291-1/+1
|
* normalizes indentation and whitespace across the projectXavier Noria2016-08-061-3/+3
|
* applies new string literal convention in activesupport/libXavier Noria2016-08-061-1/+1
| | | | | The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
* Adds exception object to instrumenter's payloadRyan T. Hosford2015-12-311-0/+1
| | | | | | | - Adds new key/value pair to payload when an exception is raised e.g. `:exception_object=> #<RuntimeError: FAIL>` - Updates relevant test - Adds CHANGELOG entry
* Subscribing to notifications while inside the said instrumented section.thedarkone2015-11-281-2/+7
| | | | | | | | | | | | | The issue is that on the exit from Instrumenter#instrument section, an Evented listener will run into an error because its thread local (Thread.current[:_timestack]) has not been set up by the #start method (this obviously happens because the Evented listeners didn't exist at the time, since no subscribtion to that section was made yet). Note: support for subscribing to instrumented sections, while being inside those instrumented sections, might be removed in the future. Maybe fixes #21873.
* Replace `#=>` with `# =>` [ci skip]claudiob2014-12-171-1/+1
| | | | | | | | @rafaelfranca suggested in f7c7bcd9 that code examples should display the result after `# =>` and not after `#=>`. This commit replaces *all* the occurrences of `#=>` in the code documentation (mostly added by me :sob:) with the suggested `# =>`.
* Fix docs for AS::Notifications::Event#durationclaudiob2014-12-171-2/+2
| | | | | | | | | Stems from comments by @zzak on e07f3dd: * https://github.com/rails/docrails/commit/e07f3ddcac394d2a8dc23fc571318b7e8c2497b1#commitcomment-9015634 * https://github.com/rails/docrails/commit/e07f3ddcac394d2a8dc23fc571318b7e8c2497b1#commitcomment-9015639 [ci skip]
* Add docs for AS::Notifications::Event#durationclaudiob2014-12-171-0/+12
| | | | [ci skip]
* duration is called multiple times in dev, so lets cache itAaron Patterson2013-08-181-1/+2
|
* Merge branch 'master' of github.com:lifo/docrailsVijay Dev2013-03-301-1/+1
|\ | | | | | | | | | | | | | | | | Conflicts: activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb activerecord/test/cases/adapter_test.rb guides/source/testing.md [ci skip]
| * Fix some typosAkira Matsuda2013-03-251-1/+1
| |
* | ActiveSupport::Notifications::Instrumenter#instrument should yieldstopdropandrew2013-03-021-1/+1
|/ | | | its payload the same way that ActiveSupport::Notifications does. Fix spelling in test name.
* adding start / finish on the instrumenter, adding tests for the classAaron Patterson2013-01-091-6/+17
|
* update AS/notifications and AS/testing docs [ci skip]Francesco Rodriguez2012-09-141-1/+1
|
* Add missing requireRafael Mendonça França2012-06-191-0/+2
|
* make events not use date and time to determine parent_of. fixes #5932タコ焼き仮面2012-06-181-4/+12
|
* start / finish events are sent by the instrumenterAaron Patterson2012-03-211-3/+3
|
* Remove deprecation from AS::Deprecation behavior, some minor cleanupsCarlos Antonio da Silva2012-03-161-2/+0
| | | | | | | | | * Refactor log subscriber, use select! to avoid a new object * Remove deprecation messages related to AS::Deprecation behavior This was added about 2 years ago for Rails 3: https://github.com/rails/rails/commit/d4c7d3fd94e5a885a6366eaeb3b908bb58ffd4db * Remove some not used requires * Refactor delegate to avoid string conversions and if statements inside each block
* Removed ActiveSupport::SecureRandom in favour of SecureRandom from the ↵Jon Leighton2011-05-231-1/+0
| | | | standard library. (It has been deprecated in the 3-1-stable branch.)
* Revert the previous three commits.José Valim2010-07-251-7/+4
| | | | | | * AS::Notifications#instrument should not measure anything, it is not its responsibility; * Adding another argument to AS::Notifications#instrument API needs to be properly discussed;
* use a hash to collect optional statistics about the instrumentationAaron Patterson2010-07-251-4/+7
|
* Get rid of instrumenter.elapsed.José Valim2010-07-241-9/+3
|
* Performance optimizations to handle cases of instrumentors that are not ↵Carlhuda2010-07-221-1/+1
| | | | listened to. Also, fix a possible concurrency issue.
* Add a test for elapsed and require missing benchmark file.José Valim2010-07-201-2/+2
|
* reusing the time instrumentation from the instrumenter rather than ↵Aaron Patterson2010-07-191-2/+9
| | | | Benchmark. [#5098 state:open]
* convert duration to an attr_readerAaron Patterson2010-07-171-6/+3
|
* Event should be aware if yielded block failed or not.José Valim2010-05-021-3/+5
|
* Make notifications go off even when an error is raised, so that we capture ↵Justin George2010-05-021-3/+7
| | | | | | | | | | | | | | the underlying performance data [#4505 state:resolved] This is important when trying to keep track of many layers of interrelated calls i.e.: ActiveRecord::Base.transaction do MyModel.find(1) #ActiveRecord::NotFound end # should capture the full time until the error propagation Signed-off-by: José Valim <jose.valim@gmail.com>
* Remove instrument! and require thread from AS::Notifications.José Valim2010-02-041-9/+0
|
* Add ActionDispatch::Notifications middleware.José Valim2010-01-171-0/+9
|
* Yield the payload notifications for further modification (like adding the ↵José Valim2010-01-151-8/+2
| | | | result).
* Add instrument! to notifications which adds the result to the payload.José Valim2010-01-141-1/+9
|
* Do not send notifications when instrumentation raise an error.José Valim2010-01-131-2/+2
|
* Expose Instrumenter id in Notifications.José Valim2010-01-041-0/+2
|
* Remove ActionView inline logging to ActiveSupport::Notifications and create ↵José Valim2009-12-261-6/+5
| | | | ActionController::Base#log_event, so everything can be logged within one listener. Also expose log_process_action as a hook for different modules to include their own information during the action processing. This allow ActiveRecord to hook and any other ORM. Finally, this commit changes 'Processing' and 'Rendering' in logs to 'Processed' and 'Rendered' because at the point it's logged, everying already happened.