From 42e4f0d283ba31c9e36077d64e57c9ab66f95ae9 Mon Sep 17 00:00:00 2001 From: Hummeltech <6109326+hummeltech@users.noreply.github.com> Date: Thu, 26 May 2022 13:36:54 -0700 Subject: [PATCH] Added PID file path configurability (#282) * Added PID file path configurability --- etc/renderd/renderd.conf | 1 + etc/renderd/renderd.conf.examples | 3 +++ includes/daemon.h | 1 + includes/render_config.h | 2 ++ src/daemon.c | 12 +++++++++--- 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/etc/renderd/renderd.conf b/etc/renderd/renderd.conf index 7245cc2..412f0f4 100644 --- a/etc/renderd/renderd.conf +++ b/etc/renderd/renderd.conf @@ -1,6 +1,7 @@ ; BASIC AND SIMPLE CONFIGURATION: [renderd] +pid_file=/run/renderd/renderd.pid stats_file=/run/renderd/renderd.stats socketname=/run/renderd/renderd.sock num_threads=4 diff --git a/etc/renderd/renderd.conf.examples b/etc/renderd/renderd.conf.examples index 651873b..bd46a7b 100644 --- a/etc/renderd/renderd.conf.examples +++ b/etc/renderd/renderd.conf.examples @@ -1,6 +1,7 @@ ; EXAMPLES FOR BASIC CONFIGURATION OPTIONS [renderd] +pid_file=/run/renderd/renderd.pid stats_file=/run/renderd/renderd.stats socketname=/run/renderd/renderd.sock num_threads=4 @@ -11,6 +12,7 @@ tile_dir=/var/cache/renderd/tiles ;ipport=7654 ;num_threads=4 ;tile_dir=rados://tiles/etc/ceph/ceph.conf +;pid_file=/run/renderd/renderd_rados.pid ;stats_file=/run/renderd/renderd.stats ;[renderd] @@ -18,6 +20,7 @@ tile_dir=/var/cache/renderd/tiles ;ipport=7654 ;num_threads=8 ;tile_dir=memcached:// +;pid_file=/run/renderd/renderd_memcached.pid ;stats_file=/run/renderd/renderd.stats ; EXAMPLE FOR MAPNIK CONFIGURATION OPTION diff --git a/includes/daemon.h b/includes/daemon.h index c337e9c..9579a7c 100644 --- a/includes/daemon.h +++ b/includes/daemon.h @@ -43,6 +43,7 @@ typedef struct { char *mapnik_font_dir; int mapnik_font_dir_recurse; char * stats_filename; + const char * pid_filename; } renderd_config; typedef struct { diff --git a/includes/render_config.h b/includes/render_config.h index 7582263..39a08cb 100644 --- a/includes/render_config.h +++ b/includes/render_config.h @@ -50,6 +50,8 @@ #define XMLCONFIG_DEFAULT "default" // Maximum number of configurations that mod tile will allow #define XMLCONFIGS_MAX 10 +// Default PID file path +#define PIDFILE "/run/renderd/renderd.pid" // Mapnik input plugins (will need to adjust for 32 bit libs) #define MAPNIK_PLUGINS "/usr/local/lib64/mapnik/input" diff --git a/src/daemon.c b/src/daemon.c index eec1a7f..ccf0543 100644 --- a/src/daemon.c +++ b/src/daemon.c @@ -51,8 +51,6 @@ #endif // } -#define PIDFILE "/run/renderd/renderd.pid" - #define PFD_LISTEN 0 #define PFD_EXIT_PIPE 1 #define PFD_SPECIAL_COUNT 2 @@ -995,6 +993,9 @@ int main(int argc, char **argv) sprintf(buffer, "%s:stats_file", name); config_slaves[render_sec].stats_filename = iniparser_getstring(ini, buffer, NULL); + snprintf(buffer, sizeof(buffer), "%s:pid_file", name); + config_slaves[render_sec].pid_filename = iniparser_getstring(ini, + buffer, (char *) PIDFILE); if (render_sec == active_slave) { config.socketname = config_slaves[render_sec].socketname; @@ -1004,6 +1005,8 @@ int main(int argc, char **argv) config.tile_dir = config_slaves[render_sec].tile_dir; config.stats_filename = config_slaves[render_sec].stats_filename; + config.pid_filename + = config_slaves[render_sec].pid_filename; config.mapnik_plugins_dir = iniparser_getstring(ini, "mapnik:plugins_dir", (char *) MAPNIK_PLUGINS); config.mapnik_font_dir = iniparser_getstring(ini, @@ -1030,6 +1033,7 @@ int main(int argc, char **argv) g_logger(G_LOG_LEVEL_INFO, "config renderd: tile_dir=%s", config.tile_dir); g_logger(G_LOG_LEVEL_INFO, "config renderd: stats_file=%s", config.stats_filename); + g_logger(G_LOG_LEVEL_INFO, "config renderd: pid_file=%s", config.pid_filename); g_logger(G_LOG_LEVEL_INFO, "config mapnik: plugins_dir=%s", config.mapnik_plugins_dir); g_logger(G_LOG_LEVEL_INFO, "config mapnik: font_dir=%s", config.mapnik_font_dir); g_logger(G_LOG_LEVEL_INFO, "config mapnik: font_dir_recurse=%d", config.mapnik_font_dir_recurse); @@ -1057,6 +1061,8 @@ int main(int argc, char **argv) config_slaves[i].tile_dir); g_logger(G_LOG_LEVEL_INFO, "config renderd(%i): stats_file=%s", i, config_slaves[i].stats_filename); + g_logger(G_LOG_LEVEL_INFO, "config renderd(%i): pid_file=%s", i, + config_slaves[i].pid_filename); } for (iconf = 0; iconf < XMLCONFIGS_MAX; ++iconf) { @@ -1098,7 +1104,7 @@ int main(int argc, char **argv) } /* write pid file */ - FILE *pidfile = fopen(PIDFILE, "w"); + FILE *pidfile = fopen(config.pid_filename, "w"); if (pidfile) { (void) fprintf(pidfile, "%d\n", getpid());