osaf/services/saf/immsv/immpbed/immpbe.cc | 15 +++++++--------
osaf/services/saf/immsv/immpbed/immpbe_daemon.cc | 8 ++++++--
2 files changed, 13 insertions(+), 10 deletions(-)
Errors returned from calls in the library:
osaf/libs/common/immsv/immpbe_dump.cc
where the sqlite handle has been closed, are caught by the PBE and result
in the PBE exiting. This is a correction to the fix done for ticket #869.
That ticket altered these library routines not to exit on error, to allow
the users to clean up temporary sqlite files before process exit.
The same library functions may also fail (and close the sqlite handle)
during normal PBE processing (not during initial generation of the file).
This ticket fixes so that the PBE exits, instead of continuing to execute
with a closed sqlite handle.
diff --git a/osaf/services/saf/immsv/immpbed/immpbe.cc
b/osaf/services/saf/immsv/immpbed/immpbe.cc
--- a/osaf/services/saf/immsv/immpbed/immpbe.cc
+++ b/osaf/services/saf/immsv/immpbed/immpbe.cc
@@ -214,8 +214,8 @@ int main(int argc, char* argv[])
/* getClassIdMap */
if(dbHandle) {
objCount = verifyPbeState(immHandle, &classIdMap,
dbHandle);
- TRACE("Classes Verified");
- if(objCount <= 0) {dbHandle = NULL;}
+ TRACE("Classes Verified?:%d", objCount);
+ if(objCount <= 0) {dbHandle = NULL;}
}
if(!dbHandle) {
@@ -235,7 +235,7 @@ int main(int argc, char* argv[])
TRACE_1("Opened persistent repository %s",
filename.c_str());
} else {
/* Any localTmpFile was removed in pbeRepositoryInit */
- LOG_ER("osafimmpbed: pbe intialize failed - exiting");
+ LOG_ER("immpbe.cc: pbe intialize failed - exiting");
exit(1);
}
@@ -247,7 +247,7 @@ int main(int argc, char* argv[])
unlink(localTmpFilename.c_str());
localTmpFilename.clear();
}
- LOG_ER("immPbe.cc exiting (line:%u)", __LINE__);
+ LOG_ER("immpbe.cc: dumpClassesToPbe failed - exiting
(line:%u)", __LINE__);
exit(1);
}
TRACE("Dump classes OK");
@@ -261,7 +261,7 @@ int main(int argc, char* argv[])
unlink(localTmpFilename.c_str());
localTmpFilename.clear();
}
- LOG_ER("immPbe.cc exiting (line:%u)", __LINE__);
+ LOG_ER("immpbe.cc dumpObjectsToPbe failed - exiting
(line:%u)", __LINE__);
exit(1);
}
TRACE("Dump objects OK");
@@ -285,7 +285,7 @@ int main(int argc, char* argv[])
to be used by the pbeDaemon.
*/
if(fileReOpened) {
- LOG_ER("osafimmpbed: will not re-open twice. immPbe.cc
exiting (line:%u)", __LINE__);
+ LOG_ER("immpbe.cc: will not re-open twice. immpbe.cc
exiting (line:%u)", __LINE__);
exit(1);
}
@@ -300,9 +300,8 @@ int main(int argc, char* argv[])
if(!dbHandle) {
dbHandle = pbeRepositoryInit(filename.c_str(), false,
localTmpFilename);
if(!dbHandle) {
- LOG_WA("osafimmpbed: pbe intialize failed - exiting");
+ LOG_WA("immpbe.cc: pbe intialize failed - exiting");
exit(1);
- /* TODO SYNC with pbe-file AND with IMMSv */
}
}
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
@@ -108,8 +108,8 @@ static SaAisErrorT sqlite_prepare_ccb(Sa
sClassIdMap, sDbHandle,
++sObjCount,
ccbUtilOperationData->param.create.className, ccbId))
{
- rc =
SA_AIS_ERR_FAILED_OPERATION;
- goto ccb_abort;
+ LOG_ER("objectToPBE failed in
sqlite_prepare_ccb. Handle is closed - exiting");
+ exit(1);
}
} while (0);
break;
@@ -540,6 +540,10 @@ static void saImmOiAdminOperationCallbac
if(persistentExtent) {
TRACE_5("sObjCount:%u", sObjCount);
obj_count =
dumpInstancesOfClassToPBE(pbeOmHandle, sClassIdMap, className, &sObjCount,
sDbHandle);
+ if(obj_count < 0) {
+ LOG_ER("dumpInstncesOfClassesToPBE
failed in callback in PBE. sDbHandle is closed - exiting");
+ exit(1);
+ }
LOG_NO("PBE dumped %u objects of new class
definition for %s", obj_count, className.c_str());
TRACE_5("sObjCount:%u", sObjCount);
}
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel