Class: Familia::Connection::FiberConnectionHandler

Inherits:
BaseConnectionHandler show all
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

This class inherits a constructor from Familia::Connection::BaseConnectionHandler

Instance Method Details

#handle(uri) ⇒ Object



150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/familia/connection/handlers.rb', line 150

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