2012-05-25 8 views
1

Я использую redis-cache для кэширования фрагментов в своем приложении. Когда redis недоступен или недоступен, я получаю исключения таймаута, которые вызывают 500 ошибок.Как изящно обращаться с ошибкой кеша Rails? (redis-cache)

Это случается редко, но для кэша я ожидал бы рельсы для лечения тайм-аут, как:

  • нет-оп на записи
  • кэш-промаха на чтение.

Любые предложения? Это что-то, что настраивается в кэшировании рельсов, или мне нужно сделать некоторые исправления для обезьян, чтобы обработать этот случай изящно?

Соответствующая часть моей stacktrace ниже, в случае, если она помогает в любом случае. , ,

 

execution expired 
/opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/1.8/timeout.rb:60:in `new' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/connection/ruby.rb:26:in `connect' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/connection/ruby.rb:128:in `with_timeout' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/connection/ruby.rb:25:in `connect' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:227:in `establish_connection' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:23:in `connect' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:247:in `ensure_connected' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:137:in `process' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:206:in `logging' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:136:in `process' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:46:in `call' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis.rb:157:in `get' 
/opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/1.8/monitor.rb:242:in `synchronize' 
bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis.rb:156:in `get' 
bundle/gems/ruby/1.8/gems/redis-store-1.0.0.1/lib/redis/store/interface.rb:5:in `get' 
bundle/gems/ruby/1.8/gems/redis-store-1.0.0.1/lib/redis/store/marshalling.rb:13:in `get' 
bundle/gems/ruby/1.8/gems/redis-store-1.0.0.1/lib/active_support/cache/redis_store.rb:119:in `read_entry' 
 

ответ

0

Кевин,

Любопытно, что Rails версии вы используете?

Эта проблема в проекте redis-store, по-видимому, связана с тем, что вы испытываете: https://github.com/jodosha/redis-store/issues/56. Однако это исправление касается только адресов Rails 3.

Исправление для Rails 2 находится здесь: https://github.com/jodosha/redis-store/pull/83. Если посмотреть на источник redis-store 1.0.0.1, я не вижу, чтобы это исправление было включено.

+0

Спасибо Карлос - мы на Rails 3. Это исправление устраняет соединения, но не таймауты. – klochner

Смежные вопросы