aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract_adapter.rb')
-rwxr-xr-xactiverecord/lib/active_record/connection_adapters/abstract_adapter.rb33
1 files changed, 5 insertions, 28 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
index 096490ccef..bb6202666e 100755
--- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
@@ -19,15 +19,9 @@ module ActiveRecord
# SchemaStatements#add_column, SchemaStatements#change_column and
# SchemaStatements#remove_column are very useful.
class AbstractAdapter
- include Quoting, DatabaseStatements, SchemaStatements
+ include Quoting, DatabaseStatements, SchemaStatements, ConnectionManagement
@@row_even = true
- @@reconnect_success = 0
- @@reconnect_failure = 0
- def self.reconnect_success_rate
- (100.0 * @@reconnect_success / (@@reconnect_success + @@reconnect_failure)).to_i
- end
-
def initialize(connection, logger = nil) #:nodoc:
@connection, @logger = connection, logger
@runtime = 0
@@ -75,10 +69,11 @@ module ActiveRecord
nil
end
rescue Exception => e
+ # Flag connection as possibly dirty; needs verification before use.
+ self.needs_verification!
+
+ # Log message and raise exception.
message = "#{e.class.name}: #{e.message}: #{sql}"
- unless reconnect_if_inactive!
- message = "(reconnect failed) #{message}"
- end
log_info(message, name, 0)
raise ActiveRecord::StatementInvalid, message
end
@@ -111,24 +106,6 @@ module ActiveRecord
"%s %s" % [message, dump]
end
end
-
- private
- def reconnect_if_inactive!
- if respond_to?(:active?) and respond_to?(:reconnect!)
- reconnect! unless active?
- if active?
- @@reconnect_success += 1
- @logger.info "#{adapter_name} automatically reconnected. Success rate: #{self.class.reconnect_success_rate}%" if @logger
- true
- else
- @@reconnect_failure += 1
- @logger.warn "#{adapter_name} automatic reconnection failed. Success rate: #{self.class.reconnect_success_rate}%" if @logger
- false
- end
- else
- @logger.warn "#{adapter_name} does not yet support automatic reconnection." if @logger
- end
- end
end
end
end