MemCacheError: срок выполнения истек - PullRequest
0 голосов
/ 12 марта 2009

Я использую удивительный драгоценный камень кеша для большого проекта рельсов. Я часто получаю эти исключения

MemCache :: MemCacheError: срок выполнения истек "

Кажется, нет ни рифмы, ни причины. Что точно это означает и как исправить?

РЕДАКТИРОВАТЬ:

Вот типичная трассировка стека:

lib/authenticated_system.rb:100:in `login_from_session'
lib/authenticated_system.rb:12:in `current_user'
lib/authenticated_system.rb:6:in `logged_in?'
lib/authenticated_system.rb:35:in `authorized?'
lib/authenticated_system.rb:53:in `login_required'

Соответствующая строка взята из RESTful_Authentication:

self.current_user = User.find(session[:user_id]) if session[:user_id]

Ответы [ 2 ]

1 голос
/ 25 марта 2009

Я думаю, что Майкл Симонс ответил на мой вопрос через его сообщение в блоге . По сути, это известная проблема , существующая между Passenger и Memcached.

Вот исправление Майкла:

# environment.rb
begin
   PhusionPassenger.on_event(:starting_worker_process) do |forked|
     if forked
       # We're in smart spawning mode, so...
       # Close duplicated memcached connections - they will open themselves
       CACHE.reset
     end
   end
# In case you're not running under Passenger (i.e. devmode with mongrel)
rescue NameError => error
end
0 голосов
/ 14 марта 2009

Я слышал от товарищей по команде, что по умолчанию клиент memcache в Rails не пытается автоматически переподключиться к демону memcache, если по какой-то причине он останавливается и перезапускается, хотя я сам не подтвердил это. Библиотека fiveruns memcache-client решает эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...