I started playing with MongoDB on Lucid. Now I would like to run a DB and Config server on the same box. They both use the same binary to launch, but with different config files and running on different ports. All directories for log and lib is split so one goes to mongodb and the other to mongoconf.
Each process can be started without any problems on their own.
start mongodb
stop mongodb
start mongoconf
stop mongoconf
But if I try to start both, the second one would just start and exit. Using 'initctl log-priority debug' I got the following in the logs.
Jan 6 12:44:12 mongo4 init: event_finished: Finished started event
Jan 6 12:44:12 mongo4 init: job_process_handler: Ignored event 1 (1) for process 5690
Jan 6 12:44:12 mongo4 init: mongoconf (mongoconf) main process (5690) terminated with status 1
Jan 6 12:44:12 mongo4 init: mongoconf (mongoconf) goal changed from start to stop
Jan 6 12:44:12 mongo4 init: mongoconf (mongoconf) state changed from running to stopping
man 5 init shows that you can use instance names to differentiate the two. I tried using 'instance mongoconf' in the on upstart script and 'instance mongodb' in the other one, and it still fails. I can manually start the other process, so there is definitely no conflicts on port numbers or directories.
Any ideas on what to try or how to get output on why it is 'terminated with status 1'?
Thanx
For you intrepid sysadmins that find this, upstart doesn't just test the paths, it appears to test that the inode is different. This means that Hard-linking the file is out of the question too. the only way to run the same binary multiple times is to make multiple copies.
Doing some testing, I found that upstart uses the full path to the binary to see if it is the same process. So making a copy of the binary in a different location will allow you to create two upstart scripts.