Change resource timeout from 5 second to 300 miliseconds 95/236395/5
authorYoungHun Kim <yh8004.kim@samsung.com>
Tue, 16 Jun 2020 23:02:38 +0000 (08:02 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Thu, 18 Jun 2020 05:18:56 +0000 (14:18 +0900)
 - temporary workaround to avoid resource relese conflict

Change-Id: I01f0d660181dd3fe8d5bc53853d61e02510029a0

src/daemon/backend/murphy/mm_resource_manager_mloop.c
src/daemon/backend/murphy/mm_resource_manager_rset.c
src/daemon/mm_resource_manager_daemon_priv.c
src/lib/mm_resource_manager_priv.c

index 994621c..3fad136 100644 (file)
@@ -23,7 +23,7 @@ static void __mm_resource_manager_mloop_state_callback(mrp_res_context_t *contex
 static gboolean __mm_resource_manager_mloop_list_resources(mrp_res_context_t *context);
 static int __mm_resource_manager_mloop_wait_connection(mm_resource_manager_mloop_s *mrp);
 
-#define RM_RESOURCE_TIMEOUT 5
+#define RM_RESOURCE_TIMEOUT 300
 
 static gpointer thread_func(mm_resource_manager_mloop_s *mrp)
 {
@@ -250,7 +250,7 @@ static int __mm_resource_manager_mloop_wait_connection(mm_resource_manager_mloop
        if (mrp->mrp_ctx && MRP_RES_CONNECTED == mrp->mrp_ctx->state) {
                MM_RM_DEBUG("Already connected to resource server");
        } else {
-               gint64 end_time = g_get_monotonic_time() + RM_RESOURCE_TIMEOUT * G_TIME_SPAN_SECOND;
+               gint64 end_time = g_get_monotonic_time() + RM_RESOURCE_TIMEOUT * G_TIME_SPAN_MILLISECOND;
 
                MM_RM_DEBUG("Not connected to resource server yet. Waiting...");
 
index 9be4a49..8911e8f 100644 (file)
@@ -38,7 +38,7 @@ static const char *state_str[MRP_RES_RESOURCE_ABOUT_TO_LOOSE + 1] = {
 static void _mm_resource_manager_rset_state_callback(mrp_res_context_t *cx, const mrp_res_resource_set_t *rs, void *user_data);
 static void _mm_resource_manager_rset_release_cb(mrp_res_context_t *cx, const mrp_res_resource_set_t *rs, void *user_data);
 
-#define RM_RESOURCE_TIMEOUT 5
+#define RM_RESOURCE_TIMEOUT 300
 
 int _mm_resource_manager_rset_create(mm_resource_manager_app_class_e app_class,
                mm_resource_manager_mloop_s *mrp, mm_resource_manager_rset_s **rset)
@@ -131,7 +131,7 @@ int _mm_resource_manager_rset_acquire(mm_resource_manager_rset_s *rset)
                return MM_RESOURCE_MANAGER_ERROR_INVALID_OPERATION;
        }
 
-       gint64 end_time = g_get_monotonic_time() + RM_RESOURCE_TIMEOUT * G_TIME_SPAN_SECOND;
+       gint64 end_time = g_get_monotonic_time() + RM_RESOURCE_TIMEOUT * G_TIME_SPAN_MILLISECOND;
        MM_RM_DEBUG("Waiting for acquire rset %p...", rset);
        if (!g_cond_wait_until(&rset->cond, &rset->lock, end_time)) {
                MM_RM_ERROR("Could not acquire rset %p", rset);
@@ -169,7 +169,7 @@ int _mm_resource_manager_rset_release(mm_resource_manager_rset_s *rset)
                return MM_RESOURCE_MANAGER_ERROR_INVALID_OPERATION;
        }
 
-       gint64 end_time = g_get_monotonic_time() + RM_RESOURCE_TIMEOUT * G_TIME_SPAN_SECOND;
+       gint64 end_time = g_get_monotonic_time() + RM_RESOURCE_TIMEOUT * G_TIME_SPAN_MILLISECOND;
        MM_RM_DEBUG("Waiting for release rset %p...", rset);
        if (!g_cond_wait_until(&rset->cond, &rset->lock, end_time)) {
                MM_RM_ERROR("Could not release rset %p", rset);
@@ -198,7 +198,7 @@ int _mm_resource_manager_rset_destroy(mm_resource_manager_rset_s *rset)
                        if (mrp_res_release_resource_set(rset->mrp_rset))
                                MM_RM_ERROR("Failed to release rset %p", rset->mrp_rset);
 
-                       gint64 end_time = g_get_monotonic_time() + RM_RESOURCE_TIMEOUT * G_TIME_SPAN_SECOND;
+                       gint64 end_time = g_get_monotonic_time() + RM_RESOURCE_TIMEOUT * G_TIME_SPAN_MILLISECOND;
                        MM_RM_DEBUG("Waiting for release rset...");
                        if (!g_cond_wait_until(&rset->cond, &rset->lock, end_time)) {
                                MM_RM_ERROR("Timeout elapsed");
index 87c1152..e92793d 100644 (file)
@@ -35,7 +35,7 @@
 #define MM_RESOURCE_MANAGER_RESERVED_PART_ARRAY_SIZE 4 /* preallocated size */
 #define MM_RESOURCE_MANAGER_RESERVED_CALLBACK_ARRAY_SIZE 32 /* preallocated size */
 #define MM_RESOURCE_MANGER_NOT_FOUND -1
-#define RELEASE_CB_SYNC_TIMEOUT 5 /* seconds */
+#define RELEASE_CB_SYNC_TIMEOUT 300 /* miliseconds */
 
 
 
@@ -751,7 +751,7 @@ static gboolean __poll(struct pollfd sync, mm_resource_manager_id id, short even
                sync.events = events;
                sync.revents = 0;
 
-               ret = poll(&sync, 1, RELEASE_CB_SYNC_TIMEOUT * 1000);
+               ret = poll(&sync, 1, RELEASE_CB_SYNC_TIMEOUT);
 
                if (ret == -1) {
                        errsv = errno;
index 6bf014e..12bd79a 100644 (file)
@@ -340,7 +340,7 @@ int _mm_resource_manager_mark_for_release(mm_resource_manager_h rm, mm_resource_
 
        /* FIXME : We should consider resource lock's vulnerability because of using global variable of 'handles_lock' */
        if (handle->release_cb.is_invoked) {
-               MM_RM_DEBUG("Resource %p (%s) release is executing in RM #%"PRIu64,
+               MM_RM_DEBUG("Skip resource %p (%s) of RM #%"PRIu64" because release cb will be executed soon",
                        resource, _mm_resource_manager_get_res_str(resource->type), resource_id);
                __mm_resource_handles_unlock();
                resource->state = MM_RESOURCE_MANAGER_RES_STATE_FOR_RELEASE;