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

Reply via email to