From 6239fdea536208ca8d0f6d2873d91d60abebad0d Mon Sep 17 00:00:00 2001 From: Kyeonghun Lee Date: Tue, 11 Oct 2016 14:33:38 +0900 Subject: [PATCH] fix msg-server boot timing issue Change-Id: I4e6827b8942fe562dc456ef057467fcdc92e23ff Signed-off-by: Kyeonghun Lee --- framework/storage-handler/MsgStorageManager.cpp | 16 ++++++++++++++++ packaging/msg-server.service | 2 +- utils/MsgSqliteWrapper.cpp | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/framework/storage-handler/MsgStorageManager.cpp b/framework/storage-handler/MsgStorageManager.cpp index 16d6505..6acf115 100755 --- a/framework/storage-handler/MsgStorageManager.cpp +++ b/framework/storage-handler/MsgStorageManager.cpp @@ -34,6 +34,7 @@ #include "MsgPluginManager.h" #include "MsgStorageHandler.h" +#define MSG_DB_ACCESS_MAX_COUNT 10 #define MSG_DB_VERSION 2 /*================================================================================================== @@ -142,6 +143,21 @@ void MsgStoUpdateDBVersion() msg_error_t MsgStoDBVerCheck() { MsgDbHandler *dbHandle = getDbHandle(); +#if 1 /* TODO: need to improve this code later */ + int cnt = MSG_DB_ACCESS_MAX_COUNT; + while (cnt--) { + if (dbHandle->connect() == MSG_SUCCESS) + break; + + if (cnt == 0) { + MSG_ERR("db connect try count over %d", MSG_DB_ACCESS_MAX_COUNT); + return MSG_ERR_DB_CONNECT; + } + + MSG_DEBUG("waiting for mount /opt/usr/ cnt [%d]", cnt); + sleep(1); + } +#endif int dbVersion = 0; char sqlQuery[MAX_QUERY_LEN+1]; diff --git a/packaging/msg-server.service b/packaging/msg-server.service index 7b764b2..127f111 100755 --- a/packaging/msg-server.service +++ b/packaging/msg-server.service @@ -1,6 +1,6 @@ [Unit] Description=Message server -After=contacts-service.service lazy_mount.service +After=contacts-service.service lazy_mount.service systemd-logind.service [Service] Type=simple diff --git a/utils/MsgSqliteWrapper.cpp b/utils/MsgSqliteWrapper.cpp index 21cb34a..1f66b23 100755 --- a/utils/MsgSqliteWrapper.cpp +++ b/utils/MsgSqliteWrapper.cpp @@ -80,9 +80,11 @@ msg_error_t MsgDbHandler::connect() return MSG_SUCCESS; } else if (ret == SQLITE_PERM){ MSG_DEBUG("DB Connect Fail [%d]", ret); + disconnect(); return MSG_ERR_PERMISSION_DENIED; } else { MSG_DEBUG("DB Connect Fail [%d]", ret); + disconnect(); return MSG_ERR_DB_CONNECT; } } else { -- 2.7.4