---
src/log/logd/lgs_stream.cc | 44 +++++++++++++++++++++++++++++++-------------
1 file changed, 31 insertions(+), 13 deletions(-)
diff --git a/src/log/logd/lgs_stream.cc b/src/log/logd/lgs_stream.cc
index 65689d6..4f7c3f8 100644
--- a/src/log/logd/lgs_stream.cc
+++ b/src/log/logd/lgs_stream.cc
@@ -623,19 +623,37 @@ SaAisErrorT lgs_create_rt_appstream(log_stream_t *const
stream) {
NULL};
{
- /**
- * Have to have retry for Rt creation.
- * Rt update could consider removing retry to avoid blocking
- */
- rc = immutil_saImmOiRtObjectCreate_2(
- lgs_cb->immOiHandle, const_cast<SaImmClassNameT>("SaLogStream"),
- parentName, attrValues);
- free(dndup);
-
- if (rc != SA_AIS_OK) {
- LOG_WA("saImmOiRtObjectCreate_2 returned %u for %s, parent %s", rc,
- stream->name.c_str(), parent_name);
- }
+ uint16_t count = 0;
+ rc = immutil_saImmOiRtObjectCreate_2(
+ lgs_cb->immOiHandle, const_cast<SaImmClassNameT>("SaLogStream"),
+ parentName, attrValues);
+
+ while (((rc == SA_AIS_ERR_TIMEOUT) || (rc == SA_AIS_ERR_BAD_HANDLE))
+ && (count < 10)) {
+ LOG_WA(
+ "immutil_saImmOiRtObjectCreate_2 returned %u for %s, parent
%s",
+ rc, stream->name.c_str(), parent_name);
+
+ if ( rc == SA_AIS_ERR_BAD_HANDLE ) {
+ saImmOiFinalize(lgs_cb->immOiHandle);
+ lgs_cb->immOiHandle = 0;
+ lgs_cb->immSelectionObject = -1;
+ /* Initiate IMM reinitializtion */
+ lgs_imm_impl_reinit_nonblocking(lgs_cb);
+ }
+ count++;
+ osaf_nanosleep(&kHundredMilliseconds);
+ rc = immutil_saImmOiRtObjectCreate_2(
+ lgs_cb->immOiHandle, const_cast<SaImmClassNameT>("SaLogStream"),
+ parentName, attrValues);
+ }
+ free(dndup);
+
+ if (rc != SA_AIS_OK) {
+ LOG_WA(
+ "saImmOiRtObjectCreate_2 returned %u for %s, parent %s",
+ rc, stream->name.c_str(), parent_name);
+ }
}
}
--
2.7.4
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel