Use timer instead of idle callback 41/316941/1 accepted/tizen/9.0/unified/20241224.150105
authorYoungHun Kim <yh8004.kim@samsung.com>
Mon, 9 Dec 2024 04:21:57 +0000 (13:21 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Thu, 19 Dec 2024 22:17:19 +0000 (22:17 +0000)
 - Add the log to debug muse server is not ready.
 - Terminate on ready file creation failure.
 - Update ms_deinit() and LOG_TAG also.

Change-Id: Id5f946f2b59efe41e561f79eb67b1b32728c722d
(cherry picked from commit ae6dc24b6c084e23fd21968d1e815a368e48d587)

client/src/muse_client.c
core/include/muse_core_internal.h
packaging/mused.spec
server/include/muse_server_private.h
server/src/muse_server_private.c
server/src/muse_server_system.c

index 308ea681347b464f26f9d2cba180882c5cd70df1..bd6d27062c846fbe7fa5ffe9266aac2d148dac5d 100644 (file)
@@ -26,7 +26,7 @@
 #ifdef LOG_TAG
 #undef LOG_TAG
 #endif
-#define LOG_TAG "MUSED_CLIENT"
+#define LOG_TAG "MUSE_CLIENT"
 
 static GMutex mc_mutex;
 static GHashTable *mc_table;
index 46371f711295a73a40ec3d40a094c667ed326b88..4b267800a0f04cd6181ea29eebc32222b2b98dc4 100644 (file)
@@ -52,7 +52,7 @@ extern "C" {
 #ifdef LOG_TAG
 #undef LOG_TAG
 #endif
-#define LOG_TAG                                                "MUSED_CORE"
+#define LOG_TAG                                                "MUSE_CORE"
 
 #define CONFFILE                                       SYSCONFDIR"/multimedia/mused.conf"
 #define MUSE_HOST                                      "muse:hosts"
index f00276ebc59638c364b08e759387b1f5e83339c6..60cca74d198911f57b5808ed581ff4c6167e1ffc 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mused
 Summary:    A multimedia daemon
-Version:    0.4.9
+Version:    0.4.10
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index e5a8b63c16c6a1ebfc7d10b31b018255319717c0..00d78e818d10f4158ebfbef0a2475173cd2e551e 100644 (file)
@@ -49,7 +49,7 @@ extern "C" {
 #ifdef LOG_TAG
 #undef LOG_TAG
 #endif
-#define LOG_TAG                                                "MUSED_SERVER"
+#define LOG_TAG                                                "MUSE_SERVER"
 #define MSG_KEY_PID                                    "pid"
 #define MS_TIMEOUT_SEC                         1
 #define MS_TIMEOUT_MSEC                                MS_TIMEOUT_SEC * 1000
@@ -82,6 +82,7 @@ typedef struct _muse_server {
        int stop;
        int retval;
        int pid;
+       guint timeout_id;
        gboolean daemonize;
        tbm_bufmgr bufmgr;
        GMainLoop *main_loop;
index a98de326f741236344f6cf5a5699a5d4fadfa6fc..ef74ed2deff42daa7c938ba682655a99ae2ae75c 100644 (file)
@@ -44,6 +44,7 @@
 #define MUSE_LWIPC_WAIT_TIME                   1000
 #endif
 
+#define MUSE_TIMER_INTERVAL                            10
 
 static const char *channel_name[MUSE_CHANNEL_MAX] = {
        "msg",
@@ -78,7 +79,8 @@ static void _ms_unlock_state(void);
 static gboolean _ms_connection_handler(GIOChannel *source, GIOCondition condition, gpointer data);
 static void _ms_diag_init(void);
 static void _ms_diag_deinit(void);
-static gboolean _ms_idle_cb(gpointer data);
+static gboolean _ms_timer_cb(gpointer data);
+static void _ms_remove_timeout_id(gpointer data);
 static int _ms_open_lockfile(void);
 static void _ms_process_init(void);
 static void _ms_launch_foreground(void);
@@ -297,7 +299,9 @@ static gboolean _ms_connection_handler(GIOChannel *source, GIOCondition conditio
        _ms_lock_state();
 
        if (muse_server->state != MUSE_SERVER_STATE_READY) {
-               LOGW("Now mused state is not ready...");
+               muse_core_get_cur_time(&muse_server->tv, NULL);
+               muse_core_change_time_format((int)muse_server->tv.tv_sec, time_buf);
+               LOGW("Now (%s) mused state is not ready... [%d]", time_buf, muse_server->state);
                goto out;
        }
 
@@ -597,13 +601,17 @@ static void _ms_diag_deinit(void)
        d->msg_aq = NULL;
 }
 
-static gboolean _ms_idle_cb(gpointer data)
+static gboolean _ms_timer_cb(gpointer data)
 {
        struct timespec tv;
        char time_buf[MUSE_MSG_TIME_LEN];
 
-       if (!ms_create_ready_file())
+       LOGW("Enter");
+
+       if (!ms_create_ready_file()) {
                LOGE("%s file creation is failed", MUSE_SERVER_READY);
+               ms_terminate(SIGABRT);
+       }
 
        _ms_diag_init();
 
@@ -618,6 +626,12 @@ static gboolean _ms_idle_cb(gpointer data)
        return G_SOURCE_REMOVE;
 }
 
+static void _ms_remove_timeout_id(gpointer data)
+{
+       LOGW("Timeout id %u is removed", muse_server->timeout_id);
+       muse_server->timeout_id = 0;
+}
+
 static void _ms_init(void)
 {
        int idx;
@@ -1097,7 +1111,7 @@ int ms_deinit(void)
        int retval = MUSE_ERR;
        int idx;
 
-       LOGD("Enter");
+       LOGW("Enter");
 
        muse_return_val_if_fail(muse_server, retval);
        muse_return_val_if_fail(muse_server->conf, retval);
@@ -1133,9 +1147,6 @@ int ms_deinit(void)
                        LOGE("remove %s failed", UDS_files[idx]);
        }
 
-       if (remove(MUSE_DEFAULT_PIDFILE) == -1)
-               LOGE("remove %s failed [errno : %d]", MUSE_DEFAULT_PIDFILE, errno);
-
        for (idx = 0; idx < muse_server->conf->host_cnt; idx++)
                ms_module_deinit(muse_server->module[idx]);
 
@@ -1163,7 +1174,7 @@ int ms_deinit(void)
        g_free(muse_server);
        muse_server = NULL;
 
-       LOGD("Leave");
+       LOGW("Leave");
        return retval;
 }
 
@@ -1256,11 +1267,21 @@ void ms_run(void)
 
        muse_return_if_fail(muse_server->main_loop);
 
-       muse_return_if_fail(g_idle_add_full(G_PRIORITY_HIGH, _ms_idle_cb, NULL, NULL) > 0);
+       muse_server->timeout_id = g_timeout_add_full(G_PRIORITY_HIGH, MUSE_TIMER_INTERVAL, _ms_timer_cb, NULL, _ms_remove_timeout_id);
+       if (muse_server->timeout_id == 0) {
+               LOGE("g_timeout_add_seconds_full() is failed");
+               return;
+       }
+
+       LOGW("g_main_loop_run");
 
-       LOGI("g_main_loop_run");
        g_main_loop_run(muse_server->main_loop);
 
+       if (muse_server->timeout_id > 0)
+               g_source_remove(muse_server->timeout_id);
+
+       g_main_loop_unref(muse_server->main_loop);
+
        LOGW("Leave");
 }
 
@@ -1405,7 +1426,8 @@ gboolean ms_is_server_ready(void)
 
 gboolean ms_create_ready_file(void)
 {
-       LOGD("Enter");
+       LOGW("Enter");
+
 #ifndef MUSE_USE_LWIPC
        int ready_fd;
 #endif
@@ -1431,7 +1453,8 @@ gboolean ms_create_ready_file(void)
                return FALSE;
        }
 #endif
-       LOGD("Leave");
+
+       LOGW("Leave");
 
        return TRUE;
 
index 493919eba5ab4106400e4f7f89d96c2725bc1fb1..ceadef7a0df87982da45740f8fb5f3182428675e 100644 (file)
@@ -404,7 +404,7 @@ void ms_system_stat_detach(ms_system_t *system)
 {
        muse_return_if_fail(system);
 
-       LOGI("remove stat id %u", system->st.id);
+       LOGW("remove stat id %u", system->st.id);
 
        if (system->st.id == 0)
                return;