I don't understand the purpose of the send queue. TCP socket have a send
buffer. It's default size on my system is:
$ cat /proc/sys/net/core/wmem_default
229376
So if a user wants more buffering it should be able to increase this value. The
internal queue in MDS does not make sense. It just extens the already existing
socket send buffer. I think we should get rid of the queue.
The user should have a possibility to tune the socket send buffer size. Right
now it is hardcoded to:
#define MDS_SND_RCV_SIZE 64000
which is lower than the default on modern systems! MDS should not set the
socket buffer length unless asked by the client. Just use the default. The
client could specify an environment variable that the MDS library could pick up
and use.
Keep it simple otherwise the system characteristics will be very hard to
understand and predict...
---
** [tickets:#607] Mds : tcp assert in MDS on cumulated unsent messages**
**Status:** assigned
**Created:** Wed Oct 30, 2013 08:03 AM UTC by A V Mahesh (AVM)
**Last Updated:** Wed Oct 30, 2013 08:07 AM 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.------------------------------------------------------------------------------
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-tickets mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-tickets