add retry logic for dbus call error 32/80932/9 accepted/tizen/common/20160809.183640 accepted/tizen/ivi/20160809.075009 accepted/tizen/mobile/20160809.074907 submit/tizen/20160809.003913
authorJeesun Kim <iamjs.kim@samsung.com>
Thu, 21 Jul 2016 04:00:26 +0000 (13:00 +0900)
committerJeesun Kim <iamjs.kim@samsung.com>
Tue, 9 Aug 2016 02:29:36 +0000 (11:29 +0900)
Change-Id: Ib46e88a257c01c3f6c2842c9b60edd9297f35db4

client/cal_client_db.c
client/cal_client_dbus.c
client/cal_client_dbus.h
packaging/calendar-service.spec

index a5711bd..3214976 100644 (file)
 #include "cal_client_handle.h"
 #include "cal_client_db_helper.h"
 
+#define CAL_DBUS_RETRY_MAX 1
+#define CAL_DBUS_RETRY_CALL(func) \
+       int _d_ret = -1; \
+       int _d_count = 0; \
+       while (CALENDAR_ERROR_NONE != _d_ret) { \
+               _d_ret = func; \
+               if (CALENDAR_ERROR_NONE == _d_ret) \
+                       break; \
+               _d_count++; \
+               if (CAL_DBUS_RETRY_MAX < _d_count) { \
+                       ERR("retry call: reach max(%d)", _d_count); \
+                       break; \
+               } \
+               ERR("retry call:count(%d)", _d_count); \
+               cal_dbus_recovery(); \
+       } \
+       ret = _d_ret;
+
 API int calendar_db_insert_record(calendar_record_h record, int* id)
 {
        CAL_FN_CALL();
@@ -34,7 +52,8 @@ API int calendar_db_insert_record(calendar_record_h record, int* id)
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_insert_record(handle, record, id);
+       CAL_DBUS_RETRY_CALL(cal_dbus_insert_record(handle, record, id));
+       return ret;
 }
 
 API int calendar_db_update_record(calendar_record_h record)
@@ -47,7 +66,8 @@ API int calendar_db_update_record(calendar_record_h record)
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_update_record(handle, record);
+       CAL_DBUS_RETRY_CALL(cal_dbus_update_record(handle, record));
+       return ret;
 }
 
 API int calendar_db_delete_record(const char* view_uri, int id)
@@ -61,7 +81,8 @@ API int calendar_db_delete_record(const char* view_uri, int id)
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_delete_record(handle, view_uri, id);
+       CAL_DBUS_RETRY_CALL(cal_dbus_delete_record(handle, view_uri, id));
+       return ret;
 }
 
 API int calendar_db_replace_record(calendar_record_h record, int record_id)
@@ -74,7 +95,8 @@ API int calendar_db_replace_record(calendar_record_h record, int record_id)
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_replace_record(handle, record, record_id);
+       CAL_DBUS_RETRY_CALL(cal_dbus_replace_record(handle, record, record_id));
+       return ret;
 }
 
 API int calendar_db_get_record(const char* view_uri, int id, calendar_record_h* out_record)
@@ -88,7 +110,8 @@ API int calendar_db_get_record(const char* view_uri, int id, calendar_record_h*
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_get_record(handle, view_uri, id, out_record);
+       CAL_DBUS_RETRY_CALL(cal_dbus_get_record(handle, view_uri, id, out_record));
+       return ret;
 }
 
 API int calendar_db_get_all_records(const char* view_uri, int offset, int limit, calendar_list_h* out_list)
@@ -102,7 +125,8 @@ API int calendar_db_get_all_records(const char* view_uri, int offset, int limit,
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_get_all_records(handle, view_uri, offset, limit, out_list);
+       CAL_DBUS_RETRY_CALL(cal_dbus_get_all_records(handle, view_uri, offset, limit, out_list));
+       return ret;
 }
 
 API int calendar_db_get_records_with_query(calendar_query_h query, int offset, int limit, calendar_list_h* out_list)
