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

Reply via email to