lucasdiedrich / ojs

Open Journal Systems (OJS) is a journal management and publishing system.
GNU General Public License v3.0
19 stars 64 forks source link

Avoid the error "checkstart entered FATAL state, too many start retries too quickly" #29

Open Potomac54 opened 5 years ago

Potomac54 commented 5 years ago

@lucasdiedrich @marcbria

It seems that supervisord is not correctly configured for running ojs-pre-start script, in the console I can see these 2 errors messages :

one solution is to use the options "startsecs" and "exitcodes" in /etc/supervisord.conf

[program:checkstart]
command=/usr/local/bin/ojs-pre-start
startsecs=0
exitcodes=0

http://supervisord.org/configuration.html

after these modifications the new output of supervisord about checkstart process, no errors like "fatal state" :

lucasdiedrich commented 5 years ago

Thats awesome @Potomac54, the error occurs because supervisor normally need an service to be running, and the exit of ojs-pre-start its not a running process and i never found and work around. Can you please make a PR with that?

Or i will integrate this as soon as i'm possible.

Thanks

Potomac54 commented 5 years ago

Can you tell me how can I make pull request in your github ?

Do I need to be a member of your github ? I tried to clone your github (php7-test branch), and then make a pull with my modifications, it doesn't accept my credentials

$ git push
Username for 'https://github.com': potomac
Password for 'https://potomac@github.com': 
remote: Permission to lucasdiedrich/ojs.git denied to Potomac.
fatal: unable to access 'https://github.com/lucasdiedrich/ojs.git/': The requested URL returned error: 403

then I tried to use the "pull request" feature of your github, but not sure to understand how it works

marcbria commented 5 years ago

In short: 1) fork lucas repo. 2) "git clone" your forked repo to your local computer. 3) Make your chages. 4) "git commit" to your local repo. 5) "git push" to your forked repo. 6) Visit github and the tool will ask you to create a PR with your changes. 7) Delete your fork and local repo.

Here you have github's howto: https://help.github.com/en/articles/creating-a-pull-request

Potomac commented 5 years ago

@marcbria @lucasdiedrich

Ok I forked lucas repo, I made the change in the "php7-test" branch, and I made a pull request : https://github.com/lucasdiedrich/ojs/pull/31

Potomac commented 5 years ago

I notice a bug in my pull request, ojs-pre-start is not started when startsecs=0,

so the solution is to set this option to 1, like this :

[program:checkstart] command=/usr/local/bin/ojs-pre-start startsecs=1 exitcodes=0

lucasdiedrich commented 5 years ago

@Potomac thanks for your help, unfortunetly your second PR included breaking code, i mentioned that over the PR, thanks.

Potomac commented 5 years ago

@lucasdiedrich @marcbria : I fixed the wrong path in a new commit,

for the supervisor problem my fix doesn't really work, sometimes I get the message "fatal state", I think the main problem is that supervisord is designed to run daemons, not really simple bash scripts,

one solution would be to start ojs-pre-start with an init system like systemd, alpine linux uses a different init software, openRC : https://wiki.alpinelinux.org/wiki/Alpine_Linux_Init_System

another solution may be to use a cron script, with settings to run once ojs-pre-start script

lucasdiedrich commented 5 years ago

@Potomac thats exactly the problem, supervisor is designed to run daemons, using alpine init system is the best option, as soon as possible going to look into this.