Problem: UCS@school ID connector fails to start if old pid-file exists

Problem

UCS@school ID connector fails to start if old pid-file exists and you get an error message like in this bug
UCS@school ID connector fails to start if old pid-file exists

This init-script assumes that old pid-files are removed and fails to start once a remnant exists. This may be tha case on unclean shutdown.

/etc/init.d # ./ucsschool-id-connector start
 * Starting UCS@school ID Connector ...
Traceback (most recent call last):
  File "/ucsschool-id-connector/src/queue_management", line 170, in <module>
    _start()
  File "/ucsschool-id-connector/src/queue_management", line 151, in _start
    service.start()
  File "/usr/lib/python3.8/site-packages/service/__init__.py", line 461, in start
    raise ValueError('Daemon is already running at PID %d.' % pid)
ValueError: Daemon is already running at PID 146.                                                                                                                                                                                                       [ !! ]
 * ERROR: ucsschool-id-connector failed to start
/etc/init.d # cat /tmp/IDConnectorService.pid
146
/etc/init.d # 
/etc/init.d # pgrep IDConnectorService
/etc/init.d # rm /tmp/IDConnectorService.pid 
/etc/init.d # ./ucsschool-id-connector start
 * Starting UCS@school ID Connector ...
Started IDConnectorService daemon.                                                                                                                                                                                                                      [ ok ]
/etc/init.d # ./ucsschool-id-connector status
 * status: started

Solution

Check if old pid-files are exist with

cat /tmp/
IDConnectorService.pid  hsperfdata_root/        pytest-of-root/

cat /tmp/IDConnectorService.pid 
148

ls -l /tmp/IDConnectorService.pid 
-rw-r--r--    1 root     root             4 Mar 24 17:05 /tmp/IDConnectorService.pid

so there is an old pid-file exist, go further with

This resets the state (basically deleting the pid file):

/etc/init.d/ucsschool-id-connector zap

After that a start should work. So the “to be sure it’s running” commands are:

/etc/init.d/ucsschool-id-connector stop
/etc/init.d/ucsschool-id-connector zap
/etc/init.d/ucsschool-id-connector start
Mastodon