For some reason ferret server on a site I have been managing has been giving me a load of grief.
I seem to have nailed it down to two problems.
Firstly, monit only seems to like monitoring ferret server under certain circumstances.
Secondly, the ferret indexes don’t seem to like being rebuilt.
The first one is weird … my monit config looks like this:
check process ferret with pidfile /home/rails/myapp/current/log/ferret.pid
start program = "/home/rails/myapp/current/script/ferret_server -e production start"
as uid rails and gid rails
stop program = "/home/rails/myapp/current/script/ferret_server -e production stop"
as uid rails and gid rails
group ferret
if failed port 9010 type TCP then restart
if 5 restarts within 5 cycles then timeout
But monit often says “not monitored”. And completely fails to restart the server if it does go down.
No solution to that as yet.
The second problem is even weirder.
If I stop the server, then rebuild the indexes (I have a custom rake task that rebuilds all the indexes for my app) and restart, every search crashes ferret.
If I rebuild the indexes while the server is running, it appears to run fine. Why? I have absolutely no idea.