Cannot de-register initctl items even when file no-longer exists

Asked by Juzzie on 2006-11-30

I am using Upstart v0.2.7-7delivered with the Edgy distro and I am liking Upstart very much!

I wrote a test to see if I could add, start, stop and remove a new process. All seemed to work excellently as expected until I tried to remove the managed process. I can't seem to de-register an entry in the initclt list unless I rebooted the machine.

Is there a way to de-register removed events and reload the list like the way "init q" use to do?

Here's what I did to test it:
  - I created a test script in, say, /tmp which was just a loop and wrote text to a logfile.
  - I created the supporting script in /etc/event.d called tstloop to respawn my looping-logger if it died.
 - I ran it "start tstloop" .. looks great!
 - killed the running script, it restarted automatically.. Magic!
 - I stopped it "stop tstloop" .. fantastic! It stopped
 - I deleted the file /etc/event.d/tstloop
 - initctl list ... tstloop was still in the list (?)
 - I started it "start tstloop" .. it was running again, even though the control file was removed. (!!)

In fact I found the only way to make sure it didn't get kicked off again was to delete my test script in /tmp (renaming it didn't work so I gather it uses inodes).

Normally using SysVInit I would use the "init q" command to reload the inittab file.

Is there a way to do this using Upstart?

Thanks.

Question information

Language:
English Edit question
Status:
Solved
For:
upstart Edit question
Assignee:
No assignee Edit question
Last query:
2006-11-30
Last reply:
2007-02-18

This has been corrected in Upstart 0.3.5; deleting a file from event.d will also delete the job from memory once it has been stopped.

This was a bug that has been fixed.