Class: ModelContextProtocol::Server::RedisPoolManager
- Inherits:
-
Object
- Object
- ModelContextProtocol::Server::RedisPoolManager
- Defined in:
- lib/model_context_protocol/server/redis_pool_manager.rb
Instance Attribute Summary collapse
-
#pool ⇒ Object
readonly
Returns the value of attribute pool.
-
#reaper_thread ⇒ Object
readonly
Returns the value of attribute reaper_thread.
Instance Method Summary collapse
- #configure_reaper(enabled:, interval: 60, idle_timeout: 300) ⇒ Object
- #healthy? ⇒ Boolean
-
#initialize(redis_url:, pool_size: 20, pool_timeout: 5) ⇒ RedisPoolManager
constructor
A new instance of RedisPoolManager.
- #reap_now ⇒ Object
- #shutdown ⇒ Object
- #start ⇒ Object
- #stats ⇒ Object
Constructor Details
#initialize(redis_url:, pool_size: 20, pool_timeout: 5) ⇒ RedisPoolManager
Returns a new instance of RedisPoolManager.
5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/model_context_protocol/server/redis_pool_manager.rb', line 5 def initialize(redis_url:, pool_size: 20, pool_timeout: 5) @redis_url = redis_url @pool_size = pool_size @pool_timeout = pool_timeout @pool = nil @reaper_thread = nil @reaper_config = { enabled: false, interval: 60, idle_timeout: 300 } end |
Instance Attribute Details
#pool ⇒ Object (readonly)
Returns the value of attribute pool.
3 4 5 |
# File 'lib/model_context_protocol/server/redis_pool_manager.rb', line 3 def pool @pool end |
#reaper_thread ⇒ Object (readonly)
Returns the value of attribute reaper_thread.
3 4 5 |
# File 'lib/model_context_protocol/server/redis_pool_manager.rb', line 3 def reaper_thread @reaper_thread end |
Instance Method Details
#configure_reaper(enabled:, interval: 60, idle_timeout: 300) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/model_context_protocol/server/redis_pool_manager.rb', line 18 def configure_reaper(enabled:, interval: 60, idle_timeout: 300) @reaper_config = { enabled: enabled, interval: interval, idle_timeout: idle_timeout } end |
#healthy? ⇒ Boolean
38 39 40 41 42 43 44 45 46 |
# File 'lib/model_context_protocol/server/redis_pool_manager.rb', line 38 def healthy? return false unless @pool @pool.with do |conn| conn.ping == "PONG" end rescue false end |
#reap_now ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/model_context_protocol/server/redis_pool_manager.rb', line 48 def reap_now return unless @pool @pool.reap(@reaper_config[:idle_timeout]) do |conn| conn.close end end |
#shutdown ⇒ Object
33 34 35 36 |
# File 'lib/model_context_protocol/server/redis_pool_manager.rb', line 33 def shutdown stop_reaper close_pool end |
#start ⇒ Object
26 27 28 29 30 31 |
# File 'lib/model_context_protocol/server/redis_pool_manager.rb', line 26 def start validate! create_pool start_reaper if @reaper_config[:enabled] true end |
#stats ⇒ Object
56 57 58 59 60 61 62 63 64 |
# File 'lib/model_context_protocol/server/redis_pool_manager.rb', line 56 def stats return {} unless @pool { size: @pool.size, available: @pool.available, idle: @pool.instance_variable_get(:@idle_since)&.size || 0 } end |