Мы находимся в середине бита большого обновления:Rails 3 ThinkingSphinx Multitenancy
Rails
2,3 доRails
3,2ThinkingSphinx
1.4.1 до 3.0.6ThinkingSphinx
Sphinx
0.9. 9 доSphinx
2.0.8
И вот наша конфигурация ThinkingSphinx
не работает. У нас многоуровневая настройка, поэтому немного сложнее, как мы подключаемся. Наш метод set_sphinx_connection
вызывается каждый раз, когда выполняется действие поиска. Вот как мы привыкли это делать:
def set_sphinx_connection
Thread.current[:thinking_sphinx_environment] = "tenant_#{Tenant::active.id}"
ThinkingSphinx::Configuration.instance.reset
end
А вот как мы пытаемся сделать это сейчас:
def set_sphinx_connection
framework = ThinkingSphinx::Frameworks::Plain.new
framework.environment = "tenant_#{Tenant::active.id}"
ThinkingSphinx::Configuration.instance.framework = framework
end
Каждый жилец имеет свой собственный файл сфинкс конфигурации, и каждый ищет сам по себе порт. Отрывок из нашего thinking_sphinx.yml ниже:
tenant_1:
mysql41: 9312
enable_star: true
min_infix_len: 1
tenant_2:
mysql41: 9313
enable_star: true
min_infix_len: 1
tenant_3:
mysql41: 9314
enable_star: true
min_infix_len: 1
Если вы только когда-либо поиск по одному арендатору, он работает просто отлично. Тем не менее, при поиске по одной, а затем другому, один из двух ошибок происходят:
- залежалых ошибки ID на втором жильца
- поисковых возвращается в подсчетах от первого арендатора второго арендатора
У кого-нибудь есть способ получить эту работу? Пэт, если ты там, можешь помочь?
ОБНОВЛЕНИЕ: Мы считаем, что это связано с Passenger
. Когда первый экземпляр запускается, он работает для этого арендатора последовательно. Однако с тех пор этот пассажирский экземпляр не может искать другого арендатора.
Кажется хорошо для меня :) – pat