aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters
diff options
context:
space:
mode:
authorNick Sieger <nick@nicksieger.com>2008-08-22 12:19:29 -0500
committerNick Sieger <nick@nicksieger.com>2008-08-29 14:12:12 -0500
commitca6d71753f3a2e8a0a29108b7c55ba3b7c8cd943 (patch)
treed0527720f9d7ceaa46fd6a8844fecd46aaa0ae18 /activerecord/lib/active_record/connection_adapters
parenta96b7d4c33757364a19ed1fc34f0a89801b8b2d7 (diff)
downloadrails-ca6d71753f3a2e8a0a29108b7c55ba3b7c8cd943.tar.gz
rails-ca6d71753f3a2e8a0a29108b7c55ba3b7c8cd943.tar.bz2
rails-ca6d71753f3a2e8a0a29108b7c55ba3b7c8cd943.zip
Deprecate allow_concurrency and make it have no effect
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb25
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb30
-rwxr-xr-xactiverecord/lib/active_record/connection_adapters/abstract_adapter.rb4
3 files changed, 19 insertions, 40 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
index 365c80fe1d..04c8361c64 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
@@ -154,7 +154,7 @@ module ActiveRecord
private
def new_connection
- config = spec.config.reverse_merge(:allow_concurrency => ActiveRecord::Base.allow_concurrency)
+ config = spec.config.reverse_merge(:allow_concurrency => true)
ActiveRecord::Base.send(spec.adapter_method, config)
end
@@ -285,9 +285,12 @@ module ActiveRecord
end
end
- module ConnectionHandlerMethods
+ class ConnectionHandler
+ attr_reader :connection_pools_lock
+
def initialize(pools = {})
@connection_pools = pools
+ @connection_pools_lock = Monitor.new
end
def connection_pools
@@ -361,24 +364,6 @@ module ActiveRecord
klass = klass.superclass
end
end
- end
-
- # This connection handler is not thread-safe, as it does not protect access
- # to the underlying connection pools.
- class SingleThreadConnectionHandler
- include ConnectionHandlerMethods
- end
-
- # This connection handler is thread-safe. Each access or modification of a thread
- # pool is synchronized by an internal monitor.
- class MultipleThreadConnectionHandler
- attr_reader :connection_pools_lock
- include ConnectionHandlerMethods
-
- def initialize(pools = {})
- super
- @connection_pools_lock = Monitor.new
- end
# Apply monitor to all public methods that access the pool.
synchronize :establish_connection, :retrieve_connection,
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb b/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb
index 0910db1951..47fc11a620 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb
@@ -14,25 +14,7 @@ module ActiveRecord
# The connection handler
cattr_accessor :connection_handler, :instance_writer => false
- @@connection_handler = ConnectionAdapters::SingleThreadConnectionHandler.new
-
- # Turning on allow_concurrency changes the single threaded connection handler
- # for a multiple threaded one, so that multi-threaded access of the
- # connection pools is synchronized.
- def self.allow_concurrency=(flag)
- if @@allow_concurrency != flag
- @@allow_concurrency = flag
- # When switching connection handlers, preserve the existing pools so that
- # #establish_connection doesn't need to be called again.
- if @@allow_concurrency
- self.connection_handler = ConnectionAdapters::MultipleThreadConnectionHandler.new(
- self.connection_handler.connection_pools)
- else
- self.connection_handler = ConnectionAdapters::SingleThreadConnectionHandler.new(
- self.connection_handler.connection_pools)
- end
- end
- end
+ @@connection_handler = ConnectionAdapters::ConnectionHandler.new
# Returns the connection currently associated with the class. This can
# also be used to "borrow" the connection to do database work that isn't
@@ -109,6 +91,16 @@ module ActiveRecord
end
class << self
+ # Deprecated and no longer has any effect.
+ def allow_concurrency
+ ActiveSupport::Deprecation.warn("ActiveRecord::Base.allow_concurrency has been deprecated and no longer has any effect. Please remove all references to allow_concurrency.")
+ end
+
+ # Deprecated and no longer has any effect.
+ def allow_concurrency=(flag)
+ ActiveSupport::Deprecation.warn("ActiveRecord::Base.allow_concurrency= has been deprecated and no longer has any effect. Please remove all references to allow_concurrency=.")
+ end
+
# Returns the connection currently associated with the class. This can
# also be used to "borrow" the connection to do database work unrelated
# to any of the specific Active Records.
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
index c37ebf1410..7ef8834547 100755
--- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
@@ -109,7 +109,9 @@ module ActiveRecord
# ROLLBACK and swallows any exceptions which is probably not enough to
# ensure the connection is clean.
def reset!
- execute "ROLLBACK" rescue nil
+ silence_stderr do # postgres prints on stderr when you do this w/o a txn
+ execute "ROLLBACK" rescue nil
+ end
end
# Returns true if its safe to reload the connection between requests for development mode.