Skip to content

Commit

Permalink
lib-master: Add master_service_init_stats_client()
Browse files Browse the repository at this point in the history
This allows initializing the stats client after master_service_init() if
necessary.
  • Loading branch information
sirainen committed Dec 22, 2017
1 parent 818b09e commit e71a080
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 9 deletions.
12 changes: 3 additions & 9 deletions src/lib-master/master-service-settings.c
Expand Up @@ -583,20 +583,14 @@ int master_service_settings_read(struct master_service *service,
/* running standalone. we want to ignore plugin versions. */
service->version_string = NULL;
}
if ((service->flags & MASTER_SERVICE_FLAG_SEND_STATS) != 0 &&
service->stats_client == NULL &&
service->set->stats_writer_socket_path[0] != '\0') T_BEGIN {
const char *path = t_strdup_printf("%s/%s",
service->set->base_dir,
service->set->stats_writer_socket_path);
if ((service->flags & MASTER_SERVICE_FLAG_SEND_STATS) != 0) {
/* When running standalone (e.g. doveadm) try to connect to the
stats socket, but don't log an error if it's not running.
It may be intentional. */
bool silent_notfound_errors =
(service->flags & MASTER_SERVICE_FLAG_STANDALONE) != 0;
service->stats_client =
stats_client_init(path, silent_notfound_errors);
} T_END;
master_service_init_stats_client(service, silent_notfound_errors);
}

if (service->set->shutdown_clients)
master_service_set_die_with_master(master_service, TRUE);
Expand Down
13 changes: 13 additions & 0 deletions src/lib-master/master-service.c
Expand Up @@ -451,6 +451,19 @@ void master_service_init_log(struct master_service *service,
service->log_initialized = TRUE;
}

void master_service_init_stats_client(struct master_service *service,
bool silent_notfound_errors)
{
if (service->stats_client == NULL &&
service->set->stats_writer_socket_path[0] != '\0') T_BEGIN {
const char *path = t_strdup_printf("%s/%s",
service->set->base_dir,
service->set->stats_writer_socket_path);
service->stats_client =
stats_client_init(path, silent_notfound_errors);
} T_END;
}

void master_service_set_die_with_master(struct master_service *service,
bool set)
{
Expand Down
6 changes: 6 additions & 0 deletions src/lib-master/master-service.h
Expand Up @@ -128,6 +128,12 @@ void master_service_env_clean(void);
functions. The following calls change the log prefix. */
void master_service_init_log(struct master_service *service,
const char *prefix);
/* Initialize stats client (if it's not already initialized). This is called
automatically if MASTER_SERVICE_FLAG_SEND_STATS is enabled. If
silent_notfound_errors is set, connect() errors aren't logged if they're
happening because the stats service isn't running. */
void master_service_init_stats_client(struct master_service *service,
bool silent_notfound_errors);

/* If set, die immediately when connection to master is lost.
Normally all existing clients are handled first. */
Expand Down

0 comments on commit e71a080

Please sign in to comment.