Ack, with a trivial comment.

Thanks,
Mathi.

-----Original Message-----
From: Lennart Lund [mailto:lennart.l...@ericsson.com] 
Sent: Monday, March 10, 2014 8:37 PM
To: Mathivanan Naickan Palanivelu
Cc: opensaf-devel@lists.sourceforge.net
Subject: [PATCH 1 of 1] logsv: Fix handling of Om initialize / finalize when 
creating app stream [#804]

 osaf/services/saf/logsv/lgs/lgs_imm.c |  40 ++++++++++++++++++++++++++++-------
 1 files changed, 32 insertions(+), 8 deletions(-)


 - Make sure that finializing the Om interface is never done without
   a previous initialize.
 - Do not abort if Om finalize fail

diff --git a/osaf/services/saf/logsv/lgs/lgs_imm.c 
b/osaf/services/saf/logsv/lgs/lgs_imm.c
--- a/osaf/services/saf/logsv/lgs/lgs_imm.c
+++ b/osaf/services/saf/logsv/lgs/lgs_imm.c
@@ -1617,9 +1617,15 @@ static SaAisErrorT stream_create_and_con
        SaImmAttrValuesT_2 **attributes;
        int i = 0;
        log_stream_t *stream;
+       
+       int asetting = immutilWrapperProfile.errorsAreFatal;
[Mathi] 
You probably meant 'asserting'.

+       SaAisErrorT om_rc = SA_AIS_OK;
 
        TRACE_ENTER2("(%s)", dn);
 
+       (void)immutil_saImmOmInitialize(&omHandle, NULL, &immVersion);
+       (void)immutil_saImmOmAccessorInitialize(omHandle, &accessorHandle);
+
        strncpy((char *)objectName.value, dn, SA_MAX_NAME_LENGTH);
        objectName.length = strlen((char *)objectName.value);
 
@@ -1633,9 +1639,6 @@ static SaAisErrorT stream_create_and_con
        /* Happens to be the same, ugly! FIX */
        stream->streamType = stream_id;
 
-       (void)immutil_saImmOmInitialize(&omHandle, NULL, &immVersion);
-       (void)immutil_saImmOmAccessorInitialize(omHandle, &accessorHandle);
-
        /* Get all attributes of the object */
        if (immutil_saImmOmAccessorGet_2(accessorHandle, &objectName, NULL, 
&attributes) != SA_AIS_OK) {
                LOG_ER("Configuration for %s not found", objectName.value); @@ 
-1699,8 +1702,17 @@ static SaAisErrorT stream_create_and_con
                stream->logFileFormat = 
strdup(log_file_format[stream->streamType]);
 
  done:
-       (void)immutil_saImmOmAccessorFinalize(accessorHandle);
-       (void)immutil_saImmOmFinalize(omHandle);
+       /* Do not abort if error when finalizing */
+       immutilWrapperProfile.errorsAreFatal = 0;       /* Disable immutil 
abort */
+       om_rc = immutil_saImmOmAccessorFinalize(accessorHandle);
+       if (om_rc != SA_AIS_OK) {
+               LOG_NO("%s immutil_saImmOmAccessorFinalize() Fail 
%d",__FUNCTION__, om_rc);
+       }
+       om_rc = immutil_saImmOmFinalize(omHandle);
+       if (om_rc != SA_AIS_OK) {
+               LOG_NO("%s immutil_saImmOmFinalize() Fail %d",__FUNCTION__, 
om_rc);
+       }
+       immutilWrapperProfile.errorsAreFatal = asetting; /* Enable again */
 
        TRACE_LEAVE();
        return rc;
@@ -1729,9 +1741,12 @@ static SaAisErrorT read_logsv_config_obj
        int param_cnt = 0;
        int n;
 
+       int asetting = immutilWrapperProfile.errorsAreFatal;
+       SaAisErrorT om_rc = SA_AIS_OK;
+       
        TRACE_ENTER2("(%s)", dn);
 
-       /* NOTE: immutil init osaf_assert if error */
+       /* NOTE: immutil init will osaf_assert if error */
        (void) immutil_saImmOmInitialize(&omHandle, NULL, &immVersion);
        (void) immutil_saImmOmAccessorInitialize(omHandle, &accessorHandle);
 
@@ -1816,8 +1831,17 @@ static SaAisErrorT read_logsv_config_obj
        }
 
 done:
-       (void) immutil_saImmOmAccessorFinalize(accessorHandle);
-       (void) immutil_saImmOmFinalize(omHandle);
+       /* Do not abort if error when finalizing */
+       immutilWrapperProfile.errorsAreFatal = 0;       /* Disable immutil 
abort */
+       om_rc = immutil_saImmOmAccessorFinalize(accessorHandle);
+       if (om_rc != SA_AIS_OK) {
+               LOG_NO("%s immutil_saImmOmAccessorFinalize() Fail 
%d",__FUNCTION__, om_rc);
+       }
+       om_rc = immutil_saImmOmFinalize(omHandle);
+       if (om_rc != SA_AIS_OK) {
+               LOG_NO("%s immutil_saImmOmFinalize() Fail %d",__FUNCTION__, 
om_rc);
+       }
+       immutilWrapperProfile.errorsAreFatal = asetting; /* Enable again */
 
        TRACE_LEAVE();
        return rc;

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to