@per, thanks for the detailed response above. Starting a separate thread here. Just one more question.
“Note though that all notification contexts for a daemon are released by a call to confd_release_daemon() - i.e. after that call, all pointers to notifications contexts are invalid, and a call of confd_notification_send() with such a pointer is likely to result in a crash.”
When a daemon registers with ConfD using confd_init_daemon() call, under what circumstances would ConfD print log messages as follows in its log file:
“Daemon daemon-name timed out.”
I ask this because I am chasing an issue wherein, out of the blue, I started to see such messages in the ConfD log for my daemon and I would like to know where to start looking. These messages initially seem to come out every 20 minutes and the daemon eventually dies. I am not sure if the daemon died because ConfD had died minutes before. And I do not know if ConfD exits gracefully if such a daemon dies.
Hm, I thought there was a mapping from those messages to “explanatory text” somewhere, but it seems the latter is only available for the “log numbers” that you would receive when subscribing to CONFD_NOTIF_DAEMON events - from $CONFD_DIR/include/confd_logsyms.h:
/* An external database daemon did not respond to a query. */
#define CONFD_DAEMON_TIMEOUT 15
Anyway, you will get more detailed info about the problem in the developerLog - if you set developerLogLevel to “trace”, you should also be able to figure out which particular request that timed out.
The timeouts can be configured via /confdConfig/capi/newSessionTimeout and /confdConfig/capi/queryTimeout - if either of them fires, ConfD will close all connections to the daemon and remove all its registrations.
ConfD doesn’t exit at all if such a daemon dies, only logs it - in confd.log it will be (surprise:-):