Class: Familia::Connection::FiberConnectionHandler
- Inherits:
-
Object
- Object
- Familia::Connection::FiberConnectionHandler
- 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
- #handle(uri) ⇒ Object
-
#initialize(familia_module = nil) ⇒ FiberConnectionHandler
constructor
A new instance of FiberConnectionHandler.
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 |