Hello all,
I have a trouble that is related to the way of usage of dispatcher module.
I am working with Kamailio 5.3.2 and using dispatcher module as load balancer to route calls to the media gateways.
My dispatching routes are below as simply,
route[DISPATCH] { if(ds_select_domain("2", "4")) { route(MYRELAY); } else { send_reply("503","Service Unavailable - No MGW"); exit; } } route[MYRELAY] { t_on_failure("MYFAILURE"); if(!t_relay()) { sl_reply_error(); } exit; } failure_route[MYFAILURE] { route(NATMANAGE); revert_uri(); if (t_is_canceled()) { exit; } if ($T_reply_code == 408 || $T_reply_code == 503) { if(ds_next_domain()) { route(MYRELAY); } else { send_reply("503","Service Unavailable"); exit; } } else { if(ds_select_domain("6", "4")) { route(MYVMRELAY); } else { send_reply(486,"Busy"); exit; } } } route[MYVMRELAY] { t_on_failure("MYVMFAILURE"); if(!t_relay()) { sl_reply_error(); } exit; } failure_route[MYVMFAILURE] { route(NATMANAGE); revert_uri(); if (t_is_canceled()) { exit; } if(ds_next_domain()) { route(MYVMRELAY); } else { send_reply("503","Service Unavailable"); exit; } }
I have multiple media gateways(setid=2) and voicemail servers(setid=6). As can be seen from the configuration, after first routing, for transaction reply code except 408 or 503, I am routing call to the voicemail server using dispatcher. In that phase, dispatcher module is remembering previously loaded destinations that come from first ds_select_domain and module try to route these destinations in the case that all voicemail servers are unavailable. So basically, I want to unload all destinations comes from previous ds_select_domain.
From the documentation, i tried ds_load_update and ds_load_unset methods but not worked for me.
Is there any way to overcome that problem or any right usages of these methods.
Thank you,
Serdar
Serdar,
Have you tried to clean variables before calling new ds_select_domain(), that are using by dispatcher module failover?
Like https://kamailio.org/docs/modules/5.3.x/modules/dispatcher.html#dispatcher.p... and so on?
But as I got, you're saying, that calling ds_select_domain() with different setid's in a case of fail, not really fails, but using "old" available destinations from previous attempt?
Regards, Igor
On 29.07.2021 11:19, Serdar GÜÇLÜER wrote:
Hello all,
I have a trouble that is related to the way of usage of dispatcher module.
I am working with Kamailio 5.3.2 and using dispatcher module as load balancer to route calls to the media gateways.
My dispatching routes are below as simply,
route[DISPATCH] { if(ds_select_domain("2", "4")) { route(MYRELAY); } else { send_reply("503","Service Unavailable - No MGW"); exit; } } route[MYRELAY] { t_on_failure("MYFAILURE"); if(!t_relay()) { sl_reply_error(); } exit; } failure_route[MYFAILURE] { route(NATMANAGE); revert_uri(); if (t_is_canceled()) { exit; } if ($T_reply_code == 408 || $T_reply_code == 503) { if(ds_next_domain()) { route(MYRELAY); } else { send_reply("503","Service Unavailable"); exit; } } else { if(ds_select_domain("6", "4")) { route(MYVMRELAY); } else { send_reply(486,"Busy"); exit; } } } route[MYVMRELAY] { t_on_failure("MYVMFAILURE"); if(!t_relay()) { sl_reply_error(); } exit; } failure_route[MYVMFAILURE] { route(NATMANAGE); revert_uri(); if (t_is_canceled()) { exit; } if(ds_next_domain()) { route(MYVMRELAY); } else { send_reply("503","Service Unavailable"); exit; } }
I have multiple media gateways(setid=2) and voicemail servers(setid=6). As can be seen from the configuration, after first routing, for transaction reply code except 408 or 503, I am routing call to the voicemail server using dispatcher. In that phase, dispatcher module is remembering previously loaded destinations that come from first ds_select_domain and module try to route these destinations in the case that all voicemail servers are unavailable. So basically, I want to unload all destinations comes from previous ds_select_domain.
From the documentation, i tried ds_load_update and ds_load_unset methods but not worked for me.
Is there any way to overcome that problem or any right usages of these methods.
Thank you,
Serdar
Kamailio - Users Mailing List - Non Commercial Discussions
- sr-users@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
Just noticed, Daniel already answered ) Got his answer as a new thread somehow )
Regards, Igor
On 03.08.2021 22:16, Igor Olhovskiy wrote:
Serdar,
Have you tried to clean variables before calling new ds_select_domain(), that are using by dispatcher module failover?
Like https://kamailio.org/docs/modules/5.3.x/modules/dispatcher.html#dispatcher.p... and so on?
But as I got, you're saying, that calling ds_select_domain() with different setid's in a case of fail, not really fails, but using "old" available destinations from previous attempt?
Regards, Igor On 29.07.2021 11:19, Serdar GÜÇLÜER wrote:
Hello all,
I have a trouble that is related to the way of usage of dispatcher module.
I am working with Kamailio 5.3.2 and using dispatcher module as load balancer to route calls to the media gateways.
My dispatching routes are below as simply,
route[DISPATCH] { if(ds_select_domain("2", "4")) { route(MYRELAY); } else { send_reply("503","Service Unavailable - No MGW"); exit; } } route[MYRELAY] { t_on_failure("MYFAILURE"); if(!t_relay()) { sl_reply_error(); } exit; } failure_route[MYFAILURE] { route(NATMANAGE); revert_uri(); if (t_is_canceled()) { exit; } if ($T_reply_code == 408 || $T_reply_code == 503) { if(ds_next_domain()) { route(MYRELAY); } else { send_reply("503","Service Unavailable"); exit; } } else { if(ds_select_domain("6", "4")) { route(MYVMRELAY); } else { send_reply(486,"Busy"); exit; } } } route[MYVMRELAY] { t_on_failure("MYVMFAILURE"); if(!t_relay()) { sl_reply_error(); } exit; } failure_route[MYVMFAILURE] { route(NATMANAGE); revert_uri(); if (t_is_canceled()) { exit; } if(ds_next_domain()) { route(MYVMRELAY); } else { send_reply("503","Service Unavailable"); exit; } }
I have multiple media gateways(setid=2) and voicemail servers(setid=6). As can be seen from the configuration, after first routing, for transaction reply code except 408 or 503, I am routing call to the voicemail server using dispatcher. In that phase, dispatcher module is remembering previously loaded destinations that come from first ds_select_domain and module try to route these destinations in the case that all voicemail servers are unavailable. So basically, I want to unload all destinations comes from previous ds_select_domain.
From the documentation, i tried ds_load_update and ds_load_unset methods but not worked for me.
Is there any way to overcome that problem or any right usages of these methods.
Thank you,
Serdar
Kamailio - Users Mailing List - Non Commercial Discussions *sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: *https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users