Class: ActiveRecord::ConnectionAdapters::MariaDbClusterPoolAdapter::AvailableConnection

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record/connection_adapters/maria_db_cluster_pool_adapter.rb

Overview

This simple class puts an expire time on an array of connections. It is used so the a connection to a down database won’t try to reconnect over and over.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection, failed_connection = false, expires = nil) ⇒ AvailableConnection

Returns a new instance of AvailableConnection.



189
190
191
192
193
# File 'lib/active_record/connection_adapters/maria_db_cluster_pool_adapter.rb', line 189

def initialize(connection, failed_connection = false, expires = nil)
  @connection = connection
  @failed_connection = failed_connection
  @expires = expires
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



185
186
187
# File 'lib/active_record/connection_adapters/maria_db_cluster_pool_adapter.rb', line 185

def connection
  @connection
end

#expires=(value) ⇒ Object (writeonly)

Sets the attribute expires

Parameters:

  • value

    the value to set the attribute expires to.



187
188
189
# File 'lib/active_record/connection_adapters/maria_db_cluster_pool_adapter.rb', line 187

def expires=(value)
  @expires = value
end

#failed_connection=(value) ⇒ Object (writeonly)

Sets the attribute failed_connection

Parameters:

  • value

    the value to set the attribute failed_connection to.



186
187
188
# File 'lib/active_record/connection_adapters/maria_db_cluster_pool_adapter.rb', line 186

def failed_connection=(value)
  @failed_connection = value
end

Instance Method Details

#expired?Boolean

Returns:

  • (Boolean)


195
196
197
# File 'lib/active_record/connection_adapters/maria_db_cluster_pool_adapter.rb', line 195

def expired?
  @expires ? @expires <= Time.now : false
end

#failed?Boolean

Returns:

  • (Boolean)


199
200
201
# File 'lib/active_record/connection_adapters/maria_db_cluster_pool_adapter.rb', line 199

def failed?
  @failed_connection
end

#reconnect!Object



203
204
205
206
207
208
209
210
211
# File 'lib/active_record/connection_adapters/maria_db_cluster_pool_adapter.rb', line 203

def reconnect!
  @connection.reconnect!
  if @connection.active?
    @failed_connection = false
    @expires = nil
  else
    raise DatabaseConnectionError.new
  end
end