@@ -116,7 +140,8 @@ API int calendar_db_get_records_with_query(calendar_query_h query, int offset, i
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_get_records_with_query(handle, query, offset, limit, out_list);
+       CAL_DBUS_RETRY_CALL(cal_dbus_get_records_with_query(handle, query, offset, limit, out_list));
+       return ret;
 }
 
 API int calendar_db_clean_after_sync(int book_id, int calendar_db_version)
@@ -128,7 +153,8 @@ API int calendar_db_clean_after_sync(int book_id, int calendar_db_version)
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_clean_after_sync(handle, book_id, calendar_db_version);
+       CAL_DBUS_RETRY_CALL(cal_dbus_clean_after_sync(handle, book_id, calendar_db_version));
+       return ret;
 }
 
 API int calendar_db_get_count(const char *view_uri, int *out_count)
@@ -141,7 +167,8 @@ API int calendar_db_get_count(const char *view_uri, int *out_count)
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_get_count(handle, view_uri, out_count);
+       CAL_DBUS_RETRY_CALL(cal_dbus_get_count(handle, view_uri, out_count));
+       return ret;
 }
 
 API int calendar_db_get_count_with_query(calendar_query_h query, int *out_count)
@@ -155,7 +182,8 @@ API int calendar_db_get_count_with_query(calendar_query_h query, int *out_count)
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_get_count_with_query(handle, query, out_count);
+       CAL_DBUS_RETRY_CALL(cal_dbus_get_count_with_query(handle, query, out_count));
+       return ret;
 }
 
 API int calendar_db_insert_records(calendar_list_h record_list, int** record_id_array, int* count)
@@ -177,7 +205,8 @@ API int calendar_db_insert_records(calendar_list_h record_list, int** record_id_
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_insert_records(handle, record_list, record_id_array, count);
+       CAL_DBUS_RETRY_CALL(cal_dbus_insert_records(handle, record_list, record_id_array, count));
+       return ret;
 }
 
 API int calendar_db_update_records(calendar_list_h record_list)
@@ -197,7 +226,8 @@ API int calendar_db_update_records(calendar_list_h record_list)
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_update_records(handle, record_list);
+       CAL_DBUS_RETRY_CALL(cal_dbus_update_records(handle, record_list));
+       return ret;
 }
 
 API int calendar_db_delete_records(const char* view_uri, int record_id_array[], int count)
@@ -210,7 +240,8 @@ API int calendar_db_delete_records(const char* view_uri, int record_id_array[],
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_delete_records(handle, view_uri, record_id_array, count);
+       CAL_DBUS_RETRY_CALL(cal_dbus_delete_records(handle, view_uri, record_id_array, count));
+       return ret;
 }
 
 API int calendar_db_replace_records(calendar_list_h record_list, int *record_id_array, int count)
@@ -232,7 +263,8 @@ API int calendar_db_replace_records(calendar_list_h record_list, int *record_id_
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_replace_records(handle, record_list, record_id_array, count);
+       CAL_DBUS_RETRY_CALL(cal_dbus_replace_records(handle, record_list, record_id_array, count));
+       return ret;
 }
 
 API int calendar_db_get_changes_by_version(const char* view_uri, int book_id,
@@ -248,8 +280,9 @@ API int calendar_db_get_changes_by_version(const char* view_uri, int book_id,
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_get_changes_by_version(handle, view_uri, book_id,
-                       calendar_db_version, record_list, current_version);
+       CAL_DBUS_RETRY_CALL(cal_dbus_get_changes_by_version(handle, view_uri, book_id,
+                       calendar_db_version, record_list, current_version));
+       return ret;
 }
 
 API int calendar_db_get_current_version(int* current_version)
@@ -262,7 +295,8 @@ API int calendar_db_get_current_version(int* current_version)
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_get_current_version(handle, current_version);
+       CAL_DBUS_RETRY_CALL(cal_dbus_get_current_version(handle, current_version));
+       return ret;
 }
 
 API int calendar_db_add_changed_cb(const char* view_uri, calendar_db_changed_cb callback, void* user_data)
