>If you block the caller in mds_mdtm_queue_add_unsent_msg() you have basically
>implemented a blocking send which is pointless.

No, after non-blocking send() fail , the message is added in unsent queue
. Before sending a new message, the unsent queue is checked and if present, the 
new message will be added to the queue. When the pollout comes on the fd(write 
fd), the messages in the queue are processed and sent. 

so we are postponing the send().




---

** [tickets:#607] Mds : tcp assert in MDS on cumulated unsent messages**

**Status:** assigned
**Milestone:** future
**Created:** Wed Oct 30, 2013 08:03 AM UTC by A V Mahesh (AVM)
**Last Updated:** Tue Oct 07, 2014 07:47 PM UTC
**Owner:** A V Mahesh (AVM)

Using the OpenSAF test program "logtest" and the latest opensaf configured with 
MDS/TCP crashes the log server in the assert in mds_mdtm_queue_add_unsent_msg():

======================================================================================
 ++tcp_cb->mdtm_tcp_unsent_counter; /* Increment the counter to keep a tab on 
number of messages */
     if (tcp_cb->mdtm_tcp_unsent_counter <= DTM_INTRANODE_UNSENT_MSG) {
         if (NULL == hdr && NULL == tail) {
             tcp_cb->mds_mdtm_msg_unsent_hdr = tmp;
            tcp_cb->mds_mdtm_msg_unsent_tail = tmp;
         } else {
             tail->next = tmp;
             tcp_cb->mds_mdtm_msg_unsent_tail = tmp;

             /* Change the poll from POLLIN to POLLOUT */
             pfd[0].events = pfd[0].events | POLLOUT;
         }
     } else {
         syslog(LOG_ERR, " MDTM unsent message is more!=%d", 
DTM_INTRANODE_UNSENT_MSG);
         assert(0);
         return NCSCC_RC_FAILURE;
     }
======================================================================================

$ grep DTM_INTRANODE_UNSENT_MSG include/*
include/mds_dt_tcp_disc.h:#define DTM_INTRANODE_UNSENT_MSG 200

mds_mdtm_unsent_queue_add_send() is the only place 
mds_mdtm_queue_add_unsent_msg() is called.

mds_mdtm_unsent_queue_add_send() can return an error code, none of its callers 
check the return code! I guess it should return void then and abort internally.



---

Sent from sourceforge.net because [email protected] is 
subscribed to https://sourceforge.net/p/opensaf/tickets/

To unsubscribe from further messages, a project admin can change settings at 
https://sourceforge.net/p/opensaf/admin/tickets/options.  Or, if this is a 
mailing list, you can unsubscribe from the mailing list.
------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-tickets mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-tickets

Reply via email to