Module: Familia::Connection::Middleware
- Included in:
- Familia::Connection
- Defined in:
- lib/familia/connection/middleware.rb
Instance Attribute Summary collapse
-
#enable_database_counter ⇒ Boolean
Whether Database command counter is enabled.
-
#enable_database_logging ⇒ Boolean
Whether Database command logging is enabled.
Instance Method Summary collapse
-
#clear_fiber_connection! ⇒ Object
Clears the fiber-local connection.
-
#fiber_connection=(connection) ⇒ Object
Sets a versioned fiber-local connection.
-
#increment_middleware_version! ⇒ Object
Increments the middleware version, invalidating all cached connections.
-
#middleware_version ⇒ Integer
Current middleware version for cache invalidation.
-
#reconnect! ⇒ Object
Reconnects with fresh middleware registration.
Instance Attribute Details
#enable_database_counter ⇒ Boolean
Returns Whether Database command counter is enabled.
12 13 14 |
# File 'lib/familia/connection/middleware.rb', line 12 def enable_database_counter @enable_database_counter end |
#enable_database_logging ⇒ Boolean
Returns Whether Database command logging is enabled.
9 10 11 |
# File 'lib/familia/connection/middleware.rb', line 9 def enable_database_logging @enable_database_logging end |
Instance Method Details
#clear_fiber_connection! ⇒ Object
Clears the fiber-local connection
32 33 34 35 |
# File 'lib/familia/connection/middleware.rb', line 32 def clear_fiber_connection! Fiber[:familia_connection] = nil Familia.trace :FIBER_CONNECTION, nil, 'Cleared' if Familia.debug? end |
#fiber_connection=(connection) ⇒ Object
Sets a versioned fiber-local connection
26 27 28 29 |
# File 'lib/familia/connection/middleware.rb', line 26 def fiber_connection=(connection) Fiber[:familia_connection] = [connection, middleware_version] Familia.trace :FIBER_CONNECTION, nil, "Set with version #{middleware_version}" end |
#increment_middleware_version! ⇒ Object
Increments the middleware version, invalidating all cached connections
20 21 22 23 |
# File 'lib/familia/connection/middleware.rb', line 20 def increment_middleware_version! @middleware_version += 1 Familia.trace :MIDDLEWARE_VERSION, nil, "Incremented to #{@middleware_version}" end |
#middleware_version ⇒ Integer
Returns Current middleware version for cache invalidation.
15 16 17 |
# File 'lib/familia/connection/middleware.rb', line 15 def middleware_version @middleware_version end |
#reconnect! ⇒ Object
If no middleware is enabled, this method safely clears connection state but won't register any middleware until it's enabled.
Reconnects with fresh middleware registration
This method is useful when middleware needs to be applied to connection pools that were created before middleware was enabled. It:
- Clears the middleware registration flag to allow re-registration
- Re-runs the middleware registration logic
- Clears connection chain to force rebuild
- Increments middleware version to invalidate cached connections
- Clears fiber-local connections
The next connection request will use the updated middleware configuration. Existing connection pools will naturally create new connections with middleware as old connections are cycled out.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/familia/connection/middleware.rb', line 83 def reconnect! # Allow middleware to be re-registered @middleware_registered = false register_middleware_once # Clear connection chain to force rebuild @connection_chain = nil # Increment version to invalidate all cached connections increment_middleware_version! # Clear fiber-local connections clear_fiber_connection! Familia.trace :RECONNECT, nil, 'Connection chain cleared, will rebuild with current middleware on next use' end |