Class: Familia::Connection::FiberConnectionHandler

Inherits:
Object
  • Object
show all
Includes:
Handler
Defined in:
lib/familia/connection/handlers.rb

Overview

Checks for fiber-local connections with version validation

Strict Ad-hoc Only. Raise error for transaction, pipeline etc operations.

# Enforce middleware connection constraints
case request.operation
when :transaction
  raise Familia::MiddlewareConnectionError,
    "Cannot start transaction on middleware-provided connection. " \
    "Middleware connections are for ad-hoc commands only."
when :pipeline
  raise Familia::MiddlewareConnectionError,
    "Cannot start pipeline on middleware-provided connection. " \
    "Middleware connections are for ad-hoc commands only."
when :command, nil
  # Ad-hoc commands are fine
  conn
else
  raise "Unknown operation: #{request.operation}"
end

Instance Method Summary collapse

Constructor Details

#initialize(familia_module = nil) ⇒ FiberConnectionHandler

Returns a new instance of FiberConnectionHandler.



178
179
180
# File 'lib/familia/connection/handlers.rb', line 178

def initialize(familia_module = nil)
  @familia_module = familia_module || Familia
end

Instance Method Details

#handle(uri) ⇒ Object



182
183
184
185
186
187
188
189
190
191
192
193
194
195
# File 'lib/familia/connection/handlers.rb', line 182

def handle(uri)
  return nil unless Fiber[:familia_connection]

  conn, version = Fiber[:familia_connection]
  if version == @familia_module.middleware_version
    @familia_module.trace :DBCLIENT_FIBER, nil, "Using fiber-local connection for #{uri}"
    conn
  else
    # Version mismatch, clear stale connection
    Fiber[:familia_connection] = nil
    @familia_module.trace :DBCLIENT_FIBER, nil, 'Cleared stale fiber connection (version mismatch)'
    nil
  end
end