Hi Praveen, Ack for code review, minor change with [M]
Thanks, Minh On 28/11/16 20:15, [email protected] wrote: > osaf/services/saf/ntfsv/ntfs/NtfAdmin.cc | 2 +- > osaf/services/saf/ntfsv/ntfs/NtfClient.cc | 2 ++ > osaf/services/saf/ntfsv/ntfs/NtfSubscription.cc | 7 +++++++ > osaf/services/saf/ntfsv/ntfs/NtfSubscription.hh | 1 + > osaf/services/saf/ntfsv/ntfs/ntfs_com.c | 3 ++- > osaf/services/saf/ntfsv/ntfs/ntfs_mds.c | 4 ++-- > 6 files changed, 15 insertions(+), 4 deletions(-) > > > syslog gets flooded with following messages: > Nov 24 12:38:00 SC-1 osafntfd[11771]: ER ntfs_mds_msg_send FAILED > Nov 24 12:38:00 SC-1 osafntfd[11771]: ER ntfs_mds_msg_send to ntfa failed rc: > 2 > Nov 24 12:38:00 SC-1 osafntfd[11771]: ER ntfs_mds_msg_send FAILED > > In reported problem, an application like ntfsend is continuously sending > notifications. Other subscriber application like ntfsubscribe with matching > filter criteria is receiving those notifications. When subscriber suddenly > exits, > NTFS receives MDS_DOWN event for it. At the same time MDS is continuously > delievering > notifications sent by the sender app to the NTFS. NTFS posts internal events > for > both notification messages and NTFA down messages with HIGH and NORMAL > priority respectively. > Since priority of NTFA down event is NORMAL, NTFS processes down event > relatively late > compare to notificatin send messages. So notification send messages are > processed before > NTFA down events. While sending these notification to the subscriber, > ncsmds_api returns > failure because MDS has already cleared subscriber data like mds_dest. > > With this patch, NTFS will process NTFA down event with HIGH priority. > Also LOG_ER is converted to LOG_WA or trace at some places. > > diff --git a/osaf/services/saf/ntfsv/ntfs/NtfAdmin.cc > b/osaf/services/saf/ntfsv/ntfs/NtfAdmin.cc > --- a/osaf/services/saf/ntfsv/ntfs/NtfAdmin.cc > +++ b/osaf/services/saf/ntfsv/ntfs/NtfAdmin.cc > @@ -540,7 +540,7 @@ void NtfAdmin::discardedAdd(unsigned int > } > else > { > - LOG_ER("client %u not found", clientId); > + LOG_WA("client %u not found", clientId); > } > } > > diff --git a/osaf/services/saf/ntfsv/ntfs/NtfClient.cc > b/osaf/services/saf/ntfsv/ntfs/NtfClient.cc > --- a/osaf/services/saf/ntfsv/ntfs/NtfClient.cc > +++ b/osaf/services/saf/ntfsv/ntfs/NtfClient.cc > @@ -55,6 +55,8 @@ NtfClient::~NtfClient() { > SubscriptionMap::iterator pos; > for (pos = subscriptionMap.begin(); pos != subscriptionMap.end(); pos++) { > NtfSubscription* subscription = pos->second; > + TRACE("For subscription:'%u', num of discarded Notifications: '%u'", > + subscription->getSubscriptionId(), subscription->discardedListSize()); > delete subscription; > } > // delete all readers > diff --git a/osaf/services/saf/ntfsv/ntfs/NtfSubscription.cc > b/osaf/services/saf/ntfsv/ntfs/NtfSubscription.cc > --- a/osaf/services/saf/ntfsv/ntfs/NtfSubscription.cc > +++ b/osaf/services/saf/ntfsv/ntfs/NtfSubscription.cc > @@ -277,3 +277,10 @@ void NtfSubscription::printInfo() { > TRACE("Subscription information"); > TRACE(" subscriptionId %u", subscriptionId_); > } > +/** > + * Returns size of discarded list. > + */ > +unsigned int NtfSubscription::discardedListSize() { > + return discardedNotificationIdList.size(); > +} > + > diff --git a/osaf/services/saf/ntfsv/ntfs/NtfSubscription.hh > b/osaf/services/saf/ntfsv/ntfs/NtfSubscription.hh > --- a/osaf/services/saf/ntfsv/ntfs/NtfSubscription.hh > +++ b/osaf/services/saf/ntfsv/ntfs/NtfSubscription.hh > @@ -41,6 +41,7 @@ class NtfSubscription{ > void sendNotification(NtfSmartPtr& notification, NtfClient *client); > void discardedAdd(SaNtfIdentifierT n_id); > void discardedClear(); > + unsigned int discardedListSize(); > void syncRequest(NCS_UBAID *uba); > private: > FilterMap filterMap; > diff --git a/osaf/services/saf/ntfsv/ntfs/ntfs_com.c > b/osaf/services/saf/ntfsv/ntfs/ntfs_com.c > --- a/osaf/services/saf/ntfsv/ntfs/ntfs_com.c > +++ b/osaf/services/saf/ntfsv/ntfs/ntfs_com.c > @@ -305,7 +305,8 @@ int send_notification_lib(ntfsv_send_not > MDS_SEND_PRIORITY_HIGH); > if (rc != NCSCC_RC_SUCCESS) { > discarded = NTFS_NOTIFICATION_DISCARDED; > - LOG_ER("ntfs_mds_msg_send to ntfa failed rc: %d", (int)rc); > + //This notification will be sent again as a discarded > notification. > + TRACE_1("ntfs_mds_msg_send to ntfa failed rc: %d", (int)rc); > } > /* Allways confirm if not success notification will be put in discarded > list. */ > notificationSentConfirmed(client_id, dispatchInfo->subscriptionId, > *header->notificationId, discarded); > diff --git a/osaf/services/saf/ntfsv/ntfs/ntfs_mds.c > b/osaf/services/saf/ntfsv/ntfs/ntfs_mds.c > --- a/osaf/services/saf/ntfsv/ntfs/ntfs_mds.c > +++ b/osaf/services/saf/ntfsv/ntfs/ntfs_mds.c > @@ -938,7 +938,7 @@ static uint32_t mds_svc_event(struct ncs > evt->info.mds_info.mds_dest_id = > info->info.svc_evt.i_dest; > > /* Push the event and we are done */ > - if (m_NCS_IPC_SEND(&ntfs_cb->mbx, evt, > NCS_IPC_PRIORITY_NORMAL) != NCSCC_RC_SUCCESS) { > + if (m_NCS_IPC_SEND(&ntfs_cb->mbx, evt, > NCS_IPC_PRIORITY_HIGH) != NCSCC_RC_SUCCESS) { > TRACE("ipc send failed"); > ntfs_evt_destroy(evt); > rc = NCSCC_RC_FAILURE; > @@ -1287,7 +1287,7 @@ uint32_t ntfs_mds_msg_send(ntfs_cb_t *cb > /* send the message */ > rc = ncsmds_api(&mds_info); > if (rc != NCSCC_RC_SUCCESS) { > - LOG_ER("ntfs_mds_msg_send FAILED"); > + LOG_WA("ntfs_mds_msg_send FAILED"); [M]: It's good to add rc to LOG_WA > } > return rc; > } > ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today.http://sdm.link/xeonphi _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
