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)
{
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...");
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)
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);
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);
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");
#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 */
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;
/* 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;