@@ -275,7 +309,8 @@ API int calendar_db_add_changed_cb(const char* view_uri, calendar_db_changed_cb
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_add_changed_cb(handle, view_uri, callback, user_data);
+       CAL_DBUS_RETRY_CALL(cal_dbus_add_changed_cb(handle, view_uri, callback, user_data));
+       return ret;
 }
 
 API int calendar_db_remove_changed_cb(const char* view_uri, calendar_db_changed_cb callback, void* user_data)
@@ -288,7 +323,8 @@ API int calendar_db_remove_changed_cb(const char* view_uri, calendar_db_changed_
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_remove_changed_cb(handle, view_uri, callback, user_data);
+       CAL_DBUS_RETRY_CALL(cal_dbus_remove_changed_cb(handle, view_uri, callback, user_data));
+       return ret;
 }
 
 API int calendar_db_insert_vcalendars(const char* vcalendar_stream, int **record_id_array, int *count)
@@ -303,7 +339,8 @@ API int calendar_db_insert_vcalendars(const char* vcalendar_stream, int **record
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_insert_vcalendars(handle, vcalendar_stream, record_id_array, count);
+       CAL_DBUS_RETRY_CALL(cal_dbus_insert_vcalendars(handle, vcalendar_stream, record_id_array, count));
+       return ret;
 }
 
 API int calendar_db_replace_vcalendars(const char* vcalendar_stream, int *record_id_array, int count)
@@ -317,7 +354,8 @@ API int calendar_db_replace_vcalendars(const char* vcalendar_stream, int *record
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_replace_vcalendars(handle, vcalendar_stream, record_id_array, count);
+       CAL_DBUS_RETRY_CALL(cal_dbus_replace_vcalendars(handle, vcalendar_stream, record_id_array, count));
+       return ret;
 }
 
 API int calendar_db_get_last_change_version(int* last_version)
@@ -330,7 +368,8 @@ API int calendar_db_get_last_change_version(int* last_version)
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_get_last_change_version(handle, last_version);
+       CAL_DBUS_RETRY_CALL(cal_dbus_get_last_change_version(handle, last_version));
+       return ret;
 }
 
 API int calendar_db_get_changes_exception_by_version(const char* view_uri,
@@ -347,6 +386,8 @@ API int calendar_db_get_changes_exception_by_version(const char* view_uri,
 
        ret = cal_client_handle_get_p(&handle);
        RETVM_IF(CALENDAR_ERROR_NONE != ret, ret, "cal_client_handle_get_p() Fail(%d)", ret);
-       return cal_dbus_get_changes_exception_by_version(handle, view_uri, original_event_id, calendar_db_version, record_list);
+       CAL_DBUS_RETRY_CALL(cal_dbus_get_changes_exception_by_version(handle, view_uri,
+                               original_event_id, calendar_db_version, record_list));
+       return ret;
 }
 
index 7112788..d261bda 100644 (file)
@@ -172,6 +172,8 @@ static int _unregister_resource(void)
 
 int cal_dbus_start(void)
 {
+       CAL_FN_CALL();
+
        if (cal_dbus_object) {
                DBG("Already exists");
                return CALENDAR_ERROR_NONE;
@@ -212,6 +214,8 @@ int cal_dbus_start(void)
 
 int cal_dbus_stop(void)
 {
+       CAL_FN_CALL();
+
        if (NULL == cal_dbus_object) {
                /* LCOV_EXCL_START */
                ERR("No object");
index ecc04bd..93b6a77 100644 (file)
@@ -71,5 +71,6 @@ int cal_dbus_insert_vcalendars(calendar_h handle, const char *stream, int **out_
                int *out_count);
 int cal_dbus_replace_vcalendars(calendar_h handle, const char *stream, int *ids,
                int count);
+int cal_dbus_recovery(void);
 
 #endif /* __CAL_CLIENT_DBUS_H__ */
index acfc0ac..38d2cc4 100644 (file)
@@ -1,6 +1,6 @@
 Name:       calendar-service
 Summary:    DB library for calendar
-Version:    0.1.165
+Version:    0.1.166
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0