Hi Hung,

Reviewed the code.
Ack from me.

Thanks,
Zoran

-----Original Message-----
From: Hung Nguyen [mailto:[email protected]] 
Sent: den 4 juli 2016 12:39
To: Zoran Milinkovic; [email protected]
Cc: [email protected]
Subject: [PATCH 1 of 1] imm: Return ERR_NO_RESOURCES to IMM when PBE fails to 
get ccb outcome [#1904]

 osaf/libs/common/immsv/immpbe_dump.cc            |  4 ++--
 osaf/services/saf/immsv/immpbed/immpbe_daemon.cc |  2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)


When getting ccb outcome after a restart, if PBE fails to find the CCB, 
ERR_NO_RESOURCES will be returned to IMM server.
That way the ccb will be marked as resource aborted, and user will be able to 
retry the ccb.

diff --git a/osaf/libs/common/immsv/immpbe_dump.cc 
b/osaf/libs/common/immsv/immpbe_dump.cc
--- a/osaf/libs/common/immsv/immpbe_dump.cc
+++ b/osaf/libs/common/immsv/immpbe_dump.cc
@@ -3054,7 +3054,7 @@ SaAisErrorT getCcbOutcomeFromPbe(void* d
        sqlite3* dbHandle = (sqlite3 *) db_handle;
        sqlite3_stmt *stmt;
        int rc=0;
-       SaAisErrorT err = SA_AIS_ERR_BAD_OPERATION;
+       SaAisErrorT err = SA_AIS_ERR_NO_RESOURCES;
        bool badfile=false;
 
        TRACE_ENTER2("get Outcome for ccb:%llu", ccbId);
@@ -3068,7 +3068,7 @@ SaAisErrorT getCcbOutcomeFromPbe(void* d
        if(rc == SQLITE_DONE) {
                sqlite3_reset(stmt);
                LOG_NO("getCcbOutcomeFromPbe: Could not find ccb %llu presume 
ABORT", ccbId);
-               err = SA_AIS_ERR_BAD_OPERATION;
+               err = SA_AIS_ERR_NO_RESOURCES;
        } else if(rc != SQLITE_ROW) {
                LOG_ER("SQL statement ('%s') failed because:\n %s",
                                preparedSql[SQL_SEL_CCB_COMMITS], 
sqlite3_errmsg(dbHandle));
diff --git a/osaf/services/saf/immsv/immpbed/immpbe_daemon.cc 
b/osaf/services/saf/immsv/immpbed/immpbe_daemon.cc
--- a/osaf/services/saf/immsv/immpbed/immpbe_daemon.cc
+++ b/osaf/services/saf/immsv/immpbed/immpbe_daemon.cc
@@ -1377,7 +1377,7 @@ static SaAisErrorT saImmOiCcbCompletedCa
 
        if ((ccbUtilCcbData = ccbutil_findCcbData(ccbId)) == NULL) {
                LOG_WA("Failed to find CCB object for %llx/%llu - checking DB 
file for outcome", ccbId, ccbId);
-               rc = getCcbOutcomeFromPbe(sDbHandle, ccbId, sEpoch);/* 
rc=BAD_OPERATION or OK */
+               rc = getCcbOutcomeFromPbe(sDbHandle, ccbId, sEpoch);/* 
rc=NO_RESOURCES or OK */
                (void) ccbutil_getCcbData(ccbId); /*generate an empty record*/
                goto done;
        }

------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to