---

** [tickets:#3259] mds: Add a timeout  while sending a  MDS_SENDTYPE_SND 
message**

**Status:** assigned
**Milestone:** 5.21.06
**Created:** Tue Apr 27, 2021 07:02 AM UTC by Hieu Hong Hoang
**Last Updated:** Tue Apr 27, 2021 07:02 AM UTC
**Owner:** Hieu Hong Hoang
**Attachments:**

- [mds.log](https://sourceforge.net/p/opensaf/tickets/3259/attachment/mds.log) 
(16.3 MB; application/octet-stream)


 When mds send a MDS_SENDTYPE_SND message, it will block the caller until it 
found the route to destination service or the subscription timer expired. In 
worst case, it could block up to 5 seconds which equal to the subscription time 
(MDS_SUBSCRIPTION_TMR_VAL = 500). 

Blocking for a long time usually happen when the destination service is already 
down. In that situation, even if the caller received the service down event, it 
couldn't do anything.

We should add timeout to sending a MDS_SENDTYPE_SND message. If exceed the 
timeout, mds will return to the caller and leave the decision to the caller.

Following is the scenario when the mds send to a down destation service:

* SC-7 rded subscribes to the rde service:
~~~
<143>1 2021-04-26T11:50:39.12063+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="103"] >> mds_subtn_tbl_add
...
<143>1 2021-04-26T11:50:39.120687+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="107"] 
MCM_DB:mds_subtn_tbl_add:TimerStart:SubTmr:Hdl=0xffc00001:SvcHdl=562945658454049:sbscr-svcid=RDE(33)
...
<143>1 2021-04-26T11:50:39.120697+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="108"] MDS:DB: sub_adest_details : <nodeid[0x2070f]:osafrded[151]>
...
<143>1 2021-04-26T11:50:39.120705+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="109"] << mds_subtn_tbl_add
~~~
* SC-7 mds receives the rde service up event from SC-6:
~~~
<142>1 2021-04-26T11:50:39.154507+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="588"] MCM:API: svc_up : svc_id = RDE(33) on DEST id = 65535 got UP 
for svc_id = RDE(33) on Adest = <rem_node[0x2060f]:dest_pid[151]>, 
rem_svc_pvt_ver=1, rem_svc_archword=10
~~~
* SC-7 mds receives the rde service down event from SC-6:
~~~
<142>1 2021-04-26T11:50:39.15602+02:00 SC-7 osafclmna 141 mds.log [meta 
sequenceId="510"] MCM:API: Adest <0x0002060f, 151> down timer start
...
<142>1 2021-04-26T11:50:39.156074+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="725"] MCM:API: svc_down : svc_id = RDE(33) on DEST id = 65535 got 
DOWN for svc_id = RDE(33) on Adest = ,  rem_svc_pvt_ver=1
~~~
* Right after that, it receives a sending request and block the caller 
(currently timeout is zero which means no timeout):
~~~
<143>1 2021-04-26T11:50:39.156513+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="753"] >> mcm_pvt_normal_svc_snd
...
<142>1 2021-04-26T11:50:39.15657+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="767"] MDS_SND_RCV:Blocking send from svc_id = RDE(33), to svc_id = 
RDE(33)
<142>1 2021-04-26T11:50:39.156591+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="768"] MDS_SND_RCV: Waiting for timeout
~~~
* After 5 seconds, the subscription timer expire and unblock sending:
~~~
<142>1 2021-04-26T11:50:44.193679+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="982"] MCM:API: subscription_tmr expired for svc_id = RDE(33) 
Subscribed to svc_id = RDE(33)
~~~
* mds failed to send the message:
~~~
<139>1 2021-04-26T11:50:44.193866+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="1008"] MDS_SND_RCV:No Route Found from svc_id = RDE(33), to svc_id 
= RDE(33) on Adest = <nodeid[0x2070f]:osafrded[151]>
<143>1 2021-04-26T11:50:44.193873+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="1009"] MDS_SND_RCV :L  mds_mcm_process_disc_queue_checks
<139>1 2021-04-26T11:50:44.193876+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="1010"] MDS_SND_RCV:No Route Found from svc_id = RDE(33), to svc_id 
= RDE(33) on Adest = <0x0002060f, 151> 
<139>1 2021-04-26T11:50:44.193881+02:00 SC-7 osafrded 151 mds.log [meta 
sequenceId="1011"] MDS_SND_RCV: Normal send Message sent Failed from svc_id = 
RDE(33), to svc_id = RDE(33)
~~~



---

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.
_______________________________________________
Opensaf-tickets mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-tickets

Reply via email to