Execute dispatcher worker only when muse-server is ready 04/201904/5 accepted/tizen/unified/20190325.070928 submit/tizen/20190322.043412 submit/tizen/20190322.112341
authorYoungHun Kim <yh8004.kim@samsung.com>
Thu, 21 Mar 2019 00:22:32 +0000 (09:22 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Fri, 22 Mar 2019 02:59:24 +0000 (11:59 +0900)
Change-Id: I046a5e3509c70c16e95e5fe4a0cf01429b19e1ae

packaging/mused.spec
server/include/muse_server_private.h
server/src/muse_server_private.c
server/src/muse_server_workqueue.c

index 86e30b3..c038a25 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mused
 Summary:    A multimedia daemon
-Version:    0.3.71
+Version:    0.3.72
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0 and BSD-3-Clause
index 29e40b1..c37d77d 100644 (file)
@@ -113,6 +113,7 @@ gboolean ms_init_bufmgr(void);
 void ms_deinit_bufmgr(void);
 void ms_cmd_dispatch_foreach_func(gpointer data, gpointer user_data);
 void ms_set_state(ms_state_e state);
+gboolean ms_is_server_ready(void);
 void ms_set_running(gboolean value);
 gboolean ms_is_running(void);
 
index 67c29fe..00eaee9 100644 (file)
@@ -614,7 +614,7 @@ int ms_deinit(void)
        muse_return_val_if_fail(muse_server->watchdog, retval);
        muse_return_val_if_fail(muse_server->workqueue, retval);
 
-       muse_server->state = MUSE_SERVER_STATE_IDLE;
+       ms_set_state(MUSE_SERVER_STATE_IDLE);
 
 #ifdef MUSE_USE_WATCHDOG
        if (ms_watchdog_deinit(muse_server->watchdog) == MM_ERROR_NONE)
@@ -687,10 +687,10 @@ void ms_check_memory(int pid)
 
        LOGI("[%d] Proportional set size %d (KByte)", pid, used_pss);
 
-       if (g_queue_is_empty(connection->instance_queue) && muse_server->state != MUSE_SERVER_STATE_IDLE) {
+       if (g_queue_is_empty(connection->instance_queue) && ms_is_server_ready()) {
                memory_threshold = ms_config_get_memory_threshold();
                if (used_pss > memory_threshold) {
-                       muse_server->state = MUSE_SERVER_STATE_IDLE;
+                       ms_set_state(MUSE_SERVER_STATE_IDLE);
                        ms_log_process_info(pid);
 
                        snprintf(err_msg, sizeof(err_msg), "[Memory Leak] %d > %d (KByte)", used_pss, memory_threshold);
@@ -973,6 +973,13 @@ void ms_set_state(ms_state_e state)
        g_mutex_unlock(&muse_server->state_lock);
 }
 
+gboolean ms_is_server_ready(void)
+{
+       muse_return_val_if_fail(muse_server, FALSE);
+
+       return muse_server->state == MUSE_SERVER_STATE_READY;
+}
+
 void ms_set_running(gboolean value)
 {
        muse_return_if_fail(muse_server);
index bb0d853..f5a5f7f 100644 (file)
@@ -26,11 +26,10 @@ static void *_ms_workqueue_worker_function(void *ptr)
 {
        ms_workqueue_worker_t *worker = (ms_workqueue_worker_t *) ptr;
        ms_workqueue_job_t *job;
-       char err_msg[MUSE_MSG_LEN_MAX] = {'\0',};
 
        muse_return_val_if_fail(worker, NULL);
 
-       while (1) {
+       while (ms_is_server_ready()) {
                pthread_mutex_lock(&worker->workqueue->jobs_mutex);
 
                if (worker->terminate) {
@@ -50,8 +49,7 @@ static void *_ms_workqueue_worker_function(void *ptr)
                pthread_mutex_unlock(&worker->workqueue->jobs_mutex);
 
                if (!job->job_function(job)) {
-                       snprintf(err_msg, sizeof(err_msg), "Error - Execute the workqueue job, Restart muse server...");
-                       LOGE("%s", err_msg);
+                       LOGE("Error - Execute the workqueue job, Restart muse server...");
                        ms_respawn(SIGABRT);
                        break;
                }