Print the log of the instance information at regular intervals 62/232162/5
authorYoungHun Kim <yh8004.kim@samsung.com>
Wed, 29 Apr 2020 00:12:29 +0000 (09:12 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Wed, 29 Apr 2020 05:39:47 +0000 (14:39 +0900)
Change-Id: Ibaeb74932b5e20ad1cc872a75b6fbfa24a345259

server/include/muse_server_config.h
server/include/muse_server_private.h
server/src/muse_server_config.c
server/src/muse_server_connection.c
server/src/muse_server_private.c

index 2219dc2..6889555 100644 (file)
@@ -31,6 +31,7 @@ extern "C" {
 
 #define MUSE_LOG                                                               "muse:logfile"
 #define MUSE_LOCK                                                              "muse:lockfile"
+#define MUSE_LOG_PERIOD                                                        "muse:log_period"
 #define MUSE_WATCHDOG_MIN_TIMEOUT                              "muse:min_timeout"
 #define MUSE_WATCHDOG_MAX_TIMEOUT                              "muse:max_timeout"
 #define MUSE_MEMORY_THRESHOLD                                  "muse:memory_threshold"
@@ -48,6 +49,7 @@ extern "C" {
 #define MAX_INSTANCE                                                   "max_instance"
 #define CAUTION_INSTANCE                                               "caution_instance"
 
+#define DEFAULT_LOG_PERIOD                                             900 /* 15 minute */
 #define DEFAULT_WATCHDOG_MIN_TIMEOUT                   5
 #define DEFAULT_WATCHDOG_MAX_TIMEOUT                   60
 #define DEFAULT_DISPATCH_WATCHDOG_TIMEOUT              10
@@ -55,7 +57,7 @@ extern "C" {
 #define DEFAULT_WATCHDOG_DISABLED_API_INDEX            -1 /* Watchdog is applied to all dispatcher functions */
 #define DEFAULT_MAX_INSTANCE                                   -1 /* Unlimited */
 #define DEFAULT_CAUTION_INSTANCE                               -1
-#define DEFAULT_ON_DEMAND_MAX_IDLE_TIME                        600 /* 10 minutes */
+#define DEFAULT_ON_DEMAND_MAX_IDLE_TIME                        600 /* 10 minute */
 #define DEFAULT_ON_DEMAND_MAX_IDLE_MEMORY              30000 /* 30MB */
 
 
@@ -73,6 +75,7 @@ typedef struct ms_config {
        int host_cnt;
        gboolean log_enabled;
        char *lockfile;
+       int log_period;
        int min_timeout;
        int max_timeout;
        int memory_threshold;
@@ -99,6 +102,7 @@ char *ms_config_get_preloaded_value(int idx);
 char *ms_config_get_lockfile(void);
 gboolean ms_config_is_log_enabled(void);
 void ms_config_remove_lockfile(void);
+int ms_config_get_log_period(void);
 int ms_config_get_min_timeout(void);
 int ms_config_get_max_timeout(void);
 int ms_config_get_memory_threshold(void);
index 85d3452..016d87e 100644 (file)
@@ -84,6 +84,7 @@ typedef struct _muse_server {
        ms_state_e state;
        GMutex state_lock;
        struct timeval tv_s;
+       char instance_pid_info[MUSE_MSG_LEN_MAX];
 } muse_server_t;
 
 typedef struct ms_cmd_dispatch_info {
index f6027fa..9999713 100644 (file)
@@ -89,6 +89,8 @@ static int _ms_config_parser(ms_config_t *conf)
                goto out;
        }
 
+       conf->log_period = _ms_config_get_int(conf->muse_dict, MUSE_LOG_PERIOD, DEFAULT_LOG_PERIOD);
+
        conf->min_timeout = _ms_config_get_int(conf->muse_dict, MUSE_WATCHDOG_MIN_TIMEOUT, DEFAULT_WATCHDOG_MIN_TIMEOUT);
 
        conf->max_timeout = _ms_config_get_int(conf->muse_dict, MUSE_WATCHDOG_MAX_TIMEOUT, DEFAULT_WATCHDOG_MAX_TIMEOUT);
@@ -323,6 +325,14 @@ void ms_config_remove_lockfile(void)
        (void)unlink(conf->lockfile);
 }
 
+int ms_config_get_log_period(void)
+{
+       ms_config_t *conf = _ms_config_get_instance();
+       muse_return_val_if_fail(conf, MUSE_ERR);
+
+       return conf->log_period;
+}
+
 int ms_config_get_min_timeout(void)
 {
        ms_config_t *conf = _ms_config_get_instance();
index c12f024..9980597 100644 (file)
@@ -35,11 +35,12 @@ static void _ms_connection_module_instance_info(muse_module_h m, ms_connection_t
        muse_module_h connecting_m;
        char pids[MUSE_MSG_LEN_MAX] = {'\0',};
        char pid[MUSE_PARAM_MAX] = {'\0',};
-       int idx, len, caution_instance;
+       int idx, len;
 
        muse_return_if_fail(m);
        muse_return_if_fail(connection);
        muse_return_if_fail(queue);
+       muse_return_if_fail(ms_get_instance());
 
        len = g_queue_get_length(queue);
 
@@ -54,22 +55,15 @@ static void _ms_connection_module_instance_info(muse_module_h m, ms_connection_t
                strncat(pids, pid, MUSE_MSG_LEN_MAX - strlen(pids) - 1);
        }
 
-       LOGW("total number of module = %d ( %s) - %s %p from pid %d %s client (count %d)",
-               len, pids, connection_cmd[cmd], m, m->pid, ms_config_get_host_name(m->idx), connection->instance_count[m->idx]);
+       strncpy(ms_get_instance()->instance_pid_info, pids, MUSE_MSG_LEN_MAX);
 
-       caution_instance = ms_config_get_caution_instance(m->idx);
-
-       if (caution_instance != DEFAULT_CAUTION_INSTANCE && connection->instance_count[m->idx] > caution_instance) {
-               LOGI("[MUSE_MODULE_COMMAND_CREATE_CAUTION] player # %d | camera # %d | recorder # %d > %d",
-                       connection->instance_count[MUSE_PLAYER], connection->instance_count[MUSE_CAMERA],
-                       connection->instance_count[MUSE_RECORDER], caution_instance);
-               ms_cmd_dispatch(m, MUSE_MODULE_COMMAND_CREATE_CAUTION);
-       }
+       LOGW("total number of modules = %d ( %s) - %s %p from pid %d %s client (count %d)", len, ms_get_instance()->instance_pid_info,
+               connection_cmd[cmd], m, m->pid, ms_config_get_host_name(m->idx), connection->instance_count[m->idx]);
 }
 
 int ms_connection_register(muse_module_h m)
 {
-       int fd;
+       int fd, caution_instance;
        GQueue *queue;
        struct epoll_event event = { 0 };
        char err_msg[MUSE_MSG_LEN_MAX] = {'\0',};
@@ -105,6 +99,15 @@ int ms_connection_register(muse_module_h m)
 
        _ms_connection_module_instance_info(m, connection, queue, API_CREATE);
 
+       caution_instance = ms_config_get_caution_instance(m->idx);
+
+       if (caution_instance != DEFAULT_CAUTION_INSTANCE && connection->instance_count[m->idx] > caution_instance) {
+               LOGI("[MUSE_MODULE_COMMAND_CREATE_CAUTION] player # %d | camera # %d | recorder # %d > %d",
+                       connection->instance_count[MUSE_PLAYER], connection->instance_count[MUSE_CAMERA],
+                       connection->instance_count[MUSE_RECORDER], caution_instance);
+               ms_cmd_dispatch(m, MUSE_MODULE_COMMAND_CREATE_CAUTION);
+       }
+
        ms_connection_unlock(connection);
 
        LOGD("Leave");
index 697a893..5cdf587 100644 (file)
@@ -401,24 +401,43 @@ out:
 
 static void _ms_check_idle_state(void)
 {
+       ms_connection_t *connection = NULL;
+       ms_config_t *conf = NULL;
        struct timeval tv_c, tv_r;
        int instance_number, timeout;
+       static int period_idx = 1;
 
        muse_return_if_fail(muse_server);
        muse_return_if_fail(muse_server->state == MUSE_SERVER_STATE_READY);
 
+       connection = muse_server->connection;
+       muse_return_if_fail(connection);
+
+       conf = muse_server->conf;
+       muse_return_if_fail(conf);
+
        gettimeofday(&tv_c, NULL);
        timersub(&tv_c, &muse_server->tv_s, &tv_r);
 
-       instance_number = g_queue_get_length(muse_server->connection->instance_queue);
        timeout = (int)tv_r.tv_sec;
 
-       LOGD("timeout %d", timeout);
+       ms_connection_lock(connection);
+
+       instance_number = g_queue_get_length(connection->instance_queue);
 
-       if (instance_number == 0 && timeout >= ms_config_get_max_idle_time()) {
-               LOGE("Timeout exit !!! [Idle time] %d sec", timeout);
-               ms_remove_ready_file();
-               exit(EXIT_SUCCESS);
+       if (timeout >= ms_config_get_log_period() * period_idx) {
+               LOGW("total number of modules = %d ( %s)", instance_number, muse_server->instance_pid_info);
+               period_idx++;
+       }
+
+       ms_connection_unlock(connection);
+
+       if (conf->is_on_demand) {
+               if (instance_number == 0 && timeout >= ms_config_get_max_idle_time()) {
+                       LOGE("Timeout exit !!! [Idle time] %d sec", timeout);
+                       ms_remove_ready_file();
+                       exit(EXIT_SUCCESS);
+               }
        }
 }
 
@@ -444,9 +463,7 @@ gpointer _ms_diag_thread(gpointer data)
        muse_return_val_if_fail(muse_server, NULL);
 
        while (1) {
-               if (muse_server->conf->is_on_demand)
-                       _ms_check_idle_state();
-
+               _ms_check_idle_state();
                _ms_check_connection_event();
        }