aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/notifications/instrumenter.rb
Commit message (Collapse)AuthorAgeFilesLines
* Remove @duration instance variable since we're not maintaining instances ↵Vishal Telangre2019-04-161-2/+1
| | | | variables such as @cpu_time, @idle_time and @allocations; this reduces one allocation
* Fix: #cpu_time doesn't work for a ↵Vishal Telangre2019-04-161-2/+2
| | | | `ActiveSupport::Notifications::Fanout::Subscribers::Timed` subscriber
* 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
|