Can see the following log during controller switchover with lots of AMF objects in the config: saNtfFilter failed: 6.
msgd is listening for every NTF notification which occurs in the system. If there is a failover there can be a large number of notifications which get generated. msgd should setup the filter when it registers with NTF to only get notifications for the ones it cares about. --- src/msg/msgd/mqd_ntf.cc | 42 +++++++++++------------------------------ 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/src/msg/msgd/mqd_ntf.cc b/src/msg/msgd/mqd_ntf.cc index 041aa60f9..1924d5a0f 100644 --- a/src/msg/msgd/mqd_ntf.cc +++ b/src/msg/msgd/mqd_ntf.cc @@ -171,19 +171,6 @@ static void updateQueueGroup(MQD_CB *cb, TRACE_LEAVE(); } -static bool isMSGStateChange(const SaNtfClassIdT &classId) { - TRACE_ENTER(); - bool status(false); - - if (classId.vendorId == SA_NTF_VENDOR_ID_SAF && - classId.majorId == SA_SVC_MSG) { - status = true; - } - - TRACE_LEAVE2("%i", status); - return status; -} - static void handleMsgObjectStateChangeNotification( MQD_CB *cb, const SaNtfStateChangeNotificationT& stateChangeNotification) { @@ -219,22 +206,6 @@ static void handleMsgObjectStateChangeNotification( TRACE_LEAVE(); } -static void handleStateChangeNotification( - MQD_CB *cb, - const SaNtfStateChangeNotificationT& stateChangeNotification) { - TRACE_ENTER(); - - if (stateChangeNotification.notificationHeader.notificationClassId && - isMSGStateChange( - *stateChangeNotification.notificationHeader.notificationClassId)) { - handleMsgObjectStateChangeNotification(cb, stateChangeNotification); - } else { - TRACE("ignoring non-MSG state change notification"); - } - - TRACE_LEAVE(); -} - void mqdNtfNotificationCallback(SaNtfSubscriptionIdT subscriptionId, const SaNtfNotificationsT *notification) { TRACE_ENTER(); @@ -257,7 +228,7 @@ void mqdNtfNotificationCallback(SaNtfSubscriptionIdT subscriptionId, } if (notification->notificationType == SA_NTF_TYPE_STATE_CHANGE) { - handleStateChangeNotification( + handleMsgObjectStateChangeNotification( cb, notification->notification.stateChangeNotification); } else { @@ -280,7 +251,7 @@ SaAisErrorT mqdInitNtfSubscriptions(SaNtfHandleT ntfHandle) { rc = saNtfStateChangeNotificationFilterAllocate( ntfHandle, - &filter, 0, 0, 0, 0, 0, 0); + &filter, 1, 0, 0, 1, 0, 0); if (rc != SA_AIS_OK) { LOG_ER("saNtfAttributeChangeNotificationFilterAllocate" @@ -289,6 +260,15 @@ SaAisErrorT mqdInitNtfSubscriptions(SaNtfHandleT ntfHandle) { break; } + *filter.notificationFilterHeader.eventTypes = SA_NTF_OBJECT_STATE_CHANGE; + + filter.notificationFilterHeader.notificationClassIds->vendorId = + SA_NTF_VENDOR_ID_SAF; + filter.notificationFilterHeader.notificationClassIds->majorId = SA_SVC_MSG; + filter.notificationFilterHeader.notificationClassIds->minorId = + SA_MSG_DEST_CAPACITY_STATUS; + + SaNtfNotificationTypeFilterHandlesT filterHandles = { 0, 0, filter.notificationFilterHandle, 0, 0 }; -- 2.17.2 ----------------------------------------------------------------------------------------------------------------------- Notice: This e-mail together with any attachments may contain information of Ribbon Communications Inc. that is confidential and/or proprietary for the sole use of the intended recipient. Any review, disclosure, reliance or distribution by others or forwarding without express permission is strictly prohibited. If you are not the intended recipient, please notify the sender immediately and then delete all copies, including any attachments. ----------------------------------------------------------------------------------------------------------------------- _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel