aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/concurrency
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2015-07-21 08:50:50 +0930
committerMatthew Draper <matthew@trebex.net>2015-07-21 08:50:50 +0930
commit649d8173c31ab0b74ef359e692eadf46b5da911d (patch)
treea6daad575a51af0963e809881774cc16f059f98d /activesupport/lib/active_support/concurrency
parentb3d78e8c23e3cbd5325719474efb9f7ee4168f72 (diff)
downloadrails-649d8173c31ab0b74ef359e692eadf46b5da911d.tar.gz
rails-649d8173c31ab0b74ef359e692eadf46b5da911d.tar.bz2
rails-649d8173c31ab0b74ef359e692eadf46b5da911d.zip
Order of execution is only guaranteed if upgrading
If the thread isn't yet holding any form of lock, it has no claim over what may / may not run while it's blocked.
Diffstat (limited to 'activesupport/lib/active_support/concurrency')
-rw-r--r--activesupport/lib/active_support/concurrency/share_lock.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/concurrency/share_lock.rb b/activesupport/lib/active_support/concurrency/share_lock.rb
index 35193ea9f7..48edcfdaa5 100644
--- a/activesupport/lib/active_support/concurrency/share_lock.rb
+++ b/activesupport/lib/active_support/concurrency/share_lock.rb
@@ -52,7 +52,7 @@ module ActiveSupport
return false if no_wait
loose_shares = @sharing.delete(Thread.current)
- @waiting[Thread.current] = compatible
+ @waiting[Thread.current] = compatible if loose_shares
@cv.wait_while { busy?(purpose) }