2012-09-02 4 views
1

사용중인 sunspot_solr 버전은 1.3.3입니다.왜 Solr 실행을 멈출 수 없습니까?

Solr의 로컬 인스턴스를 시작하고 중지하려면 sunspot_solr gem을 사용하고 있습니다. 나는 그것을 시작하려면 다음 명령을 사용

rake sunspot:solr:start 

다음과 같은 명령은 중지 :

rake sunspot:solr:stop 

그러나 정지가 작동하지 않습니다. pids 폴더에 작성된 pid가 올바르지 않은 것으로 나타났습니다.

내가 시작

, 나는하여 ps -ef | grep 'java' 명령에 대한 출력으로 다음 볼 수 있습니다

1000  4758 4752 0 20:32 ?  00:00:00 sh -c java -Djetty.port\=8982 -Dsolr.data.dir\=/home/panayotis/my_documents/ezMTA/solr/data/development -Dsolr.solr.home\=/home/panayotis/my_documents/ezMTA/solr -Djava.util.logging.config.file\=/tmp/logging.properties20120902-4758-13patuu -jar start.jar 

1000  4761 4758 7 20:32 ?  00:00:01 java -Djetty.port=8982 -Dsolr.data.dir=/home/panayotis/my_documents/ezMTA/solr/data/development -Dsolr.solr.home=/home/panayotis/my_documents/ezMTA/solr -Djava.util.logging.config.file=/tmp/logging.properties20120902-4758-13patuu -jar start.jar 

이 실제 서버 프로세스가 "4761"PID를 가진 하나 인 것을 의미한다. 프로세스 "4758"은 쉘에서 서버를 시작하기위한 것입니다.

나는 고양이 PID 파일은 내가 볼 때 :

cat solr/pids/development/sunspot-solr-development.pid 
4758 

rake sunspot:solr:stop는 "4758"을 죽이고 "4761"까지 실행 잎 것을 의미합니다.

답변

1

'sunspot_solr', '1.3.1'으로 다운 그레이드되었으며 이제는 정상적으로 작동합니다.

3

이것은 버그입니다!

1000  4758 4752 0 20:32 ?  00:00:00 sh -c java -Djetty.port\=8982 - Dsolr.data.dir\=/home/panayotis/my_documents/ezMTA/solr/data/development -Dsolr.solr.home\=/home/panayotis/my_documents/ezMTA/solr -Djava.util.logging.config.file\=/tmp/logging.properties20120902-4758-13patuu -jar start.jar 

1000  4761 4758 7 20:32 ?  00:00:01 java -Djetty.port=8982 -Dsolr.data.dir=/home/panayotis/my_documents/ezMTA/solr/data/development -Dsolr.solr.home=/home/panayotis/my_documents/ezMTA/solr -Djava.util.logging.config.file=/tmp/logging.properties20120902-4758-13patuu -jar start.jar 

과정 4758은 전경 과정이지만 공정 4761은 백그라운드 프로세스, 그래서 당신은 PID 4758를 죽일 경우는, init 프로세스 프로세스 4761의 부모가 될 것이다 자신의 자식 프로세스 4761을 파괴하지 않기 때문에 !

exec(Shellwords.shelljoin(command)) 

Shellwords.shelljoin (명령) 문자열 인 103

sunspot_solr/lib 디렉토리/태양 흑점/SOLR/server.rb]로의 # 라인에서

하지만 Kernel#exec descrip :

exec([env,] command... [,options]) 

만약 하나의 문자열 명령으로 주어지면 실행되기 전에 쉘 확장에 종속 된 명령 행으로 간주됩니다. 표준 쉘은 유닉스 계열 시스템에서 항상 "/ bin/sh"을 의미합니다.

그래서 두 가지 프로세스가 시작됩니다.

사용이 : 간부 (* 명령)

하나 개의 프로세스를 시작, 그래서 태양 흑점을 긁어합니다 : SOLR : 올바른 작동을 중지. 이 같은

see this pull request

-1

설정 ENV - RAILS_ENV=production rake sunspot:solr:stop

관련 문제