If ntfimcnd is restarted during ccb modify, the modify callback will not contain the invoke name( implementer name or admin owner name). In this case, the invoke name will be set to "unknown" and the ntfimcnd can continue with sending notification.
The notification will contain only op that receive by the ntfimcnd. It means notification will lost the op before ntfimcnd restarted. --- src/ntf/ntfimcnd/ntfimcn_imm.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/ntf/ntfimcnd/ntfimcn_imm.c b/src/ntf/ntfimcnd/ntfimcn_imm.c index 3c0a8c02a..2709b3337 100644 --- a/src/ntf/ntfimcnd/ntfimcn_imm.c +++ b/src/ntf/ntfimcnd/ntfimcn_imm.c @@ -376,9 +376,8 @@ get_operation_invoke_name_modify(SaImmOiCcbIdT ccbId, goto done; } } - /* If we get here no name is found! */ - LOG_ER("%s no name was found", __FUNCTION__); - osafassert(0); + osaf_extended_name_free(operation_invoke_name); + operation_invoke_name = NULL; done: TRACE_LEAVE(); @@ -558,6 +557,12 @@ saImmOiCcbObjectModifyCallback(SaImmOiHandleT immOiHandle, SaImmOiCcbIdT ccbId, } invoke_name_ptr = get_operation_invoke_name_modify(ccbId, attrMods); + // when ccb ntfimcnd restarted during ccb modification + if (invoke_name_ptr == NULL) { + invoke_name_ptr = malloc(sizeof(SaNameT)); + osaf_extended_name_lend("unknown", invoke_name_ptr); + } + ccbUtilCcbData->userData = invoke_name_ptr; } -- 2.17.1 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel